From c422dd8481ac6514c6bb1b14dc5c1831e45e48c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Egelund-M=C3=BCller?= Date: Wed, 19 Jun 2024 12:55:51 +0200 Subject: [PATCH] Magic tokens for sharing filtered dashboards to non-users (#5071) * Magic tokens for sharing filtered dashboards to non-users * Change preset_filter to filter * Review comments * Add token attributes * Fix test * Add dedicated permissions for bookmarks to show magic tokens can't use them * Progress commit * Logic for intersecting include/excludes * Fix lint * Self review * CLI commands * Self review 2 * Review 3 * Move share-url cmd to root * Fix downloads * Fix merge * Fix test --- admin/auth_token.go | 89 + admin/database/database.go | 77 +- admin/database/postgres/migrations/0029.sql | 28 + admin/database/postgres/postgres.go | 140 +- admin/permissions.go | 181 +- admin/pkg/authtoken/authtoken.go | 3 +- admin/server/auth/claims.go | 38 +- admin/server/bookmarks.go | 15 +- admin/server/magic_tokens.go | 234 + admin/server/projects.go | 30 + admin/server/server.go | 4 + admin/used_flusher.go | 18 + admin/worker/delete_expired_token.go | 4 + cli/cmd/project/project.go | 12 +- cli/cmd/root.go | 2 + cli/cmd/shareurl/create.go | 76 + cli/cmd/shareurl/delete.go | 31 + cli/cmd/shareurl/list.go | 65 + cli/cmd/shareurl/shareurl.go | 21 + cli/pkg/printer/resources.go | 63 +- docs/docs/manage/roles-permissions.md | 36 +- proto/gen/rill/admin/v1/admin.swagger.yaml | 208 + proto/gen/rill/admin/v1/ai.pb.go | 10 +- proto/gen/rill/admin/v1/api.pb.go | 9472 +++++++++-------- proto/gen/rill/admin/v1/api.pb.gw.go | 375 + proto/gen/rill/admin/v1/api.pb.validate.go | 1015 ++ proto/gen/rill/admin/v1/api_grpc.pb.go | 120 + proto/gen/rill/admin/v1/internal.pb.go | 8 +- proto/gen/rill/admin/v1/telemetry.pb.go | 8 +- proto/gen/rill/local/v1/api.pb.go | 30 +- proto/gen/rill/runtime/v1/api.pb.go | 140 +- proto/gen/rill/runtime/v1/colors.pb.go | 6 +- proto/gen/rill/runtime/v1/connectors.pb.go | 54 +- proto/gen/rill/runtime/v1/export_format.pb.go | 4 +- proto/gen/rill/runtime/v1/expression.pb.go | 12 +- proto/gen/rill/runtime/v1/queries.pb.go | 188 +- proto/gen/rill/runtime/v1/resources.pb.go | 2045 ++-- .../rill/runtime/v1/resources.pb.validate.go | 29 + .../gen/rill/runtime/v1/runtime.swagger.yaml | 7 +- proto/gen/rill/runtime/v1/schema.pb.go | 12 +- proto/gen/rill/runtime/v1/time_grain.pb.go | 4 +- proto/rill/admin/v1/api.proto | 77 + proto/rill/runtime/v1/resources.proto | 6 +- runtime/compilers/rillv1/template.go | 15 +- runtime/drivers/olap.go | 4 + runtime/metricsview/ast.go | 37 +- runtime/metricsview/astexpr.go | 11 +- runtime/metricsview/query_expression.go | 194 + runtime/metricsview/query_expression_pb.go | 72 + .../metricsview/query_expression_sql.go.txt | 152 + runtime/metricsview/query_expression_test.go | 105 + runtime/pkg/duckdbsql/expression.go | 6 + runtime/pkg/metricssql/parser.go | 5 +- runtime/queries/metricsview.go | 87 +- runtime/queries/metricsview_aggregation.go | 9 +- .../queries/metricsview_comparison_toplist.go | 5 +- runtime/queries/metricsview_schema.go | 14 +- runtime/queries/metricsview_search.go | 34 +- runtime/queries/metricsview_timeseries.go | 4 +- runtime/resolver.go | 1 + runtime/resolvers/metrics.go | 2 +- runtime/runtime.go | 4 +- runtime/security.go | 244 +- runtime/security_test.go | 12 +- runtime/server/auth/claims.go | 43 + runtime/server/auth/jwt.go | 18 +- runtime/server/auth/permissions.go | 2 +- runtime/server/controller.go | 13 +- runtime/server/downloads.go | 42 +- runtime/server/queries_metrics.go | 25 +- .../server/queries_metrics_timeseries_test.go | 3 +- .../client/gen/admin-service/admin-service.ts | 187 + web-admin/src/client/gen/index.schemas.ts | 88 + .../src/proto/gen/rill/admin/v1/api_pb.ts | 411 + .../proto/gen/rill/runtime/v1/resources_pb.ts | 12 +- .../src/proto/gen/rill/ui/v1/dashboard_pb.ts | 4 +- .../src/runtime-client/gen/index.schemas.ts | 1 + 77 files changed, 10904 insertions(+), 5959 deletions(-) create mode 100644 admin/database/postgres/migrations/0029.sql create mode 100644 admin/server/magic_tokens.go create mode 100644 cli/cmd/shareurl/create.go create mode 100644 cli/cmd/shareurl/delete.go create mode 100644 cli/cmd/shareurl/list.go create mode 100644 cli/cmd/shareurl/shareurl.go create mode 100644 runtime/metricsview/query_expression.go create mode 100644 runtime/metricsview/query_expression_pb.go create mode 100644 runtime/metricsview/query_expression_sql.go.txt create mode 100644 runtime/metricsview/query_expression_test.go diff --git a/admin/auth_token.go b/admin/auth_token.go index 7f98420777c..e28ada0afad 100644 --- a/admin/auth_token.go +++ b/admin/auth_token.go @@ -13,6 +13,7 @@ import ( // AuthToken is the interface package admin uses to provide a consolidated view of a token string and its DB model. type AuthToken interface { Token() *authtoken.Token + TokenModel() any OwnerID() string } @@ -26,6 +27,10 @@ func (t *userAuthToken) Token() *authtoken.Token { return t.token } +func (t *userAuthToken) TokenModel() any { + return t.model +} + func (t *userAuthToken) OwnerID() string { if t.model.RepresentingUserID != nil { return *t.model.RepresentingUserID @@ -70,6 +75,10 @@ func (t *serviceAuthToken) Token() *authtoken.Token { return t.token } +func (t *serviceAuthToken) TokenModel() any { + return t.model +} + func (t *serviceAuthToken) OwnerID() string { return t.model.ServiceID } @@ -107,6 +116,10 @@ func (t *deploymentAuthToken) Token() *authtoken.Token { return t.token } +func (t *deploymentAuthToken) TokenModel() any { + return t.model +} + func (t *deploymentAuthToken) OwnerID() string { return t.model.DeploymentID } @@ -134,6 +147,63 @@ func (s *Service) IssueDeploymentAuthToken(ctx context.Context, deploymentID str return &deploymentAuthToken{model: dat, token: tkn}, nil } +// magicAuthToken implements AuthToken for magic tokens belonging to a project. +type magicAuthToken struct { + model *database.MagicAuthToken + token *authtoken.Token +} + +func (t *magicAuthToken) Token() *authtoken.Token { + return t.token +} + +func (t *magicAuthToken) TokenModel() any { + return t.model +} + +func (t *magicAuthToken) OwnerID() string { + return t.model.ID +} + +// IssueMagicAuthTokenOptions provides options for IssueMagicAuthToken. +type IssueMagicAuthTokenOptions struct { + ProjectID string + TTL *time.Duration + CreatedByUserID *string + Attributes map[string]any + MetricsView string + MetricsViewFilterJSON string + MetricsViewFields []string +} + +// IssueMagicAuthToken generates and persists a new magic auth token for a project. +func (s *Service) IssueMagicAuthToken(ctx context.Context, opts *IssueMagicAuthTokenOptions) (AuthToken, error) { + tkn := authtoken.NewRandom(authtoken.TypeMagic) + + var expiresOn *time.Time + if opts.TTL != nil { + t := time.Now().Add(*opts.TTL) + expiresOn = &t + } + + dat, err := s.DB.InsertMagicAuthToken(ctx, &database.InsertMagicAuthTokenOptions{ + ID: tkn.ID.String(), + SecretHash: tkn.SecretHash(), + ProjectID: opts.ProjectID, + ExpiresOn: expiresOn, + CreatedByUserID: opts.CreatedByUserID, + Attributes: opts.Attributes, + MetricsView: opts.MetricsView, + MetricsViewFilterJSON: opts.MetricsViewFilterJSON, + MetricsViewFields: opts.MetricsViewFields, + }) + if err != nil { + return nil, err + } + + return &magicAuthToken{model: dat, token: tkn}, nil +} + // ValidateAuthToken validates an auth token against persistent storage. func (s *Service) ValidateAuthToken(ctx context.Context, token string) (AuthToken, error) { parsed, err := authtoken.FromString(token) @@ -196,6 +266,23 @@ func (s *Service) ValidateAuthToken(ctx context.Context, token string) (AuthToke s.Used.Deployment(dat.DeploymentID) return &deploymentAuthToken{model: dat, token: parsed}, nil + case authtoken.TypeMagic: + mat, err := s.DB.FindMagicAuthToken(ctx, parsed.ID.String()) + if err != nil { + return nil, err + } + + if mat.ExpiresOn != nil && mat.ExpiresOn.Before(time.Now()) { + return nil, fmt.Errorf("auth token is expired") + } + + if !bytes.Equal(mat.SecretHash, parsed.SecretHash()) { + return nil, fmt.Errorf("invalid auth token") + } + + s.Used.MagicAuthToken(mat.ID) + + return &magicAuthToken{model: mat, token: parsed}, nil default: return nil, fmt.Errorf("unknown auth token type %q", parsed.Type) } @@ -214,6 +301,8 @@ func (s *Service) RevokeAuthToken(ctx context.Context, token string) error { return s.DB.DeleteServiceAuthToken(ctx, parsed.ID.String()) case authtoken.TypeDeployment: return fmt.Errorf("deployment auth tokens cannot be revoked") + case authtoken.TypeMagic: + return s.DB.DeleteMagicAuthToken(ctx, parsed.ID.String()) default: return fmt.Errorf("unknown auth token type %q", parsed.Type) } diff --git a/admin/database/database.go b/admin/database/database.go index 780279330b4..e8908e0197c 100644 --- a/admin/database/database.go +++ b/admin/database/database.go @@ -146,6 +146,13 @@ type DB interface { UpdateDeploymentAuthTokenUsedOn(ctx context.Context, ids []string) error DeleteExpiredDeploymentAuthTokens(ctx context.Context, retention time.Duration) error + FindMagicAuthTokensWithUser(ctx context.Context, projectID string, createdByUserID *string, afterID string, limit int) ([]*MagicAuthTokenWithUser, error) + FindMagicAuthToken(ctx context.Context, id string) (*MagicAuthToken, error) + InsertMagicAuthToken(ctx context.Context, opts *InsertMagicAuthTokenOptions) (*MagicAuthToken, error) + UpdateMagicAuthTokenUsedOn(ctx context.Context, ids []string) error + DeleteMagicAuthToken(ctx context.Context, id string) error + DeleteExpiredMagicAuthTokens(ctx context.Context, retention time.Duration) error + FindDeviceAuthCodeByDeviceCode(ctx context.Context, deviceCode string) (*DeviceAuthCode, error) FindPendingDeviceAuthCodeByUserCode(ctx context.Context, userCode string) (*DeviceAuthCode, error) InsertDeviceAuthCode(ctx context.Context, deviceCode, userCode, clientID string, expiresOn time.Time) (*DeviceAuthCode, error) @@ -507,6 +514,40 @@ type InsertDeploymentAuthTokenOptions struct { ExpiresOn *time.Time } +// MagicAuthToken is a persistent API token for accessing a specific (filtered) resource in a project. +type MagicAuthToken struct { + ID string + SecretHash []byte `db:"secret_hash"` + ProjectID string `db:"project_id"` + CreatedOn time.Time `db:"created_on"` + ExpiresOn *time.Time `db:"expires_on"` + UsedOn time.Time `db:"used_on"` + CreatedByUserID *string `db:"created_by_user_id"` + Attributes map[string]any `db:"attributes"` + MetricsView string `db:"metrics_view"` + MetricsViewFilterJSON string `db:"metrics_view_filter_json"` + MetricsViewFields []string `db:"metrics_view_fields"` +} + +// MagicAuthTokenWithUser is a MagicAuthToken with additional information about the user who created it. +type MagicAuthTokenWithUser struct { + *MagicAuthToken + CreatedByUserEmail string `db:"created_by_user_email"` +} + +// InsertMagicAuthTokenOptions defines options for creating a MagicAuthToken. +type InsertMagicAuthTokenOptions struct { + ID string + SecretHash []byte + ProjectID string `validate:"required"` + ExpiresOn *time.Time + CreatedByUserID *string + Attributes map[string]any + MetricsView string `validate:"required"` + MetricsViewFilterJSON string + MetricsViewFields []string +} + // AuthClient is a client that requests and consumes auth tokens. type AuthClient struct { ID string @@ -585,22 +626,26 @@ type OrganizationRole struct { // ProjectRole represents roles for projects. type ProjectRole struct { - ID string - Name string - ReadProject bool `db:"read_project"` - ManageProject bool `db:"manage_project"` - ReadProd bool `db:"read_prod"` - ReadProdStatus bool `db:"read_prod_status"` - ManageProd bool `db:"manage_prod"` - ReadDev bool `db:"read_dev"` - ReadDevStatus bool `db:"read_dev_status"` - ManageDev bool `db:"manage_dev"` - ReadProjectMembers bool `db:"read_project_members"` - ManageProjectMembers bool `db:"manage_project_members"` - CreateReports bool `db:"create_reports"` - ManageReports bool `db:"manage_reports"` - CreateAlerts bool `db:"create_alerts"` - ManageAlerts bool `db:"manage_alerts"` + ID string + Name string + ReadProject bool `db:"read_project"` + ManageProject bool `db:"manage_project"` + ReadProd bool `db:"read_prod"` + ReadProdStatus bool `db:"read_prod_status"` + ManageProd bool `db:"manage_prod"` + ReadDev bool `db:"read_dev"` + ReadDevStatus bool `db:"read_dev_status"` + ManageDev bool `db:"manage_dev"` + ReadProjectMembers bool `db:"read_project_members"` + ManageProjectMembers bool `db:"manage_project_members"` + CreateMagicAuthTokens bool `db:"create_magic_auth_tokens"` + ManageMagicAuthTokens bool `db:"manage_magic_auth_tokens"` + CreateReports bool `db:"create_reports"` + ManageReports bool `db:"manage_reports"` + CreateAlerts bool `db:"create_alerts"` + ManageAlerts bool `db:"manage_alerts"` + CreateBookmarks bool `db:"create_bookmarks"` + ManageBookmarks bool `db:"manage_bookmarks"` } // Member is a convenience type used for display-friendly representation of an org or project member. diff --git a/admin/database/postgres/migrations/0029.sql b/admin/database/postgres/migrations/0029.sql new file mode 100644 index 00000000000..e70689f6114 --- /dev/null +++ b/admin/database/postgres/migrations/0029.sql @@ -0,0 +1,28 @@ +CREATE TABLE magic_auth_tokens ( + id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, + secret_hash BYTEA NOT NULL, + project_id UUID NOT NULL REFERENCES projects (id) ON DELETE CASCADE, + created_on TIMESTAMPTZ DEFAULT now() NOT NULL, + expires_on TIMESTAMPTZ, + used_on TIMESTAMPTZ DEFAULT now() NOT NULL, + created_by_user_id UUID REFERENCES users (id) ON DELETE SET NULL, + attributes JSONB DEFAULT '{}'::JSONB NOT NULL, + metrics_view TEXT NOT NULL, + metrics_view_filter_json TEXT NOT NULL, + metrics_view_fields TEXT[] NOT NULL +); + +CREATE INDEX magic_auth_tokens_project_id_idx ON magic_auth_tokens (project_id); +CREATE INDEX magic_auth_tokens_created_by_user_id_idx ON magic_auth_tokens (created_by_user_id) WHERE created_by_user_id IS NOT NULL; + +ALTER TABLE project_roles ADD create_magic_auth_tokens BOOLEAN DEFAULT false NOT NULL; +UPDATE project_roles SET create_magic_auth_tokens = manage_project_members; + +ALTER TABLE project_roles ADD manage_magic_auth_tokens BOOLEAN DEFAULT false NOT NULL; +UPDATE project_roles SET manage_magic_auth_tokens = manage_project_members; + +ALTER TABLE project_roles ADD create_bookmarks BOOLEAN DEFAULT false NOT NULL; +UPDATE project_roles SET create_bookmarks = read_project; + +ALTER TABLE project_roles ADD manage_bookmarks BOOLEAN DEFAULT false NOT NULL; +UPDATE project_roles SET manage_bookmarks = manage_project; diff --git a/admin/database/postgres/postgres.go b/admin/database/postgres/postgres.go index 3bba28010f3..570d45c9b54 100644 --- a/admin/database/postgres/postgres.go +++ b/admin/database/postgres/postgres.go @@ -333,7 +333,7 @@ func (c *connection) FindProject(ctx context.Context, id string) (*database.Proj if err != nil { return nil, parseErr("project", err) } - return res.AsProject() + return res.AsModel() } func (c *connection) FindProjectByName(ctx context.Context, orgName, name string) (*database.Project, error) { @@ -342,7 +342,7 @@ func (c *connection) FindProjectByName(ctx context.Context, orgName, name string if err != nil { return nil, parseErr("project", err) } - return res.AsProject() + return res.AsModel() } func (c *connection) InsertProject(ctx context.Context, opts *database.InsertProjectOptions) (*database.Project, error) { @@ -359,7 +359,7 @@ func (c *connection) InsertProject(ctx context.Context, opts *database.InsertPro if err != nil { return nil, parseErr("project", err) } - return res.AsProject() + return res.AsModel() } func (c *connection) DeleteProject(ctx context.Context, id string) error { @@ -384,7 +384,7 @@ func (c *connection) UpdateProject(ctx context.Context, id string, opts *databas if err != nil { return nil, parseErr("project", err) } - return res.AsProject() + return res.AsModel() } func (c *connection) CountProjectsForOrganization(ctx context.Context, orgID string) (int, error) { @@ -962,6 +962,94 @@ func (c *connection) DeleteExpiredDeploymentAuthTokens(ctx context.Context, rete return parseErr("deployment auth token", err) } +func (c *connection) FindMagicAuthTokensWithUser(ctx context.Context, projectID string, createdByUserID *string, afterID string, limit int) ([]*database.MagicAuthTokenWithUser, error) { + n := 1 + where := fmt.Sprintf("t.project_id=$%d", n) + args := []any{projectID} + n++ + + if createdByUserID != nil { + where = fmt.Sprintf("%s AND t.created_by_user_id=$%d", where, n) + args = append(args, *createdByUserID) + n++ + } + + if afterID != "" { + where = fmt.Sprintf("%s AND t.id>$%d", where, n) + args = append(args, afterID) + n++ + } + + where += " AND (t.expires_on IS NULL OR t.expires_on > now())" + + qry := fmt.Sprintf("SELECT t.*, u.email AS created_by_user_email FROM magic_auth_tokens t LEFT JOIN users u ON t.created_by_user_id=u.id WHERE %s ORDER BY t.id LIMIT $%d", where, n) + args = append(args, limit) + + var dtos []*magicAuthTokenWithUserDTO + err := c.getDB(ctx).SelectContext(ctx, &dtos, qry, args...) + if err != nil { + return nil, parseErr("magic auth tokens", err) + } + + res := make([]*database.MagicAuthTokenWithUser, len(dtos)) + for i, dto := range dtos { + var err error + res[i], err = dto.AsModel() + if err != nil { + return nil, err + } + } + return res, nil +} + +func (c *connection) FindMagicAuthToken(ctx context.Context, id string) (*database.MagicAuthToken, error) { + res := &magicAuthTokenDTO{} + err := c.getDB(ctx).QueryRowxContext(ctx, "SELECT t.* FROM magic_auth_tokens t WHERE t.id=$1", id).StructScan(res) + if err != nil { + return nil, parseErr("magic auth token", err) + } + return res.AsModel() +} + +func (c *connection) InsertMagicAuthToken(ctx context.Context, opts *database.InsertMagicAuthTokenOptions) (*database.MagicAuthToken, error) { + if err := database.Validate(opts); err != nil { + return nil, err + } + + if opts.MetricsViewFields == nil { + opts.MetricsViewFields = []string{} + } + + res := &magicAuthTokenDTO{} + err := c.getDB(ctx).QueryRowxContext(ctx, ` + INSERT INTO magic_auth_tokens (id, secret_hash, project_id, expires_on, created_by_user_id, attributes, metrics_view, metrics_view_filter_json, metrics_view_fields) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING *`, + opts.ID, opts.SecretHash, opts.ProjectID, opts.ExpiresOn, opts.CreatedByUserID, opts.Attributes, opts.MetricsView, opts.MetricsViewFilterJSON, opts.MetricsViewFields, + ).StructScan(res) + if err != nil { + return nil, parseErr("magic auth token", err) + } + return res.AsModel() +} + +func (c *connection) UpdateMagicAuthTokenUsedOn(ctx context.Context, ids []string) error { + _, err := c.getDB(ctx).ExecContext(ctx, "UPDATE magic_auth_tokens SET used_on=now() WHERE id=ANY($1)", ids) + if err != nil { + return parseErr("magic auth token", err) + } + return nil +} + +func (c *connection) DeleteMagicAuthToken(ctx context.Context, id string) error { + res, err := c.getDB(ctx).ExecContext(ctx, "DELETE FROM magic_auth_tokens WHERE id=$1", id) + return checkDeleteRow("magic auth token", res, err) +} + +func (c *connection) DeleteExpiredMagicAuthTokens(ctx context.Context, retention time.Duration) error { + _, err := c.getDB(ctx).ExecContext(ctx, "DELETE FROM magic_auth_tokens WHERE expires_on IS NOT NULL AND expires_on + $1 < now()", retention) + return parseErr("magic auth token", err) +} + func (c *connection) FindDeviceAuthCodeByDeviceCode(ctx context.Context, deviceCode string) (*database.DeviceAuthCode, error) { authCode := &database.DeviceAuthCode{} err := c.getDB(ctx).QueryRowxContext(ctx, "SELECT * FROM device_auth_codes WHERE device_code = $1", deviceCode).StructScan(authCode) @@ -1477,7 +1565,7 @@ type projectDTO struct { Annotations pgtype.JSON `db:"annotations"` } -func (p *projectDTO) AsProject() (*database.Project, error) { +func (p *projectDTO) AsModel() (*database.Project, error) { err := p.ProdVariables.AssignTo(&p.Project.ProdVariables) if err != nil { return nil, err @@ -1495,7 +1583,7 @@ func projectsFromDTOs(dtos []*projectDTO) ([]*database.Project, error) { res := make([]*database.Project, len(dtos)) for i, dto := range dtos { var err error - res[i], err = dto.AsProject() + res[i], err = dto.AsModel() if err != nil { return nil, err } @@ -1503,6 +1591,46 @@ func projectsFromDTOs(dtos []*projectDTO) ([]*database.Project, error) { return res, nil } +// magicAuthTokenDTO wraps database.MagicAuthToken, using the pgtype package to handly types that pgx can't read directly into their native Go types. +type magicAuthTokenDTO struct { + *database.MagicAuthToken + Attributes pgtype.JSON `db:"attributes"` + MetricsViewFields pgtype.TextArray `db:"metrics_view_fields"` +} + +func (m *magicAuthTokenDTO) AsModel() (*database.MagicAuthToken, error) { + err := m.Attributes.AssignTo(&m.MagicAuthToken.Attributes) + if err != nil { + return nil, err + } + err = m.MetricsViewFields.AssignTo(&m.MagicAuthToken.MetricsViewFields) + if err != nil { + return nil, err + } + + return m.MagicAuthToken, nil +} + +// magicAuthTokenWithUserDTO wraps database.MagicAuthTokenWithUser, using the pgtype package to handly types that pgx can't read directly into their native Go types. +type magicAuthTokenWithUserDTO struct { + *database.MagicAuthTokenWithUser + Attributes pgtype.JSON `db:"attributes"` + MetricsViewFields pgtype.TextArray `db:"metrics_view_fields"` +} + +func (m *magicAuthTokenWithUserDTO) AsModel() (*database.MagicAuthTokenWithUser, error) { + err := m.Attributes.AssignTo(&m.MagicAuthTokenWithUser.Attributes) + if err != nil { + return nil, err + } + err = m.MetricsViewFields.AssignTo(&m.MagicAuthToken.MetricsViewFields) + if err != nil { + return nil, err + } + + return m.MagicAuthTokenWithUser, nil +} + func checkUpdateRow(target string, res sql.Result, err error) error { if err != nil { return parseErr(target, err) diff --git a/admin/permissions.go b/admin/permissions.go index 4bfd7274f4a..f559624cbca 100644 --- a/admin/permissions.go +++ b/admin/permissions.go @@ -52,25 +52,52 @@ func (s *Service) OrganizationPermissionsForDeployment(ctx context.Context, orgI return &adminv1.OrganizationPermissions{}, nil } +// OrganizationPermissionsForMagicAuthToken resolves organization permissions for a magic auth token in the specified project. +// It grants basic read access to only the org of the project the token belongs to. +func (s *Service) OrganizationPermissionsForMagicAuthToken(ctx context.Context, orgID, tokenProjectID string) (*adminv1.OrganizationPermissions, error) { + proj, err := s.DB.FindProject(ctx, tokenProjectID) + if err != nil { + return nil, err + } + + if orgID == proj.OrganizationID { + return &adminv1.OrganizationPermissions{ + ReadOrg: true, + ManageOrg: false, + ReadProjects: false, + CreateProjects: false, + ManageProjects: false, + ReadOrgMembers: false, + ManageOrgMembers: false, + }, nil + } + + return &adminv1.OrganizationPermissions{}, nil +} + // ProjectPermissionsForUser resolves project permissions for a user. func (s *Service) ProjectPermissionsForUser(ctx context.Context, projectID, userID string, orgPerms *adminv1.OrganizationPermissions) (*adminv1.ProjectPermissions, error) { // ManageProjects permission on the org gives full access to all projects in the org (only org admins have this) if orgPerms.ManageProjects { return &adminv1.ProjectPermissions{ - ReadProject: true, - ManageProject: true, - ReadProd: true, - ReadProdStatus: true, - ManageProd: true, - ReadDev: true, - ReadDevStatus: true, - ManageDev: true, - ReadProjectMembers: true, - ManageProjectMembers: true, - CreateReports: true, - ManageReports: true, - CreateAlerts: true, - ManageAlerts: true, + ReadProject: true, + ManageProject: true, + ReadProd: true, + ReadProdStatus: true, + ManageProd: true, + ReadDev: true, + ReadDevStatus: true, + ManageDev: true, + ReadProjectMembers: true, + ManageProjectMembers: true, + CreateMagicAuthTokens: true, + ManageMagicAuthTokens: true, + CreateReports: true, + ManageReports: true, + CreateAlerts: true, + ManageAlerts: true, + CreateBookmarks: true, + ManageBookmarks: true, }, nil } @@ -92,20 +119,24 @@ func (s *Service) ProjectPermissionsForUser(ctx context.Context, projectID, user func (s *Service) ProjectPermissionsForService(ctx context.Context, projectID, serviceID string, orgPerms *adminv1.OrganizationPermissions) (*adminv1.ProjectPermissions, error) { if orgPerms.ManageProjects { return &adminv1.ProjectPermissions{ - ReadProject: true, - ManageProject: true, - ReadProd: true, - ReadProdStatus: true, - ManageProd: true, - ReadDev: true, - ReadDevStatus: true, - ManageDev: true, - ReadProjectMembers: true, - ManageProjectMembers: true, - CreateReports: true, - ManageReports: true, - CreateAlerts: true, - ManageAlerts: true, + ReadProject: true, + ManageProject: true, + ReadProd: true, + ReadProdStatus: true, + ManageProd: true, + ReadDev: true, + ReadDevStatus: true, + ManageDev: true, + ReadProjectMembers: true, + ManageProjectMembers: true, + CreateMagicAuthTokens: true, + ManageMagicAuthTokens: true, + CreateReports: true, + ManageReports: true, + CreateAlerts: true, + ManageAlerts: true, + CreateBookmarks: true, + ManageBookmarks: true, }, nil } @@ -123,26 +154,60 @@ func (s *Service) ProjectPermissionsForDeployment(ctx context.Context, projectID // Deployments get full read and no write permissions on the project they belong to if projectID == depl.ProjectID { return &adminv1.ProjectPermissions{ - ReadProject: true, - ManageProject: false, - ReadProd: true, - ReadProdStatus: true, - ManageProd: false, - ReadDev: true, - ReadDevStatus: true, - ManageDev: false, - ReadProjectMembers: true, - ManageProjectMembers: false, - CreateReports: false, - ManageReports: false, - CreateAlerts: false, - ManageAlerts: false, + ReadProject: true, + ManageProject: false, + ReadProd: true, + ReadProdStatus: true, + ManageProd: false, + ReadDev: true, + ReadDevStatus: true, + ManageDev: false, + ReadProjectMembers: true, + ManageProjectMembers: false, + CreateMagicAuthTokens: false, + ManageMagicAuthTokens: false, + CreateReports: false, + ManageReports: false, + CreateAlerts: false, + ManageAlerts: false, + CreateBookmarks: false, + ManageBookmarks: false, }, nil } return &adminv1.ProjectPermissions{}, nil } +// ProjectPermissionsForMagicAuthToken resolves project permissions for a magic auth token. +func (s *Service) ProjectPermissionsForMagicAuthToken(ctx context.Context, projectID string, tkn *database.MagicAuthToken) (*adminv1.ProjectPermissions, error) { + // No access if the token belongs to another project + if projectID != tkn.ProjectID { + return &adminv1.ProjectPermissions{}, nil + } + + // Grant basic read access to the project and its prod deployment + return &adminv1.ProjectPermissions{ + ReadProject: true, + ManageProject: false, + ReadProd: true, + ReadProdStatus: false, + ManageProd: false, + ReadDev: false, + ReadDevStatus: false, + ManageDev: false, + ReadProjectMembers: false, + ManageProjectMembers: false, + CreateMagicAuthTokens: false, + ManageMagicAuthTokens: false, + CreateReports: false, + ManageReports: false, + CreateAlerts: false, + ManageAlerts: false, + CreateBookmarks: false, + ManageBookmarks: false, + }, nil +} + func unionOrgRoles(a *adminv1.OrganizationPermissions, b *database.OrganizationRole) *adminv1.OrganizationPermissions { return &adminv1.OrganizationPermissions{ ReadOrg: a.ReadOrg || b.ReadOrg, @@ -157,19 +222,23 @@ func unionOrgRoles(a *adminv1.OrganizationPermissions, b *database.OrganizationR func unionProjectRoles(a *adminv1.ProjectPermissions, b *database.ProjectRole) *adminv1.ProjectPermissions { return &adminv1.ProjectPermissions{ - ReadProject: a.ReadProject || b.ReadProject, - ManageProject: a.ManageProject || b.ManageProject, - ReadProd: a.ReadProd || b.ReadProd, - ReadProdStatus: a.ReadProdStatus || b.ReadProdStatus, - ManageProd: a.ManageProd || b.ManageProd, - ReadDev: a.ReadDev || b.ReadDev, - ReadDevStatus: a.ReadDevStatus || b.ReadDevStatus, - ManageDev: a.ManageDev || b.ManageDev, - ReadProjectMembers: a.ReadProjectMembers || b.ReadProjectMembers, - ManageProjectMembers: a.ManageProjectMembers || b.ManageProjectMembers, - CreateReports: a.CreateReports || b.CreateReports, - ManageReports: a.ManageReports || b.ManageReports, - CreateAlerts: a.CreateAlerts || b.CreateAlerts, - ManageAlerts: a.ManageAlerts || b.ManageAlerts, + ReadProject: a.ReadProject || b.ReadProject, + ManageProject: a.ManageProject || b.ManageProject, + ReadProd: a.ReadProd || b.ReadProd, + ReadProdStatus: a.ReadProdStatus || b.ReadProdStatus, + ManageProd: a.ManageProd || b.ManageProd, + ReadDev: a.ReadDev || b.ReadDev, + ReadDevStatus: a.ReadDevStatus || b.ReadDevStatus, + ManageDev: a.ManageDev || b.ManageDev, + ReadProjectMembers: a.ReadProjectMembers || b.ReadProjectMembers, + ManageProjectMembers: a.ManageProjectMembers || b.ManageProjectMembers, + CreateMagicAuthTokens: a.CreateMagicAuthTokens || b.CreateMagicAuthTokens, + ManageMagicAuthTokens: a.ManageMagicAuthTokens || b.ManageMagicAuthTokens, + CreateReports: a.CreateReports || b.CreateReports, + ManageReports: a.ManageReports || b.ManageReports, + CreateAlerts: a.CreateAlerts || b.CreateAlerts, + ManageAlerts: a.ManageAlerts || b.ManageAlerts, + CreateBookmarks: a.CreateBookmarks || b.CreateBookmarks, + ManageBookmarks: a.ManageBookmarks || b.ManageBookmarks, } } diff --git a/admin/pkg/authtoken/authtoken.go b/admin/pkg/authtoken/authtoken.go index d842b989d1b..38b03f84eea 100644 --- a/admin/pkg/authtoken/authtoken.go +++ b/admin/pkg/authtoken/authtoken.go @@ -24,12 +24,13 @@ const ( TypeUser Type = "usr" TypeService Type = "svc" TypeDeployment Type = "dpl" + TypeMagic Type = "mgc" ) // Validate checks that the type is a known enum value. func (t Type) Validate() bool { switch t { - case TypeUser, TypeService, TypeDeployment: + case TypeUser, TypeService, TypeDeployment, TypeMagic: return true default: return false diff --git a/admin/server/auth/claims.go b/admin/server/auth/claims.go index bc73be0630a..3fd97c9fb24 100644 --- a/admin/server/auth/claims.go +++ b/admin/server/auth/claims.go @@ -7,6 +7,7 @@ import ( "sync" "github.com/rilldata/rill/admin" + "github.com/rilldata/rill/admin/database" "github.com/rilldata/rill/admin/pkg/authtoken" adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" "go.uber.org/zap" @@ -16,10 +17,11 @@ import ( type OwnerType string const ( - OwnerTypeAnon OwnerType = "anon" - OwnerTypeUser OwnerType = "user" - OwnerTypeService OwnerType = "service" - OwnerTypeDeployment OwnerType = "deployment" + OwnerTypeAnon OwnerType = "anon" + OwnerTypeUser OwnerType = "user" + OwnerTypeService OwnerType = "service" + OwnerTypeDeployment OwnerType = "deployment" + OwnerTypeMagicAuthToken OwnerType = "magic_auth_token" // nolint:gosec // It's not a credential ) // Claims resolves permissions for a requester. @@ -27,6 +29,7 @@ type Claims interface { OwnerType() OwnerType OwnerID() string AuthTokenID() string + AuthTokenModel() any Superuser(ctx context.Context) bool OrganizationPermissions(ctx context.Context, orgID string) *adminv1.OrganizationPermissions ProjectPermissions(ctx context.Context, orgID, projectID string) *adminv1.ProjectPermissions @@ -64,6 +67,10 @@ func (c anonClaims) AuthTokenID() string { return "" } +func (c anonClaims) AuthTokenModel() any { + return nil +} + func (c anonClaims) Superuser(ctx context.Context) bool { return false } @@ -108,6 +115,8 @@ func (c *authTokenClaims) OwnerType() OwnerType { return OwnerTypeService case authtoken.TypeDeployment: return OwnerTypeDeployment + case authtoken.TypeMagic: + return OwnerTypeMagicAuthToken default: panic(fmt.Errorf("unexpected token type %q", t)) } @@ -121,6 +130,10 @@ func (c *authTokenClaims) AuthTokenID() string { return c.token.Token().ID.String() } +func (c *authTokenClaims) AuthTokenModel() any { + return c.token.TokenModel() +} + func (c *authTokenClaims) Superuser(ctx context.Context) bool { switch c.token.Token().Type { case authtoken.TypeUser: @@ -131,6 +144,9 @@ func (c *authTokenClaims) Superuser(ctx context.Context) bool { case authtoken.TypeDeployment: // deployments can't be superusers return false + case authtoken.TypeMagic: + // magic tokens can't be superusers + return false default: panic(fmt.Errorf("unexpected token type %q", c.token.Token().Type)) } @@ -185,6 +201,13 @@ func (c *authTokenClaims) ProjectPermissions(ctx context.Context, orgID, project perm, err = c.admin.ProjectPermissionsForService(ctx, projectID, c.token.OwnerID(), orgPerms) case authtoken.TypeDeployment: perm, err = c.admin.ProjectPermissionsForDeployment(ctx, projectID, c.token.OwnerID(), orgPerms) + case authtoken.TypeMagic: + mdl, ok := c.token.TokenModel().(*database.MagicAuthToken) + if ok { + perm, err = c.admin.ProjectPermissionsForMagicAuthToken(ctx, projectID, mdl) + } else { + err = fmt.Errorf("unexpected token model type %T", c.token.TokenModel()) + } default: err = fmt.Errorf("unexpected token type %q", c.token.Token().Type) } @@ -215,6 +238,13 @@ func (c *authTokenClaims) organizationPermissionsUnsafe(ctx context.Context, org perm, err = c.admin.OrganizationPermissionsForService(ctx, orgID, c.token.OwnerID()) case authtoken.TypeDeployment: perm, err = c.admin.OrganizationPermissionsForDeployment(ctx, orgID, c.token.OwnerID()) + case authtoken.TypeMagic: + mdl, ok := c.token.TokenModel().(*database.MagicAuthToken) + if ok { + perm, err = c.admin.OrganizationPermissionsForMagicAuthToken(ctx, orgID, mdl.ProjectID) + } else { + err = fmt.Errorf("unexpected token model type %T", c.token.TokenModel()) + } default: err = fmt.Errorf("unexpected token type %q", c.token.Token().Type) } diff --git a/admin/server/bookmarks.go b/admin/server/bookmarks.go index 304824add9c..7b1ad61c984 100644 --- a/admin/server/bookmarks.go +++ b/admin/server/bookmarks.go @@ -92,17 +92,16 @@ func (s *Server) CreateBookmark(ctx context.Context, req *adminv1.CreateBookmark permissions := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) if proj.Public { - permissions.ReadProject = true - permissions.ReadProd = true + permissions.CreateBookmarks = claims.OwnerType() == auth.OwnerTypeUser // Logged in users can create bookmarks on public projects } - if !permissions.ReadProject && !claims.Superuser(ctx) { - return nil, status.Error(codes.PermissionDenied, "does not have permission to read the project") + if !permissions.CreateBookmarks && !claims.Superuser(ctx) { + return nil, status.Error(codes.PermissionDenied, "does not have permission to create bookmarks") } - if !permissions.ManageProject && (req.Default || req.Shared) { + if !permissions.ManageBookmarks && (req.Default || req.Shared) { // only admins can create shared/default bookmarks - return nil, status.Error(codes.PermissionDenied, "does not have permission to create the bookmark") + return nil, status.Error(codes.PermissionDenied, "does not have permission to create shared bookmarks") } if req.Default { @@ -161,7 +160,7 @@ func (s *Server) UpdateBookmark(ctx context.Context, req *adminv1.UpdateBookmark permissions := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) - if !permissions.ManageProject && (bookmark.Shared || bookmark.Default) { + if !permissions.ManageBookmarks && (bookmark.Shared || bookmark.Default) { // only admins can update shared/default bookmarks return nil, status.Error(codes.PermissionDenied, "does not have permission to update the bookmark") } @@ -208,7 +207,7 @@ func (s *Server) RemoveBookmark(ctx context.Context, req *adminv1.RemoveBookmark permissions := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) - if !permissions.ManageProject && (bookmark.Shared || bookmark.Default) { + if !permissions.ManageBookmarks && (bookmark.Shared || bookmark.Default) { // only admins can delete shared/default bookmarks return nil, status.Error(codes.PermissionDenied, "does not have permission to update the bookmark") } diff --git a/admin/server/magic_tokens.go b/admin/server/magic_tokens.go new file mode 100644 index 00000000000..bd2d35b5600 --- /dev/null +++ b/admin/server/magic_tokens.go @@ -0,0 +1,234 @@ +package server + +import ( + "context" + "errors" + "fmt" + "time" + + "github.com/rilldata/rill/admin" + "github.com/rilldata/rill/admin/database" + "github.com/rilldata/rill/admin/server/auth" + adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime/pkg/observability" + "go.opentelemetry.io/otel/attribute" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/structpb" + "google.golang.org/protobuf/types/known/timestamppb" +) + +const magicAuthTokenMetricsViewFilterMaxSize = 1024 + +func (s *Server) IssueMagicAuthToken(ctx context.Context, req *adminv1.IssueMagicAuthTokenRequest) (*adminv1.IssueMagicAuthTokenResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Organization), + attribute.String("args.project", req.Project), + attribute.String("args.metrics_view", req.MetricsView), + ) + + proj, err := s.admin.DB.FindProjectByName(ctx, req.Organization, req.Project) + if err != nil { + if errors.Is(err, database.ErrNotFound) { + return nil, status.Error(codes.NotFound, fmt.Sprintf("project %q not found", req.Project)) + } + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + claims := auth.GetClaims(ctx) + projPerms := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) + if !projPerms.CreateMagicAuthTokens { + return nil, status.Error(codes.PermissionDenied, "not allowed to create a magic auth token") + } + + opts := &admin.IssueMagicAuthTokenOptions{ + ProjectID: proj.ID, + MetricsView: req.MetricsView, + MetricsViewFields: req.MetricsViewFields, + } + + if req.TtlMinutes != 0 { + ttl := time.Duration(req.TtlMinutes) * time.Minute + opts.TTL = &ttl + } + + if claims.OwnerType() == auth.OwnerTypeUser { + id := claims.OwnerID() + opts.CreatedByUserID = &id + + // Generate JWT attributes based on the creating user's, but with limited project-level permissions. + // We store these attributes with the magic token, so it can simulate the creating user (even if the creating user is later deleted or their permissions change). + // + // NOTE: A problem with this approach is that if we change the built-in format of JWT attributes, these will remain as they were when captured. + attrs, err := s.jwtAttributesForUser(ctx, claims.OwnerID(), proj.OrganizationID, &adminv1.ProjectPermissions{ + ReadProject: true, + ReadProd: true, + }) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + opts.Attributes = attrs + } + + if req.MetricsViewFilter != nil { + val, err := protojson.Marshal(req.MetricsViewFilter) + if err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + if len(val) > magicAuthTokenMetricsViewFilterMaxSize { + return nil, status.Errorf(codes.InvalidArgument, "metrics view filter size exceeds limit (got %d bytes, but the limit is %d bytes)", len(val), magicAuthTokenMetricsViewFilterMaxSize) + } + + opts.MetricsViewFilterJSON = string(val) + } + + token, err := s.admin.IssueMagicAuthToken(ctx, opts) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + tokenStr := token.Token().String() + return &adminv1.IssueMagicAuthTokenResponse{ + Token: tokenStr, + Url: s.urls.magicAuthTokenOpen(req.Organization, req.Project, tokenStr), + }, nil +} + +func (s *Server) ListMagicAuthTokens(ctx context.Context, req *adminv1.ListMagicAuthTokensRequest) (*adminv1.ListMagicAuthTokensResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.organization", req.Organization), + attribute.String("args.project", req.Project), + ) + + token, err := unmarshalPageToken(req.PageToken) + if err != nil { + return nil, err + } + pageSize := validPageSize(req.PageSize) + + proj, err := s.admin.DB.FindProjectByName(ctx, req.Organization, req.Project) + if err != nil { + if errors.Is(err, database.ErrNotFound) { + return nil, status.Error(codes.NotFound, fmt.Sprintf("project %q not found", req.Project)) + } + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + claims := auth.GetClaims(ctx) + projPerms := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) + if !projPerms.CreateMagicAuthTokens && !projPerms.ManageMagicAuthTokens { + return nil, status.Error(codes.PermissionDenied, "not allowed to manage magic auth tokens") + } + + var createdByUserID *string + if !projPerms.ManageMagicAuthTokens { + if claims.OwnerType() != auth.OwnerTypeUser { + return nil, status.Error(codes.PermissionDenied, "not allowed to manage magic auth tokens") + } + + id := claims.OwnerID() + createdByUserID = &id + } + + tokens, err := s.admin.DB.FindMagicAuthTokensWithUser(ctx, proj.ID, createdByUserID, token.Val, pageSize) + if err != nil { + return nil, err + } + + nextPageToken := "" + if len(tokens) >= pageSize { + nextPageToken = marshalPageToken(tokens[len(tokens)-1].ID) + } + + pbs, err := magicAuthTokensToPB(tokens) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &adminv1.ListMagicAuthTokensResponse{ + Tokens: pbs, + NextPageToken: nextPageToken, + }, nil +} + +func (s *Server) RevokeMagicAuthToken(ctx context.Context, req *adminv1.RevokeMagicAuthTokenRequest) (*adminv1.RevokeMagicAuthTokenResponse, error) { + observability.AddRequestAttributes(ctx, + attribute.String("args.token_id", req.TokenId), + ) + + tkn, err := s.admin.DB.FindMagicAuthToken(ctx, req.TokenId) + if err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + proj, err := s.admin.DB.FindProject(ctx, tkn.ProjectID) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to find project for token: %v", err.Error()) + } + + claims := auth.GetClaims(ctx) + projPerms := claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID) + if !projPerms.ManageMagicAuthTokens { + // If they don't have manage permissions, they can only revoke tokens they created themselves. + isCreator := tkn.CreatedByUserID != nil && *tkn.CreatedByUserID == claims.OwnerID() + if !projPerms.CreateMagicAuthTokens || !isCreator { + return nil, status.Error(codes.PermissionDenied, "not allowed to revoke this magic auth token") + } + } + + err = s.admin.DB.DeleteMagicAuthToken(ctx, tkn.ID) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &adminv1.RevokeMagicAuthTokenResponse{}, nil +} + +func magicAuthTokensToPB(tkns []*database.MagicAuthTokenWithUser) ([]*adminv1.MagicAuthToken, error) { + var pbs []*adminv1.MagicAuthToken + for _, tkn := range tkns { + pb, err := magicAuthTokenToPB(tkn) + if err != nil { + return nil, err + } + pbs = append(pbs, pb) + } + return pbs, nil +} + +func magicAuthTokenToPB(tkn *database.MagicAuthTokenWithUser) (*adminv1.MagicAuthToken, error) { + attrs, err := structpb.NewStruct(tkn.Attributes) + if err != nil { + return nil, fmt.Errorf("failed to convert attributes to structpb: %w", err) + } + + var metricsViewFilter *runtimev1.Expression + if tkn.MetricsViewFilterJSON != "" { + metricsViewFilter = &runtimev1.Expression{} + err := protojson.Unmarshal([]byte(tkn.MetricsViewFilterJSON), metricsViewFilter) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal metrics view filter: %w", err) + } + } + + res := &adminv1.MagicAuthToken{ + Id: tkn.ID, + ProjectId: tkn.ProjectID, + CreatedOn: timestamppb.New(tkn.CreatedOn), + ExpiresOn: nil, + UsedOn: timestamppb.New(tkn.UsedOn), + CreatedByUserId: safeStr(tkn.CreatedByUserID), + CreatedByUserEmail: tkn.CreatedByUserEmail, + Attributes: attrs, + MetricsView: tkn.MetricsView, + MetricsViewFilter: metricsViewFilter, + MetricsViewFields: tkn.MetricsViewFields, + } + if tkn.ExpiresOn != nil { + res.ExpiresOn = timestamppb.New(*tkn.ExpiresOn) + } + return res, nil +} diff --git a/admin/server/projects.go b/admin/server/projects.go index a007460a094..4ef10be2500 100644 --- a/admin/server/projects.go +++ b/admin/server/projects.go @@ -14,12 +14,15 @@ import ( "github.com/rilldata/rill/admin/pkg/publicemail" "github.com/rilldata/rill/admin/server/auth" adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime/pkg/duckdbsql" "github.com/rilldata/rill/runtime/pkg/email" "github.com/rilldata/rill/runtime/pkg/observability" runtimeauth "github.com/rilldata/rill/runtime/server/auth" "go.opentelemetry.io/otel/attribute" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -143,11 +146,37 @@ func (s *Server) GetProject(ctx context.Context, req *adminv1.GetProjectRequest) } var attr map[string]any + var security *runtimev1.MetricsViewSpec_SecurityV2 if claims.OwnerType() == auth.OwnerTypeUser { attr, err = s.jwtAttributesForUser(ctx, claims.OwnerID(), proj.OrganizationID, permissions) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } + } else if claims.OwnerType() == auth.OwnerTypeMagicAuthToken { + mdl, ok := claims.AuthTokenModel().(*database.MagicAuthToken) + if !ok { + return nil, status.Errorf(codes.Internal, "unexpected type %T for magic auth token model", claims.AuthTokenModel()) + } + + attr = mdl.Attributes + + security = &runtimev1.MetricsViewSpec_SecurityV2{ + Access: fmt.Sprintf("'{{ .self.name }}'=%s", duckdbsql.EscapeStringValue(mdl.MetricsView)), + } + if mdl.MetricsViewFilterJSON != "" { + expr := &runtimev1.Expression{} + err := protojson.Unmarshal([]byte(mdl.MetricsViewFilterJSON), expr) + if err != nil { + return nil, status.Errorf(codes.Internal, "could not unmarshal metrics view filter: %s", err.Error()) + } + security.QueryFilter = expr + } + if len(mdl.MetricsViewFields) > 0 { + security.Include = append(security.Include, &runtimev1.MetricsViewSpec_SecurityV2_FieldConditionV2{ + Condition: "true", + Names: mdl.MetricsViewFields, + }) + } } ttlDuration := runtimeAccessTokenDefaultTTL @@ -170,6 +199,7 @@ func (s *Server) GetProject(ctx context.Context, req *adminv1.GetProjectRequest) }, }, Attributes: attr, + Security: security, }) if err != nil { return nil, status.Errorf(codes.Internal, "could not issue jwt: %s", err.Error()) diff --git a/admin/server/server.go b/admin/server/server.go index 13be907c1bf..c9213661b87 100644 --- a/admin/server/server.go +++ b/admin/server/server.go @@ -490,3 +490,7 @@ func (u *externalURLs) alertOpen(org, project, alert string) string { func (u *externalURLs) alertEdit(org, project, alert string) string { return urlutil.MustJoinURL(u.frontend, org, project, "-", "alerts", alert) } + +func (u *externalURLs) magicAuthTokenOpen(org, project, token string) string { + return urlutil.MustJoinURL(u.frontend, org, project, "-", "share", token) +} diff --git a/admin/used_flusher.go b/admin/used_flusher.go index 0cb21898920..7e5242c5121 100644 --- a/admin/used_flusher.go +++ b/admin/used_flusher.go @@ -25,6 +25,7 @@ type usedFlusher struct { userTokens map[string]bool serviceTokens map[string]bool deploymentTokens map[string]bool + magicAuthTokens map[string]bool ctx context.Context cancel context.CancelFunc flushWg sync.WaitGroup @@ -42,6 +43,7 @@ func newUsedFlusher(logger *zap.Logger, db database.DB) *usedFlusher { userTokens: make(map[string]bool), serviceTokens: make(map[string]bool), deploymentTokens: make(map[string]bool), + magicAuthTokens: make(map[string]bool), ctx: ctx, cancel: cancel, } @@ -92,6 +94,13 @@ func (u *usedFlusher) DeploymentToken(id string) { u.deploymentTokens[id] = true } +func (u *usedFlusher) MagicAuthToken(id string) { + u.mu.Lock() + defer u.mu.Unlock() + + u.magicAuthTokens[id] = true +} + func (u *usedFlusher) Close() { u.cancel() u.flush() @@ -151,6 +160,12 @@ func (u *usedFlusher) flush() { deploymentTokens = u.deploymentTokens u.deploymentTokens = make(map[string]bool) } + + var magicAuthTokens map[string]bool + if len(u.magicAuthTokens) > 0 { + magicAuthTokens = u.magicAuthTokens + u.magicAuthTokens = make(map[string]bool) + } u.mu.Unlock() // Flush deployments @@ -170,6 +185,9 @@ func (u *usedFlusher) flush() { // Flush deployment tokens u.flushToDB(deploymentTokens, u.db.UpdateDeploymentAuthTokenUsedOn, "deployment tokens") + + // Flush magic auth tokens + u.flushToDB(magicAuthTokens, u.db.UpdateMagicAuthTokenUsedOn, "magic auth tokens") } // Helper function to perform the flushing of used_on to the database. diff --git a/admin/worker/delete_expired_token.go b/admin/worker/delete_expired_token.go index ddf02e8b530..cf2b91c73eb 100644 --- a/admin/worker/delete_expired_token.go +++ b/admin/worker/delete_expired_token.go @@ -20,5 +20,9 @@ func (w *Worker) deleteExpiredAuthTokens(ctx context.Context) error { if err != nil { return err } + err = w.admin.DB.DeleteExpiredMagicAuthTokens(ctx, retention) + if err != nil { + return err + } return nil } diff --git a/cli/cmd/project/project.go b/cli/cmd/project/project.go index be7918d8bfb..d342bb5323e 100644 --- a/cli/cmd/project/project.go +++ b/cli/cmd/project/project.go @@ -17,18 +17,18 @@ func ProjectCmd(ch *cmdutil.Helper) *cobra.Command { } projectCmd.PersistentFlags().StringVar(&ch.Org, "org", ch.Org, "Organization Name") + projectCmd.AddCommand(ListCmd(ch)) projectCmd.AddCommand(ShowCmd(ch)) - projectCmd.AddCommand(StatusCmd(ch)) - projectCmd.AddCommand(DescribeCmd(ch)) projectCmd.AddCommand(EditCmd(ch)) + projectCmd.AddCommand(RenameCmd(ch)) projectCmd.AddCommand(DeleteCmd(ch)) - projectCmd.AddCommand(ListCmd(ch)) - projectCmd.AddCommand(ReconcileCmd(ch)) + projectCmd.AddCommand(StatusCmd(ch)) + projectCmd.AddCommand(LogsCmd(ch)) + projectCmd.AddCommand(DescribeCmd(ch)) projectCmd.AddCommand(RefreshCmd(ch)) + projectCmd.AddCommand(ReconcileCmd(ch)) projectCmd.AddCommand(ResetCmd(ch)) projectCmd.AddCommand(JwtCmd(ch)) - projectCmd.AddCommand(RenameCmd(ch)) - projectCmd.AddCommand(LogsCmd(ch)) return projectCmd } diff --git a/cli/cmd/root.go b/cli/cmd/root.go index f3527ff1075..d40087a2adb 100644 --- a/cli/cmd/root.go +++ b/cli/cmd/root.go @@ -16,6 +16,7 @@ import ( "github.com/rilldata/rill/cli/cmd/project" "github.com/rilldata/rill/cli/cmd/runtime" "github.com/rilldata/rill/cli/cmd/service" + "github.com/rilldata/rill/cli/cmd/shareurl" "github.com/rilldata/rill/cli/cmd/start" "github.com/rilldata/rill/cli/cmd/sudo" "github.com/rilldata/rill/cli/cmd/uninstall" @@ -146,6 +147,7 @@ func runCmd(ctx context.Context, ver cmdutil.Version) error { user.UserCmd(ch), org.OrgCmd(ch), project.ProjectCmd(ch), + shareurl.ShareURLCmd(ch), service.ServiceCmd(ch), auth.LoginCmd(ch), auth.LogoutCmd(ch), diff --git a/cli/cmd/shareurl/create.go b/cli/cmd/shareurl/create.go new file mode 100644 index 00000000000..e32b0779365 --- /dev/null +++ b/cli/cmd/shareurl/create.go @@ -0,0 +1,76 @@ +package shareurl + +import ( + "fmt" + + "github.com/rilldata/rill/cli/pkg/cmdutil" + adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/spf13/cobra" + "google.golang.org/protobuf/encoding/protojson" +) + +func CreateCmd(ch *cmdutil.Helper) *cobra.Command { + var project, path string + var ttlMinutes int + var filter string + var fields []string + + createCmd := &cobra.Command{ + Use: "create [] ", + Short: "Create a shareable URL", + Args: cobra.RangeArgs(1, 2), + RunE: func(cmd *cobra.Command, args []string) error { + client, err := ch.Client() + if err != nil { + return err + } + + if len(args) == 2 { + project = args[0] + } + if !cmd.Flags().Changed("project") && len(args) == 0 && ch.Interactive { + var err error + project, err = ch.InferProjectName(cmd.Context(), ch.Org, path) + if err != nil { + return err + } + } + + metricsView := args[len(args)-1] + + var filterExpr *runtimev1.Expression + if filter != "" { + filterExpr = &runtimev1.Expression{} + err := protojson.Unmarshal([]byte(filter), filterExpr) + if err != nil { + return fmt.Errorf("failed to parse filter expression: %w", err) + } + } + + res, err := client.IssueMagicAuthToken(cmd.Context(), &adminv1.IssueMagicAuthTokenRequest{ + Organization: ch.Org, + Project: project, + TtlMinutes: int64(ttlMinutes), + MetricsView: metricsView, + MetricsViewFilter: filterExpr, + MetricsViewFields: fields, + }) + if err != nil { + return err + } + + ch.Printf("%s\n", res.Url) + return nil + }, + } + + createCmd.Flags().SortFlags = false + createCmd.Flags().StringVar(&project, "project", "", "Project name") + createCmd.Flags().StringVar(&path, "path", ".", "Project directory") + createCmd.Flags().IntVar(&ttlMinutes, "ttl-minutes", 0, "Duration until the token expires (use 0 for no expiry)") + createCmd.Flags().StringVar(&filter, "filter", "", "Limit access to the provided filter (json)") + createCmd.Flags().StringSliceVar(&fields, "fields", nil, "Limit access to the provided fields") + + return createCmd +} diff --git a/cli/cmd/shareurl/delete.go b/cli/cmd/shareurl/delete.go new file mode 100644 index 00000000000..442d3635f9c --- /dev/null +++ b/cli/cmd/shareurl/delete.go @@ -0,0 +1,31 @@ +package shareurl + +import ( + "github.com/rilldata/rill/cli/pkg/cmdutil" + adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + "github.com/spf13/cobra" +) + +func DeleteCmd(ch *cmdutil.Helper) *cobra.Command { + deleteCmd := &cobra.Command{ + Use: "delete ", + Short: "Delete a shareable URL", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client, err := ch.Client() + if err != nil { + return err + } + + _, err = client.RevokeMagicAuthToken(cmd.Context(), &adminv1.RevokeMagicAuthTokenRequest{ + TokenId: args[0], + }) + if err != nil { + return err + } + + return nil + }, + } + return deleteCmd +} diff --git a/cli/cmd/shareurl/list.go b/cli/cmd/shareurl/list.go new file mode 100644 index 00000000000..8ff47038acc --- /dev/null +++ b/cli/cmd/shareurl/list.go @@ -0,0 +1,65 @@ +package shareurl + +import ( + "github.com/rilldata/rill/cli/pkg/cmdutil" + adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + "github.com/spf13/cobra" +) + +func ListCmd(ch *cmdutil.Helper) *cobra.Command { + var project, path string + var pageSize uint32 + var pageToken string + + listCmd := &cobra.Command{ + Use: "list []", + Short: "List all shareable URLs", + RunE: func(cmd *cobra.Command, args []string) error { + client, err := ch.Client() + if err != nil { + return err + } + + if len(args) > 0 { + project = args[0] + } + if !cmd.Flags().Changed("project") && len(args) == 0 && ch.Interactive { + var err error + project, err = ch.InferProjectName(cmd.Context(), ch.Org, path) + if err != nil { + return err + } + } + + res, err := client.ListMagicAuthTokens(cmd.Context(), &adminv1.ListMagicAuthTokensRequest{ + Organization: ch.Org, + Project: project, + PageSize: pageSize, + PageToken: pageToken, + }) + if err != nil { + return err + } + + ch.Printer.PrintMagicAuthTokens(res.Tokens) + + if res.NextPageToken != "" { + cmd.Println() + cmd.Printf("Next page token: %s\n", res.NextPageToken) + } + + cmd.Println() + cmd.Println("NOTE: For security reasons, the actual URLs can't be displayed after creation.") + + return nil + }, + } + + listCmd.Flags().SortFlags = false + listCmd.Flags().StringVar(&project, "project", "", "Project name") + listCmd.Flags().StringVar(&path, "path", ".", "Project directory") + listCmd.Flags().Uint32Var(&pageSize, "page-size", 50, "Number of projects to return per page") + listCmd.Flags().StringVar(&pageToken, "page-token", "", "Pagination token") + + return listCmd +} diff --git a/cli/cmd/shareurl/shareurl.go b/cli/cmd/shareurl/shareurl.go new file mode 100644 index 00000000000..e3d8e3712dc --- /dev/null +++ b/cli/cmd/shareurl/shareurl.go @@ -0,0 +1,21 @@ +package shareurl + +import ( + "github.com/rilldata/rill/cli/pkg/cmdutil" + "github.com/spf13/cobra" +) + +func ShareURLCmd(ch *cmdutil.Helper) *cobra.Command { + shareURLCmd := &cobra.Command{ + Use: "share-url", + Short: "Manage shareable URLs", + PersistentPreRunE: cmdutil.CheckChain(cmdutil.CheckAuth(ch), cmdutil.CheckOrganization(ch)), + } + + shareURLCmd.PersistentFlags().StringVar(&ch.Org, "org", ch.Org, "Organization Name") + shareURLCmd.AddCommand(ListCmd(ch)) + shareURLCmd.AddCommand(CreateCmd(ch)) + shareURLCmd.AddCommand(DeleteCmd(ch)) + + return shareURLCmd +} diff --git a/cli/pkg/printer/resources.go b/cli/pkg/printer/resources.go index a6e314a6d0b..3981b0052a3 100644 --- a/cli/pkg/printer/resources.go +++ b/cli/pkg/printer/resources.go @@ -6,6 +6,7 @@ import ( "time" adminv1 "github.com/rilldata/rill/proto/gen/rill/admin/v1" + "github.com/rilldata/rill/runtime/metricsview" ) func (p *Printer) PrintOrgs(orgs []*adminv1.Organization, defaultOrg string) { @@ -33,7 +34,7 @@ func toOrgsTable(orgs []*adminv1.Organization, defaultOrg string) []*organizatio func toOrgRow(o *adminv1.Organization) *organization { return &organization{ Name: o.Name, - CreatedAt: o.CreatedOn.AsTime().Format(time.DateTime), + CreatedAt: o.CreatedOn.AsTime().Local().Format(time.DateTime), } } @@ -137,8 +138,8 @@ func toMemberRow(m *adminv1.Member) *member { Name: m.UserName, Email: m.UserEmail, RoleName: m.RoleName, - CreatedOn: m.CreatedOn.AsTime().Format(time.DateTime), - UpdatedOn: m.UpdatedOn.AsTime().Format(time.DateTime), + CreatedOn: m.CreatedOn.AsTime().Local().Format(time.DateTime), + UpdatedOn: m.UpdatedOn.AsTime().Local().Format(time.DateTime), } } @@ -201,7 +202,7 @@ func toServiceRow(s *adminv1.Service) *service { return &service{ Name: s.Name, OrgName: s.OrgName, - CreatedAt: s.CreatedOn.AsTime().Format(time.DateTime), + CreatedAt: s.CreatedOn.AsTime().Local().Format(time.DateTime), } } @@ -231,12 +232,12 @@ func toServiceTokensTable(tkns []*adminv1.ServiceToken) []*token { func toServiceTokenRow(s *adminv1.ServiceToken) *token { var expiresOn string if !s.ExpiresOn.AsTime().IsZero() { - expiresOn = s.ExpiresOn.AsTime().Format(time.DateTime) + expiresOn = s.ExpiresOn.AsTime().Local().Format(time.DateTime) } return &token{ ID: s.Id, - CreatedOn: s.CreatedOn.AsTime().Format(time.DateTime), + CreatedOn: s.CreatedOn.AsTime().Local().Format(time.DateTime), ExpiresOn: expiresOn, } } @@ -246,3 +247,53 @@ type token struct { CreatedOn string `header:"created_on,timestamp(ms|utc|human)" json:"created_on"` ExpiresOn string `header:"expires_on,timestamp(ms|utc|human)" json:"expires_on"` } + +func (p *Printer) PrintMagicAuthTokens(tkns []*adminv1.MagicAuthToken) { + if len(tkns) == 0 { + p.PrintfWarn("No URLs found\n") + return + } + + p.PrintData(toMagicAuthTokensTable(tkns)) +} + +func toMagicAuthTokensTable(tkns []*adminv1.MagicAuthToken) []*magicAuthToken { + res := make([]*magicAuthToken, 0, len(tkns)) + + for _, tkn := range tkns { + res = append(res, toMagicAuthTokenRow(tkn)) + } + + return res +} + +func toMagicAuthTokenRow(t *adminv1.MagicAuthToken) *magicAuthToken { + expr := metricsview.NewExpressionFromProto(t.MetricsViewFilter) + filter, err := metricsview.ExpressionToString(expr) + if err != nil { + panic(err) + } + + row := &magicAuthToken{ + ID: t.Id, + Dashboard: t.MetricsView, + Filter: filter, + CreatedBy: t.CreatedByUserEmail, + CreatedOn: t.CreatedOn.AsTime().Local().Format(time.DateTime), + UsedOn: t.UsedOn.AsTime().Local().Format(time.DateTime), + } + if t.ExpiresOn != nil { + row.ExpiresOn = t.ExpiresOn.AsTime().Local().Format(time.DateTime) + } + return row +} + +type magicAuthToken struct { + ID string `header:"id" json:"id"` + Dashboard string `header:"dashboard" json:"dashboard"` + Filter string `header:"filter" json:"filter"` + CreatedBy string `header:"created by" json:"created_by"` + CreatedOn string `header:"created on" json:"created_on"` + UsedOn string `header:"last used on" json:"used_on"` + ExpiresOn string `header:"expires on" json:"expires_on"` +} diff --git a/docs/docs/manage/roles-permissions.md b/docs/docs/manage/roles-permissions.md index a3a5a5e7ee9..8d9a8c4bf95 100644 --- a/docs/docs/manage/roles-permissions.md +++ b/docs/docs/manage/roles-permissions.md @@ -32,22 +32,26 @@ There are two roles available at the organization-level: **Viewer** and **Admin* There are two roles available at the project-level: **Viewer** and **Admin**. -| Permission | Description | Viewer | Admin | -| :----------------------- | :--------------------------------------------------------- | -----: | ----: | -| `read_project` | View basic info about the project | ✔ | ✔ | -| `manage_project` | Change project settings | | ✔ | -| `read_prod` | View dashboards deployed from the production (main) branch | ✔ | ✔ | -| `read_prod_status` | View logs for the production deployment | | ✔ | -| `manage_prod` | Trigger actions on the production deployment | | ✔ | -| `read_project_members` | View members of the project | | ✔ | -| `manage_project_members` | Add, remove or change roles of project members | | ✔ | -| `create_reports` | Create and edit new scheduled reports | ✔ | ✔ | -| `manage_reports` | Edit and change scheduled reports created by others | | ✔ | -| `create_alerts` | Create and edit new alerts | ✔ | ✔ | -| `manage_alerts` | Edit and change alerts created by others | | ✔ | +| Permission | Description | Viewer | Admin | +| :------------------------- | :--------------------------------------------------------- | -----: | ----: | +| `read_project` | View basic info about the project | ✔ | ✔ | +| `manage_project` | Change project settings | | ✔ | +| `read_prod` | View dashboards deployed from the production (main) branch | ✔ | ✔ | +| `read_prod_status` | View logs for the production deployment | | ✔ | +| `manage_prod` | Trigger actions on the production deployment | | ✔ | +| `read_project_members` | View members of the project | | ✔ | +| `manage_project_members` | Add, remove or change roles of project members | | ✔ | +| `create_magic_auth_tokens` | Create shareable URLs | | ✔ | +| `manage_magic_auth_tokens` | Remove shareable URLs created by others | | ✔ | +| `create_reports` | Create and edit new scheduled reports | ✔ | ✔ | +| `manage_reports` | Edit and change scheduled reports created by others | | ✔ | +| `create_alerts` | Create and edit new alerts | ✔ | ✔ | +| `manage_alerts` | Edit and change alerts created by others | | ✔ | +| `create_bookmarks` | Create and edit new bookmarks | ✔ | ✔ | +| `manage_bookmarks` | Edit and change bookmarks created by others | | ✔ | diff --git a/proto/gen/rill/admin/v1/admin.swagger.yaml b/proto/gen/rill/admin/v1/admin.swagger.yaml index 5cb1ee78a8d..473ae830c21 100644 --- a/proto/gen/rill/admin/v1/admin.swagger.yaml +++ b/proto/gen/rill/admin/v1/admin.swagger.yaml @@ -126,6 +126,26 @@ paths: $ref: '#/definitions/rpcStatus' tags: - AdminService + /v1/magic-tokens/{tokenId}: + delete: + summary: RevokeMagicAuthToken revokes a magic auth token. + operationId: AdminService_RevokeMagicAuthToken + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1RevokeMagicAuthTokenResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: tokenId + in: path + required: true + type: string + tags: + - AdminService /v1/organizations: get: summary: ListOrganizations lists all the organizations currently managed by the admin @@ -1082,6 +1102,87 @@ paths: type: object tags: - AdminService + /v1/organizations/{organization}/projects/{project}/tokens/magic: + get: + summary: ListMagicAuthTokens lists all the magic auth tokens for a specific project. + operationId: AdminService_ListMagicAuthTokens + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListMagicAuthTokensResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: organization + in: path + required: true + type: string + - name: project + in: path + required: true + type: string + - name: pageSize + in: query + required: false + type: integer + format: int64 + - name: pageToken + in: query + required: false + type: string + tags: + - AdminService + post: + summary: IssueMagicAuthToken creates a "magic" auth token that provides limited access to a specific filtered dashboard in a specific project. + operationId: AdminService_IssueMagicAuthToken + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1IssueMagicAuthTokenResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: organization + description: Organization that owns the project. + in: path + required: true + type: string + - name: project + description: Project to create the magic auth token in. + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + ttlMinutes: + type: string + format: int64 + description: TTL for the token in minutes. Set to 0 for no expiry. Defaults to no expiry. + metricsView: + type: string + description: Metrics view the token will provide access to. + metricsViewFilter: + $ref: '#/definitions/v1Expression' + description: Optional filter to apply to all queries to the metrics view. + metricsViewFields: + type: array + items: + type: string + description: |- + Optional list of names of dimensions and measures to limit access to. + If empty, all dimensions and measures are accessible. + tags: + - AdminService /v1/organizations/{organization}/projects/{project}/users/search: get: summary: SearchProjectUsers returns users who has access to to a project (including org members that have access through a usergroup) @@ -2399,6 +2500,16 @@ definitions: type: string data: type: string + v1Condition: + type: object + properties: + op: + $ref: '#/definitions/v1Operation' + exprs: + type: array + items: + type: object + $ref: '#/definitions/v1Expression' v1CreateAlertResponse: type: object properties: @@ -2519,6 +2630,16 @@ definitions: - EXPORT_FORMAT_XLSX - EXPORT_FORMAT_PARQUET default: EXPORT_FORMAT_UNSPECIFIED + v1Expression: + type: object + properties: + ident: + type: string + val: {} + cond: + $ref: '#/definitions/v1Condition' + subquery: + $ref: '#/definitions/v1Subquery' v1GenerateAlertYAMLResponse: type: object properties: @@ -2681,6 +2802,13 @@ definitions: - GITHUB_PERMISSION_READ - GITHUB_PERMISSION_WRITE default: GITHUB_PERMISSION_UNSPECIFIED + v1IssueMagicAuthTokenResponse: + type: object + properties: + token: + type: string + url: + type: string v1IssueRepresentativeAuthTokenRequest: type: object properties: @@ -2709,6 +2837,16 @@ definitions: items: type: object $ref: '#/definitions/v1Bookmark' + v1ListMagicAuthTokensResponse: + type: object + properties: + tokens: + type: array + items: + type: object + $ref: '#/definitions/v1MagicAuthToken' + nextPageToken: + type: string v1ListOrganizationInvitesResponse: type: object properties: @@ -2809,6 +2947,36 @@ definitions: items: type: object $ref: '#/definitions/v1WhitelistedDomain' + v1MagicAuthToken: + type: object + properties: + id: + type: string + projectId: + type: string + createdOn: + type: string + format: date-time + expiresOn: + type: string + format: date-time + usedOn: + type: string + format: date-time + createdByUserId: + type: string + createdByUserEmail: + type: string + attributes: + type: object + metricsView: + type: string + metricsViewFilter: + $ref: '#/definitions/v1Expression' + metricsViewFields: + type: array + items: + type: string v1Member: type: object properties: @@ -2826,6 +2994,23 @@ definitions: updatedOn: type: string format: date-time + v1Operation: + type: string + enum: + - OPERATION_UNSPECIFIED + - OPERATION_EQ + - OPERATION_NEQ + - OPERATION_LT + - OPERATION_LTE + - OPERATION_GT + - OPERATION_GTE + - OPERATION_OR + - OPERATION_AND + - OPERATION_IN + - OPERATION_NIN + - OPERATION_LIKE + - OPERATION_NLIKE + default: OPERATION_UNSPECIFIED v1Organization: type: object properties: @@ -2962,6 +3147,10 @@ definitions: type: boolean manageProjectMembers: type: boolean + createMagicAuthTokens: + type: boolean + manageMagicAuthTokens: + type: boolean createReports: type: boolean manageReports: @@ -2970,6 +3159,10 @@ definitions: type: boolean manageAlerts: type: boolean + createBookmarks: + type: boolean + manageBookmarks: + type: boolean v1PullVirtualRepoResponse: type: object properties: @@ -3042,6 +3235,8 @@ definitions: properties: tokenId: type: string + v1RevokeMagicAuthTokenResponse: + type: object v1RevokeServiceAuthTokenResponse: type: object v1SearchProjectNamesResponse: @@ -3114,6 +3309,19 @@ definitions: type: boolean v1SetSuperuserResponse: type: object + v1Subquery: + type: object + properties: + dimension: + type: string + measures: + type: array + items: + type: string + where: + $ref: '#/definitions/v1Expression' + having: + $ref: '#/definitions/v1Expression' v1SudoGetResourceResponse: type: object properties: diff --git a/proto/gen/rill/admin/v1/ai.pb.go b/proto/gen/rill/admin/v1/ai.pb.go index b560c9c1f79..108b2358abe 100644 --- a/proto/gen/rill/admin/v1/ai.pb.go +++ b/proto/gen/rill/admin/v1/ai.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/admin/v1/ai.proto @@ -225,7 +225,7 @@ func file_rill_admin_v1_ai_proto_rawDescGZIP() []byte { } var file_rill_admin_v1_ai_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_rill_admin_v1_ai_proto_goTypes = []interface{}{ +var file_rill_admin_v1_ai_proto_goTypes = []any{ (*CompleteRequest)(nil), // 0: rill.admin.v1.CompleteRequest (*CompleteResponse)(nil), // 1: rill.admin.v1.CompleteResponse (*CompletionMessage)(nil), // 2: rill.admin.v1.CompletionMessage @@ -248,7 +248,7 @@ func file_rill_admin_v1_ai_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_admin_v1_ai_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_ai_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*CompleteRequest); i { case 0: return &v.state @@ -260,7 +260,7 @@ func file_rill_admin_v1_ai_proto_init() { return nil } } - file_rill_admin_v1_ai_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_ai_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*CompleteResponse); i { case 0: return &v.state @@ -272,7 +272,7 @@ func file_rill_admin_v1_ai_proto_init() { return nil } } - file_rill_admin_v1_ai_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_ai_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*CompletionMessage); i { case 0: return &v.state diff --git a/proto/gen/rill/admin/v1/api.pb.go b/proto/gen/rill/admin/v1/api.pb.go index 9532ba87798..b143ef1977e 100644 --- a/proto/gen/rill/admin/v1/api.pb.go +++ b/proto/gen/rill/admin/v1/api.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/admin/v1/api.proto @@ -6535,16 +6535,28 @@ func (x *ListServiceAuthTokensResponse) GetTokens() []*ServiceToken { return nil } -type GetGithubRepoStatusRequest struct { +type IssueMagicAuthTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GithubUrl string `protobuf:"bytes,1,opt,name=github_url,json=githubUrl,proto3" json:"github_url,omitempty"` -} - -func (x *GetGithubRepoStatusRequest) Reset() { - *x = GetGithubRepoStatusRequest{} + // Organization that owns the project. + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + // Project to create the magic auth token in. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // TTL for the token in minutes. Set to 0 for no expiry. Defaults to no expiry. + TtlMinutes int64 `protobuf:"varint,3,opt,name=ttl_minutes,json=ttlMinutes,proto3" json:"ttl_minutes,omitempty"` + // Metrics view the token will provide access to. + MetricsView string `protobuf:"bytes,4,opt,name=metrics_view,json=metricsView,proto3" json:"metrics_view,omitempty"` + // Optional filter to apply to all queries to the metrics view. + MetricsViewFilter *v1.Expression `protobuf:"bytes,5,opt,name=metrics_view_filter,json=metricsViewFilter,proto3" json:"metrics_view_filter,omitempty"` + // Optional list of names of dimensions and measures to limit access to. + // If empty, all dimensions and measures are accessible. + MetricsViewFields []string `protobuf:"bytes,6,rep,name=metrics_view_fields,json=metricsViewFields,proto3" json:"metrics_view_fields,omitempty"` +} + +func (x *IssueMagicAuthTokenRequest) Reset() { + *x = IssueMagicAuthTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6552,13 +6564,13 @@ func (x *GetGithubRepoStatusRequest) Reset() { } } -func (x *GetGithubRepoStatusRequest) String() string { +func (x *IssueMagicAuthTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGithubRepoStatusRequest) ProtoMessage() {} +func (*IssueMagicAuthTokenRequest) ProtoMessage() {} -func (x *GetGithubRepoStatusRequest) ProtoReflect() protoreflect.Message { +func (x *IssueMagicAuthTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6570,30 +6582,64 @@ func (x *GetGithubRepoStatusRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGithubRepoStatusRequest.ProtoReflect.Descriptor instead. -func (*GetGithubRepoStatusRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use IssueMagicAuthTokenRequest.ProtoReflect.Descriptor instead. +func (*IssueMagicAuthTokenRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{111} } -func (x *GetGithubRepoStatusRequest) GetGithubUrl() string { +func (x *IssueMagicAuthTokenRequest) GetOrganization() string { if x != nil { - return x.GithubUrl + return x.Organization } return "" } -type GetGithubRepoStatusResponse struct { +func (x *IssueMagicAuthTokenRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *IssueMagicAuthTokenRequest) GetTtlMinutes() int64 { + if x != nil { + return x.TtlMinutes + } + return 0 +} + +func (x *IssueMagicAuthTokenRequest) GetMetricsView() string { + if x != nil { + return x.MetricsView + } + return "" +} + +func (x *IssueMagicAuthTokenRequest) GetMetricsViewFilter() *v1.Expression { + if x != nil { + return x.MetricsViewFilter + } + return nil +} + +func (x *IssueMagicAuthTokenRequest) GetMetricsViewFields() []string { + if x != nil { + return x.MetricsViewFields + } + return nil +} + +type IssueMagicAuthTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - HasAccess bool `protobuf:"varint,1,opt,name=has_access,json=hasAccess,proto3" json:"has_access,omitempty"` - GrantAccessUrl string `protobuf:"bytes,2,opt,name=grant_access_url,json=grantAccessUrl,proto3" json:"grant_access_url,omitempty"` - DefaultBranch string `protobuf:"bytes,3,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` } -func (x *GetGithubRepoStatusResponse) Reset() { - *x = GetGithubRepoStatusResponse{} +func (x *IssueMagicAuthTokenResponse) Reset() { + *x = IssueMagicAuthTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6601,13 +6647,13 @@ func (x *GetGithubRepoStatusResponse) Reset() { } } -func (x *GetGithubRepoStatusResponse) String() string { +func (x *IssueMagicAuthTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGithubRepoStatusResponse) ProtoMessage() {} +func (*IssueMagicAuthTokenResponse) ProtoMessage() {} -func (x *GetGithubRepoStatusResponse) ProtoReflect() protoreflect.Message { +func (x *IssueMagicAuthTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6619,40 +6665,38 @@ func (x *GetGithubRepoStatusResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGithubRepoStatusResponse.ProtoReflect.Descriptor instead. -func (*GetGithubRepoStatusResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use IssueMagicAuthTokenResponse.ProtoReflect.Descriptor instead. +func (*IssueMagicAuthTokenResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{112} } -func (x *GetGithubRepoStatusResponse) GetHasAccess() bool { - if x != nil { - return x.HasAccess - } - return false -} - -func (x *GetGithubRepoStatusResponse) GetGrantAccessUrl() string { +func (x *IssueMagicAuthTokenResponse) GetToken() string { if x != nil { - return x.GrantAccessUrl + return x.Token } return "" } -func (x *GetGithubRepoStatusResponse) GetDefaultBranch() string { +func (x *IssueMagicAuthTokenResponse) GetUrl() string { if x != nil { - return x.DefaultBranch + return x.Url } return "" } -type GetGithubUserStatusRequest struct { +type ListMagicAuthTokensRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + PageSize uint32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } -func (x *GetGithubUserStatusRequest) Reset() { - *x = GetGithubUserStatusRequest{} +func (x *ListMagicAuthTokensRequest) Reset() { + *x = ListMagicAuthTokensRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6660,13 +6704,13 @@ func (x *GetGithubUserStatusRequest) Reset() { } } -func (x *GetGithubUserStatusRequest) String() string { +func (x *ListMagicAuthTokensRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGithubUserStatusRequest) ProtoMessage() {} +func (*ListMagicAuthTokensRequest) ProtoMessage() {} -func (x *GetGithubUserStatusRequest) ProtoReflect() protoreflect.Message { +func (x *ListMagicAuthTokensRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6678,30 +6722,50 @@ func (x *GetGithubUserStatusRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGithubUserStatusRequest.ProtoReflect.Descriptor instead. -func (*GetGithubUserStatusRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListMagicAuthTokensRequest.ProtoReflect.Descriptor instead. +func (*ListMagicAuthTokensRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{113} } -type GetGithubUserStatusResponse struct { +func (x *ListMagicAuthTokensRequest) GetOrganization() string { + if x != nil { + return x.Organization + } + return "" +} + +func (x *ListMagicAuthTokensRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *ListMagicAuthTokensRequest) GetPageSize() uint32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListMagicAuthTokensRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +type ListMagicAuthTokensResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - HasAccess bool `protobuf:"varint,1,opt,name=has_access,json=hasAccess,proto3" json:"has_access,omitempty"` - GrantAccessUrl string `protobuf:"bytes,2,opt,name=grant_access_url,json=grantAccessUrl,proto3" json:"grant_access_url,omitempty"` - AccessToken string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account,omitempty"` - UserInstallationPermission GithubPermission `protobuf:"varint,6,opt,name=user_installation_permission,json=userInstallationPermission,proto3,enum=rill.admin.v1.GithubPermission" json:"user_installation_permission,omitempty"` - OrganizationInstallationPermissions map[string]GithubPermission `protobuf:"bytes,7,rep,name=organization_installation_permissions,json=organizationInstallationPermissions,proto3" json:"organization_installation_permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=rill.admin.v1.GithubPermission"` - // DEPRECATED: Use organization_installation_permissions instead. - // - // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. - Organizations []string `protobuf:"bytes,5,rep,name=organizations,proto3" json:"organizations,omitempty"` + Tokens []*MagicAuthToken `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *GetGithubUserStatusResponse) Reset() { - *x = GetGithubUserStatusResponse{} +func (x *ListMagicAuthTokensResponse) Reset() { + *x = ListMagicAuthTokensResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6709,13 +6773,13 @@ func (x *GetGithubUserStatusResponse) Reset() { } } -func (x *GetGithubUserStatusResponse) String() string { +func (x *ListMagicAuthTokensResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGithubUserStatusResponse) ProtoMessage() {} +func (*ListMagicAuthTokensResponse) ProtoMessage() {} -func (x *GetGithubUserStatusResponse) ProtoReflect() protoreflect.Message { +func (x *ListMagicAuthTokensResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6727,72 +6791,35 @@ func (x *GetGithubUserStatusResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGithubUserStatusResponse.ProtoReflect.Descriptor instead. -func (*GetGithubUserStatusResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListMagicAuthTokensResponse.ProtoReflect.Descriptor instead. +func (*ListMagicAuthTokensResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{114} } -func (x *GetGithubUserStatusResponse) GetHasAccess() bool { - if x != nil { - return x.HasAccess - } - return false -} - -func (x *GetGithubUserStatusResponse) GetGrantAccessUrl() string { - if x != nil { - return x.GrantAccessUrl - } - return "" -} - -func (x *GetGithubUserStatusResponse) GetAccessToken() string { - if x != nil { - return x.AccessToken - } - return "" -} - -func (x *GetGithubUserStatusResponse) GetAccount() string { - if x != nil { - return x.Account - } - return "" -} - -func (x *GetGithubUserStatusResponse) GetUserInstallationPermission() GithubPermission { - if x != nil { - return x.UserInstallationPermission - } - return GithubPermission_GITHUB_PERMISSION_UNSPECIFIED -} - -func (x *GetGithubUserStatusResponse) GetOrganizationInstallationPermissions() map[string]GithubPermission { +func (x *ListMagicAuthTokensResponse) GetTokens() []*MagicAuthToken { if x != nil { - return x.OrganizationInstallationPermissions + return x.Tokens } return nil } -// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. -func (x *GetGithubUserStatusResponse) GetOrganizations() []string { +func (x *ListMagicAuthTokensResponse) GetNextPageToken() string { if x != nil { - return x.Organizations + return x.NextPageToken } - return nil + return "" } -type GetGitCredentialsRequest struct { +type RevokeMagicAuthTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` } -func (x *GetGitCredentialsRequest) Reset() { - *x = GetGitCredentialsRequest{} +func (x *RevokeMagicAuthTokenRequest) Reset() { + *x = RevokeMagicAuthTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6800,13 +6827,13 @@ func (x *GetGitCredentialsRequest) Reset() { } } -func (x *GetGitCredentialsRequest) String() string { +func (x *RevokeMagicAuthTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGitCredentialsRequest) ProtoMessage() {} +func (*RevokeMagicAuthTokenRequest) ProtoMessage() {} -func (x *GetGitCredentialsRequest) ProtoReflect() protoreflect.Message { +func (x *RevokeMagicAuthTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6818,39 +6845,26 @@ func (x *GetGitCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGitCredentialsRequest.ProtoReflect.Descriptor instead. -func (*GetGitCredentialsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RevokeMagicAuthTokenRequest.ProtoReflect.Descriptor instead. +func (*RevokeMagicAuthTokenRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{115} } -func (x *GetGitCredentialsRequest) GetOrganization() string { - if x != nil { - return x.Organization - } - return "" -} - -func (x *GetGitCredentialsRequest) GetProject() string { +func (x *RevokeMagicAuthTokenRequest) GetTokenId() string { if x != nil { - return x.Project + return x.TokenId } return "" } -type GetGitCredentialsResponse struct { +type RevokeMagicAuthTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - RepoUrl string `protobuf:"bytes,1,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` - Subpath string `protobuf:"bytes,4,opt,name=subpath,proto3" json:"subpath,omitempty"` - ProdBranch string `protobuf:"bytes,5,opt,name=prod_branch,json=prodBranch,proto3" json:"prod_branch,omitempty"` } -func (x *GetGitCredentialsResponse) Reset() { - *x = GetGitCredentialsResponse{} +func (x *RevokeMagicAuthTokenResponse) Reset() { + *x = RevokeMagicAuthTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6858,13 +6872,13 @@ func (x *GetGitCredentialsResponse) Reset() { } } -func (x *GetGitCredentialsResponse) String() string { +func (x *RevokeMagicAuthTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGitCredentialsResponse) ProtoMessage() {} +func (*RevokeMagicAuthTokenResponse) ProtoMessage() {} -func (x *GetGitCredentialsResponse) ProtoReflect() protoreflect.Message { +func (x *RevokeMagicAuthTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6876,58 +6890,21 @@ func (x *GetGitCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGitCredentialsResponse.ProtoReflect.Descriptor instead. -func (*GetGitCredentialsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RevokeMagicAuthTokenResponse.ProtoReflect.Descriptor instead. +func (*RevokeMagicAuthTokenResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{116} } -func (x *GetGitCredentialsResponse) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *GetGitCredentialsResponse) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *GetGitCredentialsResponse) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -func (x *GetGitCredentialsResponse) GetSubpath() string { - if x != nil { - return x.Subpath - } - return "" -} - -func (x *GetGitCredentialsResponse) GetProdBranch() string { - if x != nil { - return x.ProdBranch - } - return "" -} - -type CreateWhitelistedDomainRequest struct { +type GetGithubRepoStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` - Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` + GithubUrl string `protobuf:"bytes,1,opt,name=github_url,json=githubUrl,proto3" json:"github_url,omitempty"` } -func (x *CreateWhitelistedDomainRequest) Reset() { - *x = CreateWhitelistedDomainRequest{} +func (x *GetGithubRepoStatusRequest) Reset() { + *x = GetGithubRepoStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6935,13 +6912,13 @@ func (x *CreateWhitelistedDomainRequest) Reset() { } } -func (x *CreateWhitelistedDomainRequest) String() string { +func (x *GetGithubRepoStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateWhitelistedDomainRequest) ProtoMessage() {} +func (*GetGithubRepoStatusRequest) ProtoMessage() {} -func (x *CreateWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { +func (x *GetGithubRepoStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6953,40 +6930,30 @@ func (x *CreateWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateWhitelistedDomainRequest.ProtoReflect.Descriptor instead. -func (*CreateWhitelistedDomainRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetGithubRepoStatusRequest.ProtoReflect.Descriptor instead. +func (*GetGithubRepoStatusRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{117} } -func (x *CreateWhitelistedDomainRequest) GetOrganization() string { - if x != nil { - return x.Organization - } - return "" -} - -func (x *CreateWhitelistedDomainRequest) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -func (x *CreateWhitelistedDomainRequest) GetRole() string { +func (x *GetGithubRepoStatusRequest) GetGithubUrl() string { if x != nil { - return x.Role + return x.GithubUrl } return "" } -type CreateWhitelistedDomainResponse struct { +type GetGithubRepoStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + HasAccess bool `protobuf:"varint,1,opt,name=has_access,json=hasAccess,proto3" json:"has_access,omitempty"` + GrantAccessUrl string `protobuf:"bytes,2,opt,name=grant_access_url,json=grantAccessUrl,proto3" json:"grant_access_url,omitempty"` + DefaultBranch string `protobuf:"bytes,3,opt,name=default_branch,json=defaultBranch,proto3" json:"default_branch,omitempty"` } -func (x *CreateWhitelistedDomainResponse) Reset() { - *x = CreateWhitelistedDomainResponse{} +func (x *GetGithubRepoStatusResponse) Reset() { + *x = GetGithubRepoStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6994,13 +6961,13 @@ func (x *CreateWhitelistedDomainResponse) Reset() { } } -func (x *CreateWhitelistedDomainResponse) String() string { +func (x *GetGithubRepoStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateWhitelistedDomainResponse) ProtoMessage() {} +func (*GetGithubRepoStatusResponse) ProtoMessage() {} -func (x *CreateWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { +func (x *GetGithubRepoStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7012,22 +6979,40 @@ func (x *CreateWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateWhitelistedDomainResponse.ProtoReflect.Descriptor instead. -func (*CreateWhitelistedDomainResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetGithubRepoStatusResponse.ProtoReflect.Descriptor instead. +func (*GetGithubRepoStatusResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{118} } -type RemoveWhitelistedDomainRequest struct { +func (x *GetGithubRepoStatusResponse) GetHasAccess() bool { + if x != nil { + return x.HasAccess + } + return false +} + +func (x *GetGithubRepoStatusResponse) GetGrantAccessUrl() string { + if x != nil { + return x.GrantAccessUrl + } + return "" +} + +func (x *GetGithubRepoStatusResponse) GetDefaultBranch() string { + if x != nil { + return x.DefaultBranch + } + return "" +} + +type GetGithubUserStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` } -func (x *RemoveWhitelistedDomainRequest) Reset() { - *x = RemoveWhitelistedDomainRequest{} +func (x *GetGithubUserStatusRequest) Reset() { + *x = GetGithubUserStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7035,13 +7020,13 @@ func (x *RemoveWhitelistedDomainRequest) Reset() { } } -func (x *RemoveWhitelistedDomainRequest) String() string { +func (x *GetGithubUserStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveWhitelistedDomainRequest) ProtoMessage() {} +func (*GetGithubUserStatusRequest) ProtoMessage() {} -func (x *RemoveWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { +func (x *GetGithubUserStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7053,33 +7038,30 @@ func (x *RemoveWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RemoveWhitelistedDomainRequest.ProtoReflect.Descriptor instead. -func (*RemoveWhitelistedDomainRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetGithubUserStatusRequest.ProtoReflect.Descriptor instead. +func (*GetGithubUserStatusRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{119} } -func (x *RemoveWhitelistedDomainRequest) GetOrganization() string { - if x != nil { - return x.Organization - } - return "" -} - -func (x *RemoveWhitelistedDomainRequest) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -type RemoveWhitelistedDomainResponse struct { +type GetGithubUserStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + HasAccess bool `protobuf:"varint,1,opt,name=has_access,json=hasAccess,proto3" json:"has_access,omitempty"` + GrantAccessUrl string `protobuf:"bytes,2,opt,name=grant_access_url,json=grantAccessUrl,proto3" json:"grant_access_url,omitempty"` + AccessToken string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + Account string `protobuf:"bytes,4,opt,name=account,proto3" json:"account,omitempty"` + UserInstallationPermission GithubPermission `protobuf:"varint,6,opt,name=user_installation_permission,json=userInstallationPermission,proto3,enum=rill.admin.v1.GithubPermission" json:"user_installation_permission,omitempty"` + OrganizationInstallationPermissions map[string]GithubPermission `protobuf:"bytes,7,rep,name=organization_installation_permissions,json=organizationInstallationPermissions,proto3" json:"organization_installation_permissions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=rill.admin.v1.GithubPermission"` + // DEPRECATED: Use organization_installation_permissions instead. + // + // Deprecated: Marked as deprecated in rill/admin/v1/api.proto. + Organizations []string `protobuf:"bytes,5,rep,name=organizations,proto3" json:"organizations,omitempty"` } -func (x *RemoveWhitelistedDomainResponse) Reset() { - *x = RemoveWhitelistedDomainResponse{} +func (x *GetGithubUserStatusResponse) Reset() { + *x = GetGithubUserStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7087,13 +7069,13 @@ func (x *RemoveWhitelistedDomainResponse) Reset() { } } -func (x *RemoveWhitelistedDomainResponse) String() string { +func (x *GetGithubUserStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveWhitelistedDomainResponse) ProtoMessage() {} +func (*GetGithubUserStatusResponse) ProtoMessage() {} -func (x *RemoveWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { +func (x *GetGithubUserStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7105,83 +7087,87 @@ func (x *RemoveWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RemoveWhitelistedDomainResponse.ProtoReflect.Descriptor instead. -func (*RemoveWhitelistedDomainResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetGithubUserStatusResponse.ProtoReflect.Descriptor instead. +func (*GetGithubUserStatusResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{120} } -type ListWhitelistedDomainsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` +func (x *GetGithubUserStatusResponse) GetHasAccess() bool { + if x != nil { + return x.HasAccess + } + return false } -func (x *ListWhitelistedDomainsRequest) Reset() { - *x = ListWhitelistedDomainsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[121] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetGithubUserStatusResponse) GetGrantAccessUrl() string { + if x != nil { + return x.GrantAccessUrl } + return "" } -func (x *ListWhitelistedDomainsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *GetGithubUserStatusResponse) GetAccessToken() string { + if x != nil { + return x.AccessToken + } + return "" } -func (*ListWhitelistedDomainsRequest) ProtoMessage() {} +func (x *GetGithubUserStatusResponse) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} -func (x *ListWhitelistedDomainsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[121] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GetGithubUserStatusResponse) GetUserInstallationPermission() GithubPermission { + if x != nil { + return x.UserInstallationPermission } - return mi.MessageOf(x) + return GithubPermission_GITHUB_PERMISSION_UNSPECIFIED } -// Deprecated: Use ListWhitelistedDomainsRequest.ProtoReflect.Descriptor instead. -func (*ListWhitelistedDomainsRequest) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{121} +func (x *GetGithubUserStatusResponse) GetOrganizationInstallationPermissions() map[string]GithubPermission { + if x != nil { + return x.OrganizationInstallationPermissions + } + return nil } -func (x *ListWhitelistedDomainsRequest) GetOrganization() string { +// Deprecated: Marked as deprecated in rill/admin/v1/api.proto. +func (x *GetGithubUserStatusResponse) GetOrganizations() []string { if x != nil { - return x.Organization + return x.Organizations } - return "" + return nil } -type ListWhitelistedDomainsResponse struct { +type GetGitCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Domains []*WhitelistedDomain `protobuf:"bytes,1,rep,name=domains,proto3" json:"domains,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` } -func (x *ListWhitelistedDomainsResponse) Reset() { - *x = ListWhitelistedDomainsResponse{} +func (x *GetGitCredentialsRequest) Reset() { + *x = GetGitCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[122] + mi := &file_rill_admin_v1_api_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListWhitelistedDomainsResponse) String() string { +func (x *GetGitCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWhitelistedDomainsResponse) ProtoMessage() {} +func (*GetGitCredentialsRequest) ProtoMessage() {} -func (x *ListWhitelistedDomainsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[122] +func (x *GetGitCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7192,46 +7178,54 @@ func (x *ListWhitelistedDomainsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWhitelistedDomainsResponse.ProtoReflect.Descriptor instead. -func (*ListWhitelistedDomainsResponse) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{122} +// Deprecated: Use GetGitCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetGitCredentialsRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{121} } -func (x *ListWhitelistedDomainsResponse) GetDomains() []*WhitelistedDomain { +func (x *GetGitCredentialsRequest) GetOrganization() string { if x != nil { - return x.Domains + return x.Organization } - return nil + return "" } -type CreateProjectWhitelistedDomainRequest struct { +func (x *GetGitCredentialsRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +type GetGitCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain,omitempty"` - Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"` + RepoUrl string `protobuf:"bytes,1,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + Subpath string `protobuf:"bytes,4,opt,name=subpath,proto3" json:"subpath,omitempty"` + ProdBranch string `protobuf:"bytes,5,opt,name=prod_branch,json=prodBranch,proto3" json:"prod_branch,omitempty"` } -func (x *CreateProjectWhitelistedDomainRequest) Reset() { - *x = CreateProjectWhitelistedDomainRequest{} +func (x *GetGitCredentialsResponse) Reset() { + *x = GetGitCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[123] + mi := &file_rill_admin_v1_api_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateProjectWhitelistedDomainRequest) String() string { +func (x *GetGitCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateProjectWhitelistedDomainRequest) ProtoMessage() {} +func (*GetGitCredentialsResponse) ProtoMessage() {} -func (x *CreateProjectWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[123] +func (x *GetGitCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7242,47 +7236,117 @@ func (x *CreateProjectWhitelistedDomainRequest) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use CreateProjectWhitelistedDomainRequest.ProtoReflect.Descriptor instead. -func (*CreateProjectWhitelistedDomainRequest) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{123} +// Deprecated: Use GetGitCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetGitCredentialsResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{122} } -func (x *CreateProjectWhitelistedDomainRequest) GetOrganization() string { +func (x *GetGitCredentialsResponse) GetRepoUrl() string { if x != nil { - return x.Organization + return x.RepoUrl } return "" } -func (x *CreateProjectWhitelistedDomainRequest) GetProject() string { +func (x *GetGitCredentialsResponse) GetUsername() string { if x != nil { - return x.Project + return x.Username } return "" } -func (x *CreateProjectWhitelistedDomainRequest) GetDomain() string { +func (x *GetGitCredentialsResponse) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *GetGitCredentialsResponse) GetSubpath() string { + if x != nil { + return x.Subpath + } + return "" +} + +func (x *GetGitCredentialsResponse) GetProdBranch() string { + if x != nil { + return x.ProdBranch + } + return "" +} + +type CreateWhitelistedDomainRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` + Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` +} + +func (x *CreateWhitelistedDomainRequest) Reset() { + *x = CreateWhitelistedDomainRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateWhitelistedDomainRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateWhitelistedDomainRequest) ProtoMessage() {} + +func (x *CreateWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[123] + 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 CreateWhitelistedDomainRequest.ProtoReflect.Descriptor instead. +func (*CreateWhitelistedDomainRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{123} +} + +func (x *CreateWhitelistedDomainRequest) GetOrganization() string { + if x != nil { + return x.Organization + } + return "" +} + +func (x *CreateWhitelistedDomainRequest) GetDomain() string { if x != nil { return x.Domain } return "" } -func (x *CreateProjectWhitelistedDomainRequest) GetRole() string { +func (x *CreateWhitelistedDomainRequest) GetRole() string { if x != nil { return x.Role } return "" } -type CreateProjectWhitelistedDomainResponse struct { +type CreateWhitelistedDomainResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *CreateProjectWhitelistedDomainResponse) Reset() { - *x = CreateProjectWhitelistedDomainResponse{} +func (x *CreateWhitelistedDomainResponse) Reset() { + *x = CreateWhitelistedDomainResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7290,13 +7354,13 @@ func (x *CreateProjectWhitelistedDomainResponse) Reset() { } } -func (x *CreateProjectWhitelistedDomainResponse) String() string { +func (x *CreateWhitelistedDomainResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateProjectWhitelistedDomainResponse) ProtoMessage() {} +func (*CreateWhitelistedDomainResponse) ProtoMessage() {} -func (x *CreateProjectWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { +func (x *CreateWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7308,23 +7372,22 @@ func (x *CreateProjectWhitelistedDomainResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use CreateProjectWhitelistedDomainResponse.ProtoReflect.Descriptor instead. -func (*CreateProjectWhitelistedDomainResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateWhitelistedDomainResponse.ProtoReflect.Descriptor instead. +func (*CreateWhitelistedDomainResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{124} } -type RemoveProjectWhitelistedDomainRequest struct { +type RemoveWhitelistedDomainRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain,omitempty"` + Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` } -func (x *RemoveProjectWhitelistedDomainRequest) Reset() { - *x = RemoveProjectWhitelistedDomainRequest{} +func (x *RemoveWhitelistedDomainRequest) Reset() { + *x = RemoveWhitelistedDomainRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7332,13 +7395,13 @@ func (x *RemoveProjectWhitelistedDomainRequest) Reset() { } } -func (x *RemoveProjectWhitelistedDomainRequest) String() string { +func (x *RemoveWhitelistedDomainRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveProjectWhitelistedDomainRequest) ProtoMessage() {} +func (*RemoveWhitelistedDomainRequest) ProtoMessage() {} -func (x *RemoveProjectWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { +func (x *RemoveWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7350,40 +7413,33 @@ func (x *RemoveProjectWhitelistedDomainRequest) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use RemoveProjectWhitelistedDomainRequest.ProtoReflect.Descriptor instead. -func (*RemoveProjectWhitelistedDomainRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveWhitelistedDomainRequest.ProtoReflect.Descriptor instead. +func (*RemoveWhitelistedDomainRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{125} } -func (x *RemoveProjectWhitelistedDomainRequest) GetOrganization() string { +func (x *RemoveWhitelistedDomainRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *RemoveProjectWhitelistedDomainRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *RemoveProjectWhitelistedDomainRequest) GetDomain() string { +func (x *RemoveWhitelistedDomainRequest) GetDomain() string { if x != nil { return x.Domain } return "" } -type RemoveProjectWhitelistedDomainResponse struct { +type RemoveWhitelistedDomainResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *RemoveProjectWhitelistedDomainResponse) Reset() { - *x = RemoveProjectWhitelistedDomainResponse{} +func (x *RemoveWhitelistedDomainResponse) Reset() { + *x = RemoveWhitelistedDomainResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7391,13 +7447,13 @@ func (x *RemoveProjectWhitelistedDomainResponse) Reset() { } } -func (x *RemoveProjectWhitelistedDomainResponse) String() string { +func (x *RemoveWhitelistedDomainResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveProjectWhitelistedDomainResponse) ProtoMessage() {} +func (*RemoveWhitelistedDomainResponse) ProtoMessage() {} -func (x *RemoveProjectWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { +func (x *RemoveWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7409,22 +7465,21 @@ func (x *RemoveProjectWhitelistedDomainResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use RemoveProjectWhitelistedDomainResponse.ProtoReflect.Descriptor instead. -func (*RemoveProjectWhitelistedDomainResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveWhitelistedDomainResponse.ProtoReflect.Descriptor instead. +func (*RemoveWhitelistedDomainResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{126} } -type ListProjectWhitelistedDomainsRequest struct { +type ListWhitelistedDomainsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` } -func (x *ListProjectWhitelistedDomainsRequest) Reset() { - *x = ListProjectWhitelistedDomainsRequest{} +func (x *ListWhitelistedDomainsRequest) Reset() { + *x = ListWhitelistedDomainsRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7432,13 +7487,13 @@ func (x *ListProjectWhitelistedDomainsRequest) Reset() { } } -func (x *ListProjectWhitelistedDomainsRequest) String() string { +func (x *ListWhitelistedDomainsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectWhitelistedDomainsRequest) ProtoMessage() {} +func (*ListWhitelistedDomainsRequest) ProtoMessage() {} -func (x *ListProjectWhitelistedDomainsRequest) ProtoReflect() protoreflect.Message { +func (x *ListWhitelistedDomainsRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7450,26 +7505,19 @@ func (x *ListProjectWhitelistedDomainsRequest) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ListProjectWhitelistedDomainsRequest.ProtoReflect.Descriptor instead. -func (*ListProjectWhitelistedDomainsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListWhitelistedDomainsRequest.ProtoReflect.Descriptor instead. +func (*ListWhitelistedDomainsRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{127} } -func (x *ListProjectWhitelistedDomainsRequest) GetOrganization() string { +func (x *ListWhitelistedDomainsRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *ListProjectWhitelistedDomainsRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -type ListProjectWhitelistedDomainsResponse struct { +type ListWhitelistedDomainsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -7477,8 +7525,8 @@ type ListProjectWhitelistedDomainsResponse struct { Domains []*WhitelistedDomain `protobuf:"bytes,1,rep,name=domains,proto3" json:"domains,omitempty"` } -func (x *ListProjectWhitelistedDomainsResponse) Reset() { - *x = ListProjectWhitelistedDomainsResponse{} +func (x *ListWhitelistedDomainsResponse) Reset() { + *x = ListWhitelistedDomainsResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7486,13 +7534,13 @@ func (x *ListProjectWhitelistedDomainsResponse) Reset() { } } -func (x *ListProjectWhitelistedDomainsResponse) String() string { +func (x *ListWhitelistedDomainsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectWhitelistedDomainsResponse) ProtoMessage() {} +func (*ListWhitelistedDomainsResponse) ProtoMessage() {} -func (x *ListProjectWhitelistedDomainsResponse) ProtoReflect() protoreflect.Message { +func (x *ListWhitelistedDomainsResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7504,29 +7552,31 @@ func (x *ListProjectWhitelistedDomainsResponse) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use ListProjectWhitelistedDomainsResponse.ProtoReflect.Descriptor instead. -func (*ListProjectWhitelistedDomainsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListWhitelistedDomainsResponse.ProtoReflect.Descriptor instead. +func (*ListWhitelistedDomainsResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{128} } -func (x *ListProjectWhitelistedDomainsResponse) GetDomains() []*WhitelistedDomain { +func (x *ListWhitelistedDomainsResponse) GetDomains() []*WhitelistedDomain { if x != nil { return x.Domains } return nil } -type GetRepoMetaRequest struct { +type CreateProjectWhitelistedDomainRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain,omitempty"` + Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"` } -func (x *GetRepoMetaRequest) Reset() { - *x = GetRepoMetaRequest{} +func (x *CreateProjectWhitelistedDomainRequest) Reset() { + *x = CreateProjectWhitelistedDomainRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7534,13 +7584,13 @@ func (x *GetRepoMetaRequest) Reset() { } } -func (x *GetRepoMetaRequest) String() string { +func (x *CreateProjectWhitelistedDomainRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRepoMetaRequest) ProtoMessage() {} +func (*CreateProjectWhitelistedDomainRequest) ProtoMessage() {} -func (x *GetRepoMetaRequest) ProtoReflect() protoreflect.Message { +func (x *CreateProjectWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7552,37 +7602,47 @@ func (x *GetRepoMetaRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRepoMetaRequest.ProtoReflect.Descriptor instead. -func (*GetRepoMetaRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateProjectWhitelistedDomainRequest.ProtoReflect.Descriptor instead. +func (*CreateProjectWhitelistedDomainRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{129} } -func (x *GetRepoMetaRequest) GetProjectId() string { +func (x *CreateProjectWhitelistedDomainRequest) GetOrganization() string { if x != nil { - return x.ProjectId + return x.Organization } return "" } -func (x *GetRepoMetaRequest) GetBranch() string { +func (x *CreateProjectWhitelistedDomainRequest) GetProject() string { if x != nil { - return x.Branch + return x.Project } return "" } -type GetRepoMetaResponse struct { +func (x *CreateProjectWhitelistedDomainRequest) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +func (x *CreateProjectWhitelistedDomainRequest) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +type CreateProjectWhitelistedDomainResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - GitUrl string `protobuf:"bytes,1,opt,name=git_url,json=gitUrl,proto3" json:"git_url,omitempty"` - GitUrlExpiresOn *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=git_url_expires_on,json=gitUrlExpiresOn,proto3" json:"git_url_expires_on,omitempty"` - GitSubpath string `protobuf:"bytes,3,opt,name=git_subpath,json=gitSubpath,proto3" json:"git_subpath,omitempty"` } -func (x *GetRepoMetaResponse) Reset() { - *x = GetRepoMetaResponse{} +func (x *CreateProjectWhitelistedDomainResponse) Reset() { + *x = CreateProjectWhitelistedDomainResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7590,13 +7650,13 @@ func (x *GetRepoMetaResponse) Reset() { } } -func (x *GetRepoMetaResponse) String() string { +func (x *CreateProjectWhitelistedDomainResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRepoMetaResponse) ProtoMessage() {} +func (*CreateProjectWhitelistedDomainResponse) ProtoMessage() {} -func (x *GetRepoMetaResponse) ProtoReflect() protoreflect.Message { +func (x *CreateProjectWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7608,45 +7668,23 @@ func (x *GetRepoMetaResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRepoMetaResponse.ProtoReflect.Descriptor instead. -func (*GetRepoMetaResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateProjectWhitelistedDomainResponse.ProtoReflect.Descriptor instead. +func (*CreateProjectWhitelistedDomainResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{130} } -func (x *GetRepoMetaResponse) GetGitUrl() string { - if x != nil { - return x.GitUrl - } - return "" -} - -func (x *GetRepoMetaResponse) GetGitUrlExpiresOn() *timestamppb.Timestamp { - if x != nil { - return x.GitUrlExpiresOn - } - return nil -} - -func (x *GetRepoMetaResponse) GetGitSubpath() string { - if x != nil { - return x.GitSubpath - } - return "" -} - -type PullVirtualRepoRequest struct { +type RemoveProjectWhitelistedDomainRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - PageSize uint32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Domain string `protobuf:"bytes,3,opt,name=domain,proto3" json:"domain,omitempty"` } -func (x *PullVirtualRepoRequest) Reset() { - *x = PullVirtualRepoRequest{} +func (x *RemoveProjectWhitelistedDomainRequest) Reset() { + *x = RemoveProjectWhitelistedDomainRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7654,13 +7692,13 @@ func (x *PullVirtualRepoRequest) Reset() { } } -func (x *PullVirtualRepoRequest) String() string { +func (x *RemoveProjectWhitelistedDomainRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PullVirtualRepoRequest) ProtoMessage() {} +func (*RemoveProjectWhitelistedDomainRequest) ProtoMessage() {} -func (x *PullVirtualRepoRequest) ProtoReflect() protoreflect.Message { +func (x *RemoveProjectWhitelistedDomainRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7672,50 +7710,40 @@ func (x *PullVirtualRepoRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PullVirtualRepoRequest.ProtoReflect.Descriptor instead. -func (*PullVirtualRepoRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveProjectWhitelistedDomainRequest.ProtoReflect.Descriptor instead. +func (*RemoveProjectWhitelistedDomainRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{131} } -func (x *PullVirtualRepoRequest) GetProjectId() string { +func (x *RemoveProjectWhitelistedDomainRequest) GetOrganization() string { if x != nil { - return x.ProjectId + return x.Organization } return "" } -func (x *PullVirtualRepoRequest) GetBranch() string { +func (x *RemoveProjectWhitelistedDomainRequest) GetProject() string { if x != nil { - return x.Branch + return x.Project } return "" } -func (x *PullVirtualRepoRequest) GetPageSize() uint32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *PullVirtualRepoRequest) GetPageToken() string { +func (x *RemoveProjectWhitelistedDomainRequest) GetDomain() string { if x != nil { - return x.PageToken + return x.Domain } return "" } -type PullVirtualRepoResponse struct { +type RemoveProjectWhitelistedDomainResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Files []*VirtualFile `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *PullVirtualRepoResponse) Reset() { - *x = PullVirtualRepoResponse{} +func (x *RemoveProjectWhitelistedDomainResponse) Reset() { + *x = RemoveProjectWhitelistedDomainResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7723,13 +7751,13 @@ func (x *PullVirtualRepoResponse) Reset() { } } -func (x *PullVirtualRepoResponse) String() string { +func (x *RemoveProjectWhitelistedDomainResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PullVirtualRepoResponse) ProtoMessage() {} +func (*RemoveProjectWhitelistedDomainResponse) ProtoMessage() {} -func (x *PullVirtualRepoResponse) ProtoReflect() protoreflect.Message { +func (x *RemoveProjectWhitelistedDomainResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7741,39 +7769,22 @@ func (x *PullVirtualRepoResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PullVirtualRepoResponse.ProtoReflect.Descriptor instead. -func (*PullVirtualRepoResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RemoveProjectWhitelistedDomainResponse.ProtoReflect.Descriptor instead. +func (*RemoveProjectWhitelistedDomainResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{132} } -func (x *PullVirtualRepoResponse) GetFiles() []*VirtualFile { - if x != nil { - return x.Files - } - return nil -} - -func (x *PullVirtualRepoResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -type GetReportMetaRequest struct { +type ListProjectWhitelistedDomainsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - Report string `protobuf:"bytes,3,opt,name=report,proto3" json:"report,omitempty"` - Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ExecutionTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=execution_time,json=executionTime,proto3" json:"execution_time,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` } -func (x *GetReportMetaRequest) Reset() { - *x = GetReportMetaRequest{} +func (x *ListProjectWhitelistedDomainsRequest) Reset() { + *x = ListProjectWhitelistedDomainsRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7781,13 +7792,13 @@ func (x *GetReportMetaRequest) Reset() { } } -func (x *GetReportMetaRequest) String() string { +func (x *ListProjectWhitelistedDomainsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReportMetaRequest) ProtoMessage() {} +func (*ListProjectWhitelistedDomainsRequest) ProtoMessage() {} -func (x *GetReportMetaRequest) ProtoReflect() protoreflect.Message { +func (x *ListProjectWhitelistedDomainsRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7799,73 +7810,98 @@ func (x *GetReportMetaRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReportMetaRequest.ProtoReflect.Descriptor instead. -func (*GetReportMetaRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListProjectWhitelistedDomainsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectWhitelistedDomainsRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{133} } -func (x *GetReportMetaRequest) GetProjectId() string { +func (x *ListProjectWhitelistedDomainsRequest) GetOrganization() string { if x != nil { - return x.ProjectId + return x.Organization } return "" } -func (x *GetReportMetaRequest) GetBranch() string { +func (x *ListProjectWhitelistedDomainsRequest) GetProject() string { if x != nil { - return x.Branch + return x.Project } return "" } -func (x *GetReportMetaRequest) GetReport() string { - if x != nil { - return x.Report +type ListProjectWhitelistedDomainsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Domains []*WhitelistedDomain `protobuf:"bytes,1,rep,name=domains,proto3" json:"domains,omitempty"` +} + +func (x *ListProjectWhitelistedDomainsResponse) Reset() { + *x = ListProjectWhitelistedDomainsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *GetReportMetaRequest) GetAnnotations() map[string]string { - if x != nil { - return x.Annotations +func (x *ListProjectWhitelistedDomainsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProjectWhitelistedDomainsResponse) ProtoMessage() {} + +func (x *ListProjectWhitelistedDomainsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[134] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *GetReportMetaRequest) GetExecutionTime() *timestamppb.Timestamp { +// Deprecated: Use ListProjectWhitelistedDomainsResponse.ProtoReflect.Descriptor instead. +func (*ListProjectWhitelistedDomainsResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{134} +} + +func (x *ListProjectWhitelistedDomainsResponse) GetDomains() []*WhitelistedDomain { if x != nil { - return x.ExecutionTime + return x.Domains } return nil } -type GetReportMetaResponse struct { +type GetRepoMetaRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` - ExportUrl string `protobuf:"bytes,2,opt,name=export_url,json=exportUrl,proto3" json:"export_url,omitempty"` - EditUrl string `protobuf:"bytes,3,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` + ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` } -func (x *GetReportMetaResponse) Reset() { - *x = GetReportMetaResponse{} +func (x *GetRepoMetaRequest) Reset() { + *x = GetRepoMetaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[134] + mi := &file_rill_admin_v1_api_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetReportMetaResponse) String() string { +func (x *GetRepoMetaRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReportMetaResponse) ProtoMessage() {} +func (*GetRepoMetaRequest) ProtoMessage() {} -func (x *GetReportMetaResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[134] +func (x *GetRepoMetaRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7876,65 +7912,52 @@ func (x *GetReportMetaResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReportMetaResponse.ProtoReflect.Descriptor instead. -func (*GetReportMetaResponse) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{134} -} - -func (x *GetReportMetaResponse) GetOpenUrl() string { - if x != nil { - return x.OpenUrl - } - return "" +// Deprecated: Use GetRepoMetaRequest.ProtoReflect.Descriptor instead. +func (*GetRepoMetaRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{135} } -func (x *GetReportMetaResponse) GetExportUrl() string { +func (x *GetRepoMetaRequest) GetProjectId() string { if x != nil { - return x.ExportUrl + return x.ProjectId } return "" } -func (x *GetReportMetaResponse) GetEditUrl() string { +func (x *GetRepoMetaRequest) GetBranch() string { if x != nil { - return x.EditUrl + return x.Branch } return "" } -type GetAlertMetaRequest struct { +type GetRepoMetaResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` - Alert string `protobuf:"bytes,3,opt,name=alert,proto3" json:"alert,omitempty"` - Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Types that are assignable to QueryFor: - // - // *GetAlertMetaRequest_QueryForUserId - // *GetAlertMetaRequest_QueryForUserEmail - QueryFor isGetAlertMetaRequest_QueryFor `protobuf_oneof:"query_for"` + GitUrl string `protobuf:"bytes,1,opt,name=git_url,json=gitUrl,proto3" json:"git_url,omitempty"` + GitUrlExpiresOn *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=git_url_expires_on,json=gitUrlExpiresOn,proto3" json:"git_url_expires_on,omitempty"` + GitSubpath string `protobuf:"bytes,3,opt,name=git_subpath,json=gitSubpath,proto3" json:"git_subpath,omitempty"` } -func (x *GetAlertMetaRequest) Reset() { - *x = GetAlertMetaRequest{} +func (x *GetRepoMetaResponse) Reset() { + *x = GetRepoMetaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[135] + mi := &file_rill_admin_v1_api_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAlertMetaRequest) String() string { +func (x *GetRepoMetaResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAlertMetaRequest) ProtoMessage() {} +func (*GetRepoMetaResponse) ProtoMessage() {} -func (x *GetAlertMetaRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[135] +func (x *GetRepoMetaResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7945,103 +7968,60 @@ func (x *GetAlertMetaRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAlertMetaRequest.ProtoReflect.Descriptor instead. -func (*GetAlertMetaRequest) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{135} +// Deprecated: Use GetRepoMetaResponse.ProtoReflect.Descriptor instead. +func (*GetRepoMetaResponse) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{136} } -func (x *GetAlertMetaRequest) GetProjectId() string { +func (x *GetRepoMetaResponse) GetGitUrl() string { if x != nil { - return x.ProjectId + return x.GitUrl } return "" } -func (x *GetAlertMetaRequest) GetBranch() string { +func (x *GetRepoMetaResponse) GetGitUrlExpiresOn() *timestamppb.Timestamp { if x != nil { - return x.Branch + return x.GitUrlExpiresOn } - return "" + return nil } -func (x *GetAlertMetaRequest) GetAlert() string { +func (x *GetRepoMetaResponse) GetGitSubpath() string { if x != nil { - return x.Alert + return x.GitSubpath } return "" } -func (x *GetAlertMetaRequest) GetAnnotations() map[string]string { - if x != nil { - return x.Annotations - } - return nil -} - -func (m *GetAlertMetaRequest) GetQueryFor() isGetAlertMetaRequest_QueryFor { - if m != nil { - return m.QueryFor - } - return nil -} - -func (x *GetAlertMetaRequest) GetQueryForUserId() string { - if x, ok := x.GetQueryFor().(*GetAlertMetaRequest_QueryForUserId); ok { - return x.QueryForUserId - } - return "" -} - -func (x *GetAlertMetaRequest) GetQueryForUserEmail() string { - if x, ok := x.GetQueryFor().(*GetAlertMetaRequest_QueryForUserEmail); ok { - return x.QueryForUserEmail - } - return "" -} - -type isGetAlertMetaRequest_QueryFor interface { - isGetAlertMetaRequest_QueryFor() -} - -type GetAlertMetaRequest_QueryForUserId struct { - QueryForUserId string `protobuf:"bytes,5,opt,name=query_for_user_id,json=queryForUserId,proto3,oneof"` -} - -type GetAlertMetaRequest_QueryForUserEmail struct { - QueryForUserEmail string `protobuf:"bytes,6,opt,name=query_for_user_email,json=queryForUserEmail,proto3,oneof"` -} - -func (*GetAlertMetaRequest_QueryForUserId) isGetAlertMetaRequest_QueryFor() {} - -func (*GetAlertMetaRequest_QueryForUserEmail) isGetAlertMetaRequest_QueryFor() {} - -type GetAlertMetaResponse struct { +type PullVirtualRepoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` - EditUrl string `protobuf:"bytes,2,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` - QueryForAttributes *structpb.Struct `protobuf:"bytes,3,opt,name=query_for_attributes,json=queryForAttributes,proto3" json:"query_for_attributes,omitempty"` + ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + PageSize uint32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } -func (x *GetAlertMetaResponse) Reset() { - *x = GetAlertMetaResponse{} +func (x *PullVirtualRepoRequest) Reset() { + *x = PullVirtualRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[136] + mi := &file_rill_admin_v1_api_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAlertMetaResponse) String() string { +func (x *PullVirtualRepoRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAlertMetaResponse) ProtoMessage() {} +func (*PullVirtualRepoRequest) ProtoMessage() {} -func (x *GetAlertMetaResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[136] +func (x *PullVirtualRepoRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8052,105 +8032,50 @@ func (x *GetAlertMetaResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAlertMetaResponse.ProtoReflect.Descriptor instead. -func (*GetAlertMetaResponse) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{136} +// Deprecated: Use PullVirtualRepoRequest.ProtoReflect.Descriptor instead. +func (*PullVirtualRepoRequest) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{137} } -func (x *GetAlertMetaResponse) GetOpenUrl() string { +func (x *PullVirtualRepoRequest) GetProjectId() string { if x != nil { - return x.OpenUrl + return x.ProjectId } return "" } -func (x *GetAlertMetaResponse) GetEditUrl() string { +func (x *PullVirtualRepoRequest) GetBranch() string { if x != nil { - return x.EditUrl + return x.Branch } return "" } -func (x *GetAlertMetaResponse) GetQueryForAttributes() *structpb.Struct { - if x != nil { - return x.QueryForAttributes - } - return nil -} - -type CreateReportRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Options *ReportOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` -} - -func (x *CreateReportRequest) Reset() { - *x = CreateReportRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[137] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateReportRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateReportRequest) ProtoMessage() {} - -func (x *CreateReportRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[137] - 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 CreateReportRequest.ProtoReflect.Descriptor instead. -func (*CreateReportRequest) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{137} -} - -func (x *CreateReportRequest) GetOrganization() string { +func (x *PullVirtualRepoRequest) GetPageSize() uint32 { if x != nil { - return x.Organization + return x.PageSize } - return "" + return 0 } -func (x *CreateReportRequest) GetProject() string { +func (x *PullVirtualRepoRequest) GetPageToken() string { if x != nil { - return x.Project + return x.PageToken } return "" } -func (x *CreateReportRequest) GetOptions() *ReportOptions { - if x != nil { - return x.Options - } - return nil -} - -type CreateReportResponse struct { +type PullVirtualRepoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Files []*VirtualFile `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *CreateReportResponse) Reset() { - *x = CreateReportResponse{} +func (x *PullVirtualRepoResponse) Reset() { + *x = PullVirtualRepoResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8158,13 +8083,13 @@ func (x *CreateReportResponse) Reset() { } } -func (x *CreateReportResponse) String() string { +func (x *PullVirtualRepoResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateReportResponse) ProtoMessage() {} +func (*PullVirtualRepoResponse) ProtoMessage() {} -func (x *CreateReportResponse) ProtoReflect() protoreflect.Message { +func (x *PullVirtualRepoResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8176,31 +8101,39 @@ func (x *CreateReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateReportResponse.ProtoReflect.Descriptor instead. -func (*CreateReportResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PullVirtualRepoResponse.ProtoReflect.Descriptor instead. +func (*PullVirtualRepoResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{138} } -func (x *CreateReportResponse) GetName() string { +func (x *PullVirtualRepoResponse) GetFiles() []*VirtualFile { if x != nil { - return x.Name + return x.Files + } + return nil +} + +func (x *PullVirtualRepoResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } -type EditReportRequest struct { +type GetReportMetaRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Options *ReportOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Report string `protobuf:"bytes,3,opt,name=report,proto3" json:"report,omitempty"` + Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ExecutionTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=execution_time,json=executionTime,proto3" json:"execution_time,omitempty"` } -func (x *EditReportRequest) Reset() { - *x = EditReportRequest{} +func (x *GetReportMetaRequest) Reset() { + *x = GetReportMetaRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8208,13 +8141,13 @@ func (x *EditReportRequest) Reset() { } } -func (x *EditReportRequest) String() string { +func (x *GetReportMetaRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EditReportRequest) ProtoMessage() {} +func (*GetReportMetaRequest) ProtoMessage() {} -func (x *EditReportRequest) ProtoReflect() protoreflect.Message { +func (x *GetReportMetaRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8226,47 +8159,58 @@ func (x *EditReportRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EditReportRequest.ProtoReflect.Descriptor instead. -func (*EditReportRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetReportMetaRequest.ProtoReflect.Descriptor instead. +func (*GetReportMetaRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{139} } -func (x *EditReportRequest) GetOrganization() string { +func (x *GetReportMetaRequest) GetProjectId() string { if x != nil { - return x.Organization + return x.ProjectId } return "" } -func (x *EditReportRequest) GetProject() string { +func (x *GetReportMetaRequest) GetBranch() string { if x != nil { - return x.Project + return x.Branch } return "" } -func (x *EditReportRequest) GetName() string { +func (x *GetReportMetaRequest) GetReport() string { if x != nil { - return x.Name + return x.Report } return "" } -func (x *EditReportRequest) GetOptions() *ReportOptions { +func (x *GetReportMetaRequest) GetAnnotations() map[string]string { if x != nil { - return x.Options + return x.Annotations } return nil } -type EditReportResponse struct { +func (x *GetReportMetaRequest) GetExecutionTime() *timestamppb.Timestamp { + if x != nil { + return x.ExecutionTime + } + return nil +} + +type GetReportMetaResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` + ExportUrl string `protobuf:"bytes,2,opt,name=export_url,json=exportUrl,proto3" json:"export_url,omitempty"` + EditUrl string `protobuf:"bytes,3,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` } -func (x *EditReportResponse) Reset() { - *x = EditReportResponse{} +func (x *GetReportMetaResponse) Reset() { + *x = GetReportMetaResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8274,13 +8218,13 @@ func (x *EditReportResponse) Reset() { } } -func (x *EditReportResponse) String() string { +func (x *GetReportMetaResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EditReportResponse) ProtoMessage() {} +func (*GetReportMetaResponse) ProtoMessage() {} -func (x *EditReportResponse) ProtoReflect() protoreflect.Message { +func (x *GetReportMetaResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8292,23 +8236,50 @@ func (x *EditReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EditReportResponse.ProtoReflect.Descriptor instead. -func (*EditReportResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetReportMetaResponse.ProtoReflect.Descriptor instead. +func (*GetReportMetaResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{140} } -type UnsubscribeReportRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` +func (x *GetReportMetaResponse) GetOpenUrl() string { + if x != nil { + return x.OpenUrl + } + return "" } -func (x *UnsubscribeReportRequest) Reset() { - *x = UnsubscribeReportRequest{} +func (x *GetReportMetaResponse) GetExportUrl() string { + if x != nil { + return x.ExportUrl + } + return "" +} + +func (x *GetReportMetaResponse) GetEditUrl() string { + if x != nil { + return x.EditUrl + } + return "" +} + +type GetAlertMetaRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` + Alert string `protobuf:"bytes,3,opt,name=alert,proto3" json:"alert,omitempty"` + Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Types that are assignable to QueryFor: + // + // *GetAlertMetaRequest_QueryForUserId + // *GetAlertMetaRequest_QueryForUserEmail + QueryFor isGetAlertMetaRequest_QueryFor `protobuf_oneof:"query_for"` +} + +func (x *GetAlertMetaRequest) Reset() { + *x = GetAlertMetaRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8316,13 +8287,13 @@ func (x *UnsubscribeReportRequest) Reset() { } } -func (x *UnsubscribeReportRequest) String() string { +func (x *GetAlertMetaRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UnsubscribeReportRequest) ProtoMessage() {} +func (*GetAlertMetaRequest) ProtoMessage() {} -func (x *UnsubscribeReportRequest) ProtoReflect() protoreflect.Message { +func (x *GetAlertMetaRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8334,40 +8305,88 @@ func (x *UnsubscribeReportRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UnsubscribeReportRequest.ProtoReflect.Descriptor instead. -func (*UnsubscribeReportRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAlertMetaRequest.ProtoReflect.Descriptor instead. +func (*GetAlertMetaRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{141} } -func (x *UnsubscribeReportRequest) GetOrganization() string { +func (x *GetAlertMetaRequest) GetProjectId() string { if x != nil { - return x.Organization + return x.ProjectId } return "" } -func (x *UnsubscribeReportRequest) GetProject() string { +func (x *GetAlertMetaRequest) GetBranch() string { if x != nil { - return x.Project + return x.Branch } return "" } -func (x *UnsubscribeReportRequest) GetName() string { +func (x *GetAlertMetaRequest) GetAlert() string { if x != nil { - return x.Name + return x.Alert } return "" } -type UnsubscribeReportResponse struct { +func (x *GetAlertMetaRequest) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + +func (m *GetAlertMetaRequest) GetQueryFor() isGetAlertMetaRequest_QueryFor { + if m != nil { + return m.QueryFor + } + return nil +} + +func (x *GetAlertMetaRequest) GetQueryForUserId() string { + if x, ok := x.GetQueryFor().(*GetAlertMetaRequest_QueryForUserId); ok { + return x.QueryForUserId + } + return "" +} + +func (x *GetAlertMetaRequest) GetQueryForUserEmail() string { + if x, ok := x.GetQueryFor().(*GetAlertMetaRequest_QueryForUserEmail); ok { + return x.QueryForUserEmail + } + return "" +} + +type isGetAlertMetaRequest_QueryFor interface { + isGetAlertMetaRequest_QueryFor() +} + +type GetAlertMetaRequest_QueryForUserId struct { + QueryForUserId string `protobuf:"bytes,5,opt,name=query_for_user_id,json=queryForUserId,proto3,oneof"` +} + +type GetAlertMetaRequest_QueryForUserEmail struct { + QueryForUserEmail string `protobuf:"bytes,6,opt,name=query_for_user_email,json=queryForUserEmail,proto3,oneof"` +} + +func (*GetAlertMetaRequest_QueryForUserId) isGetAlertMetaRequest_QueryFor() {} + +func (*GetAlertMetaRequest_QueryForUserEmail) isGetAlertMetaRequest_QueryFor() {} + +type GetAlertMetaResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + OpenUrl string `protobuf:"bytes,1,opt,name=open_url,json=openUrl,proto3" json:"open_url,omitempty"` + EditUrl string `protobuf:"bytes,2,opt,name=edit_url,json=editUrl,proto3" json:"edit_url,omitempty"` + QueryForAttributes *structpb.Struct `protobuf:"bytes,3,opt,name=query_for_attributes,json=queryForAttributes,proto3" json:"query_for_attributes,omitempty"` } -func (x *UnsubscribeReportResponse) Reset() { - *x = UnsubscribeReportResponse{} +func (x *GetAlertMetaResponse) Reset() { + *x = GetAlertMetaResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8375,13 +8394,13 @@ func (x *UnsubscribeReportResponse) Reset() { } } -func (x *UnsubscribeReportResponse) String() string { +func (x *GetAlertMetaResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UnsubscribeReportResponse) ProtoMessage() {} +func (*GetAlertMetaResponse) ProtoMessage() {} -func (x *UnsubscribeReportResponse) ProtoReflect() protoreflect.Message { +func (x *GetAlertMetaResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8393,23 +8412,44 @@ func (x *UnsubscribeReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UnsubscribeReportResponse.ProtoReflect.Descriptor instead. -func (*UnsubscribeReportResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAlertMetaResponse.ProtoReflect.Descriptor instead. +func (*GetAlertMetaResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{142} } -type DeleteReportRequest struct { +func (x *GetAlertMetaResponse) GetOpenUrl() string { + if x != nil { + return x.OpenUrl + } + return "" +} + +func (x *GetAlertMetaResponse) GetEditUrl() string { + if x != nil { + return x.EditUrl + } + return "" +} + +func (x *GetAlertMetaResponse) GetQueryForAttributes() *structpb.Struct { + if x != nil { + return x.QueryForAttributes + } + return nil +} + +type CreateReportRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Options *ReportOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` } -func (x *DeleteReportRequest) Reset() { - *x = DeleteReportRequest{} +func (x *CreateReportRequest) Reset() { + *x = CreateReportRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8417,13 +8457,13 @@ func (x *DeleteReportRequest) Reset() { } } -func (x *DeleteReportRequest) String() string { +func (x *CreateReportRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteReportRequest) ProtoMessage() {} +func (*CreateReportRequest) ProtoMessage() {} -func (x *DeleteReportRequest) ProtoReflect() protoreflect.Message { +func (x *CreateReportRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8435,40 +8475,42 @@ func (x *DeleteReportRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteReportRequest.ProtoReflect.Descriptor instead. -func (*DeleteReportRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateReportRequest.ProtoReflect.Descriptor instead. +func (*CreateReportRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{143} } -func (x *DeleteReportRequest) GetOrganization() string { +func (x *CreateReportRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *DeleteReportRequest) GetProject() string { +func (x *CreateReportRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteReportRequest) GetName() string { +func (x *CreateReportRequest) GetOptions() *ReportOptions { if x != nil { - return x.Name + return x.Options } - return "" + return nil } -type DeleteReportResponse struct { +type CreateReportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteReportResponse) Reset() { - *x = DeleteReportResponse{} +func (x *CreateReportResponse) Reset() { + *x = CreateReportResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8476,13 +8518,13 @@ func (x *DeleteReportResponse) Reset() { } } -func (x *DeleteReportResponse) String() string { +func (x *CreateReportResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteReportResponse) ProtoMessage() {} +func (*CreateReportResponse) ProtoMessage() {} -func (x *DeleteReportResponse) ProtoReflect() protoreflect.Message { +func (x *CreateReportResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8494,23 +8536,31 @@ func (x *DeleteReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteReportResponse.ProtoReflect.Descriptor instead. -func (*DeleteReportResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateReportResponse.ProtoReflect.Descriptor instead. +func (*CreateReportResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{144} } -type TriggerReportRequest struct { +func (x *CreateReportResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type EditReportRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Options *ReportOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` } -func (x *TriggerReportRequest) Reset() { - *x = TriggerReportRequest{} +func (x *EditReportRequest) Reset() { + *x = EditReportRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8518,13 +8568,13 @@ func (x *TriggerReportRequest) Reset() { } } -func (x *TriggerReportRequest) String() string { +func (x *EditReportRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TriggerReportRequest) ProtoMessage() {} +func (*EditReportRequest) ProtoMessage() {} -func (x *TriggerReportRequest) ProtoReflect() protoreflect.Message { +func (x *EditReportRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8536,40 +8586,47 @@ func (x *TriggerReportRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TriggerReportRequest.ProtoReflect.Descriptor instead. -func (*TriggerReportRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use EditReportRequest.ProtoReflect.Descriptor instead. +func (*EditReportRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{145} } -func (x *TriggerReportRequest) GetOrganization() string { +func (x *EditReportRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *TriggerReportRequest) GetProject() string { +func (x *EditReportRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *TriggerReportRequest) GetName() string { +func (x *EditReportRequest) GetName() string { if x != nil { return x.Name } return "" } -type TriggerReportResponse struct { +func (x *EditReportRequest) GetOptions() *ReportOptions { + if x != nil { + return x.Options + } + return nil +} + +type EditReportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *TriggerReportResponse) Reset() { - *x = TriggerReportResponse{} +func (x *EditReportResponse) Reset() { + *x = EditReportResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8577,13 +8634,13 @@ func (x *TriggerReportResponse) Reset() { } } -func (x *TriggerReportResponse) String() string { +func (x *EditReportResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TriggerReportResponse) ProtoMessage() {} +func (*EditReportResponse) ProtoMessage() {} -func (x *TriggerReportResponse) ProtoReflect() protoreflect.Message { +func (x *EditReportResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8595,23 +8652,23 @@ func (x *TriggerReportResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TriggerReportResponse.ProtoReflect.Descriptor instead. -func (*TriggerReportResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use EditReportResponse.ProtoReflect.Descriptor instead. +func (*EditReportResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{146} } -type GenerateReportYAMLRequest struct { +type UnsubscribeReportRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Options *ReportOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` -} + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` +} -func (x *GenerateReportYAMLRequest) Reset() { - *x = GenerateReportYAMLRequest{} +func (x *UnsubscribeReportRequest) Reset() { + *x = UnsubscribeReportRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8619,13 +8676,13 @@ func (x *GenerateReportYAMLRequest) Reset() { } } -func (x *GenerateReportYAMLRequest) String() string { +func (x *UnsubscribeReportRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenerateReportYAMLRequest) ProtoMessage() {} +func (*UnsubscribeReportRequest) ProtoMessage() {} -func (x *GenerateReportYAMLRequest) ProtoReflect() protoreflect.Message { +func (x *UnsubscribeReportRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8637,42 +8694,40 @@ func (x *GenerateReportYAMLRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GenerateReportYAMLRequest.ProtoReflect.Descriptor instead. -func (*GenerateReportYAMLRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UnsubscribeReportRequest.ProtoReflect.Descriptor instead. +func (*UnsubscribeReportRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{147} } -func (x *GenerateReportYAMLRequest) GetOrganization() string { +func (x *UnsubscribeReportRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *GenerateReportYAMLRequest) GetProject() string { +func (x *UnsubscribeReportRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GenerateReportYAMLRequest) GetOptions() *ReportOptions { +func (x *UnsubscribeReportRequest) GetName() string { if x != nil { - return x.Options + return x.Name } - return nil + return "" } -type GenerateReportYAMLResponse struct { +type UnsubscribeReportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *GenerateReportYAMLResponse) Reset() { - *x = GenerateReportYAMLResponse{} +func (x *UnsubscribeReportResponse) Reset() { + *x = UnsubscribeReportResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8680,13 +8735,13 @@ func (x *GenerateReportYAMLResponse) Reset() { } } -func (x *GenerateReportYAMLResponse) String() string { +func (x *UnsubscribeReportResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenerateReportYAMLResponse) ProtoMessage() {} +func (*UnsubscribeReportResponse) ProtoMessage() {} -func (x *GenerateReportYAMLResponse) ProtoReflect() protoreflect.Message { +func (x *UnsubscribeReportResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8698,30 +8753,23 @@ func (x *GenerateReportYAMLResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GenerateReportYAMLResponse.ProtoReflect.Descriptor instead. -func (*GenerateReportYAMLResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UnsubscribeReportResponse.ProtoReflect.Descriptor instead. +func (*UnsubscribeReportResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{148} } -func (x *GenerateReportYAMLResponse) GetYaml() string { - if x != nil { - return x.Yaml - } - return "" -} - -type CreateAlertRequest struct { +type DeleteReportRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Options *AlertOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *CreateAlertRequest) Reset() { - *x = CreateAlertRequest{} +func (x *DeleteReportRequest) Reset() { + *x = DeleteReportRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8729,13 +8777,13 @@ func (x *CreateAlertRequest) Reset() { } } -func (x *CreateAlertRequest) String() string { +func (x *DeleteReportRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAlertRequest) ProtoMessage() {} +func (*DeleteReportRequest) ProtoMessage() {} -func (x *CreateAlertRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteReportRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8747,42 +8795,40 @@ func (x *CreateAlertRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAlertRequest.ProtoReflect.Descriptor instead. -func (*CreateAlertRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteReportRequest.ProtoReflect.Descriptor instead. +func (*DeleteReportRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{149} } -func (x *CreateAlertRequest) GetOrganization() string { +func (x *DeleteReportRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *CreateAlertRequest) GetProject() string { +func (x *DeleteReportRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *CreateAlertRequest) GetOptions() *AlertOptions { +func (x *DeleteReportRequest) GetName() string { if x != nil { - return x.Options + return x.Name } - return nil + return "" } -type CreateAlertResponse struct { +type DeleteReportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *CreateAlertResponse) Reset() { - *x = CreateAlertResponse{} +func (x *DeleteReportResponse) Reset() { + *x = DeleteReportResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8790,13 +8836,13 @@ func (x *CreateAlertResponse) Reset() { } } -func (x *CreateAlertResponse) String() string { +func (x *DeleteReportResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAlertResponse) ProtoMessage() {} +func (*DeleteReportResponse) ProtoMessage() {} -func (x *CreateAlertResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteReportResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8808,31 +8854,23 @@ func (x *CreateAlertResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAlertResponse.ProtoReflect.Descriptor instead. -func (*CreateAlertResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteReportResponse.ProtoReflect.Descriptor instead. +func (*DeleteReportResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{150} } -func (x *CreateAlertResponse) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -type EditAlertRequest struct { +type TriggerReportRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Options *AlertOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *EditAlertRequest) Reset() { - *x = EditAlertRequest{} +func (x *TriggerReportRequest) Reset() { + *x = TriggerReportRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8840,13 +8878,13 @@ func (x *EditAlertRequest) Reset() { } } -func (x *EditAlertRequest) String() string { +func (x *TriggerReportRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EditAlertRequest) ProtoMessage() {} +func (*TriggerReportRequest) ProtoMessage() {} -func (x *EditAlertRequest) ProtoReflect() protoreflect.Message { +func (x *TriggerReportRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8858,47 +8896,40 @@ func (x *EditAlertRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EditAlertRequest.ProtoReflect.Descriptor instead. -func (*EditAlertRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use TriggerReportRequest.ProtoReflect.Descriptor instead. +func (*TriggerReportRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{151} } -func (x *EditAlertRequest) GetOrganization() string { +func (x *TriggerReportRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *EditAlertRequest) GetProject() string { +func (x *TriggerReportRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *EditAlertRequest) GetName() string { +func (x *TriggerReportRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *EditAlertRequest) GetOptions() *AlertOptions { - if x != nil { - return x.Options - } - return nil -} - -type EditAlertResponse struct { +type TriggerReportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *EditAlertResponse) Reset() { - *x = EditAlertResponse{} +func (x *TriggerReportResponse) Reset() { + *x = TriggerReportResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8906,13 +8937,13 @@ func (x *EditAlertResponse) Reset() { } } -func (x *EditAlertResponse) String() string { +func (x *TriggerReportResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EditAlertResponse) ProtoMessage() {} +func (*TriggerReportResponse) ProtoMessage() {} -func (x *EditAlertResponse) ProtoReflect() protoreflect.Message { +func (x *TriggerReportResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8924,23 +8955,23 @@ func (x *EditAlertResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EditAlertResponse.ProtoReflect.Descriptor instead. -func (*EditAlertResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use TriggerReportResponse.ProtoReflect.Descriptor instead. +func (*TriggerReportResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{152} } -type UnsubscribeAlertRequest struct { +type GenerateReportYAMLRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Options *ReportOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` } -func (x *UnsubscribeAlertRequest) Reset() { - *x = UnsubscribeAlertRequest{} +func (x *GenerateReportYAMLRequest) Reset() { + *x = GenerateReportYAMLRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8948,13 +8979,13 @@ func (x *UnsubscribeAlertRequest) Reset() { } } -func (x *UnsubscribeAlertRequest) String() string { +func (x *GenerateReportYAMLRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UnsubscribeAlertRequest) ProtoMessage() {} +func (*GenerateReportYAMLRequest) ProtoMessage() {} -func (x *UnsubscribeAlertRequest) ProtoReflect() protoreflect.Message { +func (x *GenerateReportYAMLRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8966,40 +8997,42 @@ func (x *UnsubscribeAlertRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UnsubscribeAlertRequest.ProtoReflect.Descriptor instead. -func (*UnsubscribeAlertRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GenerateReportYAMLRequest.ProtoReflect.Descriptor instead. +func (*GenerateReportYAMLRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{153} } -func (x *UnsubscribeAlertRequest) GetOrganization() string { +func (x *GenerateReportYAMLRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *UnsubscribeAlertRequest) GetProject() string { +func (x *GenerateReportYAMLRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UnsubscribeAlertRequest) GetName() string { +func (x *GenerateReportYAMLRequest) GetOptions() *ReportOptions { if x != nil { - return x.Name + return x.Options } - return "" + return nil } -type UnsubscribeAlertResponse struct { +type GenerateReportYAMLResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *UnsubscribeAlertResponse) Reset() { - *x = UnsubscribeAlertResponse{} +func (x *GenerateReportYAMLResponse) Reset() { + *x = GenerateReportYAMLResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9007,13 +9040,13 @@ func (x *UnsubscribeAlertResponse) Reset() { } } -func (x *UnsubscribeAlertResponse) String() string { +func (x *GenerateReportYAMLResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UnsubscribeAlertResponse) ProtoMessage() {} +func (*GenerateReportYAMLResponse) ProtoMessage() {} -func (x *UnsubscribeAlertResponse) ProtoReflect() protoreflect.Message { +func (x *GenerateReportYAMLResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9025,23 +9058,30 @@ func (x *UnsubscribeAlertResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UnsubscribeAlertResponse.ProtoReflect.Descriptor instead. -func (*UnsubscribeAlertResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GenerateReportYAMLResponse.ProtoReflect.Descriptor instead. +func (*GenerateReportYAMLResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{154} } -type DeleteAlertRequest struct { +func (x *GenerateReportYAMLResponse) GetYaml() string { + if x != nil { + return x.Yaml + } + return "" +} + +type CreateAlertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Options *AlertOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` } -func (x *DeleteAlertRequest) Reset() { - *x = DeleteAlertRequest{} +func (x *CreateAlertRequest) Reset() { + *x = CreateAlertRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9049,13 +9089,13 @@ func (x *DeleteAlertRequest) Reset() { } } -func (x *DeleteAlertRequest) String() string { +func (x *CreateAlertRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAlertRequest) ProtoMessage() {} +func (*CreateAlertRequest) ProtoMessage() {} -func (x *DeleteAlertRequest) ProtoReflect() protoreflect.Message { +func (x *CreateAlertRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9067,40 +9107,42 @@ func (x *DeleteAlertRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAlertRequest.ProtoReflect.Descriptor instead. -func (*DeleteAlertRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAlertRequest.ProtoReflect.Descriptor instead. +func (*CreateAlertRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{155} } -func (x *DeleteAlertRequest) GetOrganization() string { +func (x *CreateAlertRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *DeleteAlertRequest) GetProject() string { +func (x *CreateAlertRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteAlertRequest) GetName() string { +func (x *CreateAlertRequest) GetOptions() *AlertOptions { if x != nil { - return x.Name + return x.Options } - return "" + return nil } -type DeleteAlertResponse struct { +type CreateAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteAlertResponse) Reset() { - *x = DeleteAlertResponse{} +func (x *CreateAlertResponse) Reset() { + *x = CreateAlertResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9108,13 +9150,13 @@ func (x *DeleteAlertResponse) Reset() { } } -func (x *DeleteAlertResponse) String() string { +func (x *CreateAlertResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAlertResponse) ProtoMessage() {} +func (*CreateAlertResponse) ProtoMessage() {} -func (x *DeleteAlertResponse) ProtoReflect() protoreflect.Message { +func (x *CreateAlertResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9126,23 +9168,31 @@ func (x *DeleteAlertResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAlertResponse.ProtoReflect.Descriptor instead. -func (*DeleteAlertResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAlertResponse.ProtoReflect.Descriptor instead. +func (*CreateAlertResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{156} } -type GenerateAlertYAMLRequest struct { +func (x *CreateAlertResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type EditAlertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - Options *AlertOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Options *AlertOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` } -func (x *GenerateAlertYAMLRequest) Reset() { - *x = GenerateAlertYAMLRequest{} +func (x *EditAlertRequest) Reset() { + *x = EditAlertRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9150,13 +9200,13 @@ func (x *GenerateAlertYAMLRequest) Reset() { } } -func (x *GenerateAlertYAMLRequest) String() string { +func (x *EditAlertRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenerateAlertYAMLRequest) ProtoMessage() {} +func (*EditAlertRequest) ProtoMessage() {} -func (x *GenerateAlertYAMLRequest) ProtoReflect() protoreflect.Message { +func (x *EditAlertRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9168,42 +9218,47 @@ func (x *GenerateAlertYAMLRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GenerateAlertYAMLRequest.ProtoReflect.Descriptor instead. -func (*GenerateAlertYAMLRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use EditAlertRequest.ProtoReflect.Descriptor instead. +func (*EditAlertRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{157} } -func (x *GenerateAlertYAMLRequest) GetOrganization() string { +func (x *EditAlertRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *GenerateAlertYAMLRequest) GetProject() string { +func (x *EditAlertRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GenerateAlertYAMLRequest) GetOptions() *AlertOptions { +func (x *EditAlertRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EditAlertRequest) GetOptions() *AlertOptions { if x != nil { return x.Options } return nil } -type GenerateAlertYAMLResponse struct { +type EditAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *GenerateAlertYAMLResponse) Reset() { - *x = GenerateAlertYAMLResponse{} +func (x *EditAlertResponse) Reset() { + *x = EditAlertResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9211,13 +9266,13 @@ func (x *GenerateAlertYAMLResponse) Reset() { } } -func (x *GenerateAlertYAMLResponse) String() string { +func (x *EditAlertResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenerateAlertYAMLResponse) ProtoMessage() {} +func (*EditAlertResponse) ProtoMessage() {} -func (x *GenerateAlertYAMLResponse) ProtoReflect() protoreflect.Message { +func (x *EditAlertResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9229,19 +9284,12 @@ func (x *GenerateAlertYAMLResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GenerateAlertYAMLResponse.ProtoReflect.Descriptor instead. -func (*GenerateAlertYAMLResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use EditAlertResponse.ProtoReflect.Descriptor instead. +func (*EditAlertResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{158} } -func (x *GenerateAlertYAMLResponse) GetYaml() string { - if x != nil { - return x.Yaml - } - return "" -} - -type GetAlertYAMLRequest struct { +type UnsubscribeAlertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -9251,8 +9299,8 @@ type GetAlertYAMLRequest struct { Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetAlertYAMLRequest) Reset() { - *x = GetAlertYAMLRequest{} +func (x *UnsubscribeAlertRequest) Reset() { + *x = UnsubscribeAlertRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9260,13 +9308,13 @@ func (x *GetAlertYAMLRequest) Reset() { } } -func (x *GetAlertYAMLRequest) String() string { +func (x *UnsubscribeAlertRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAlertYAMLRequest) ProtoMessage() {} +func (*UnsubscribeAlertRequest) ProtoMessage() {} -func (x *GetAlertYAMLRequest) ProtoReflect() protoreflect.Message { +func (x *UnsubscribeAlertRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9278,42 +9326,40 @@ func (x *GetAlertYAMLRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAlertYAMLRequest.ProtoReflect.Descriptor instead. -func (*GetAlertYAMLRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UnsubscribeAlertRequest.ProtoReflect.Descriptor instead. +func (*UnsubscribeAlertRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{159} } -func (x *GetAlertYAMLRequest) GetOrganization() string { +func (x *UnsubscribeAlertRequest) GetOrganization() string { if x != nil { return x.Organization } return "" } -func (x *GetAlertYAMLRequest) GetProject() string { +func (x *UnsubscribeAlertRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetAlertYAMLRequest) GetName() string { +func (x *UnsubscribeAlertRequest) GetName() string { if x != nil { return x.Name } return "" } -type GetAlertYAMLResponse struct { +type UnsubscribeAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *GetAlertYAMLResponse) Reset() { - *x = GetAlertYAMLResponse{} +func (x *UnsubscribeAlertResponse) Reset() { + *x = UnsubscribeAlertResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9321,13 +9367,13 @@ func (x *GetAlertYAMLResponse) Reset() { } } -func (x *GetAlertYAMLResponse) String() string { +func (x *UnsubscribeAlertResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAlertYAMLResponse) ProtoMessage() {} +func (*UnsubscribeAlertResponse) ProtoMessage() {} -func (x *GetAlertYAMLResponse) ProtoReflect() protoreflect.Message { +func (x *UnsubscribeAlertResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9339,33 +9385,23 @@ func (x *GetAlertYAMLResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAlertYAMLResponse.ProtoReflect.Descriptor instead. -func (*GetAlertYAMLResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UnsubscribeAlertResponse.ProtoReflect.Descriptor instead. +func (*UnsubscribeAlertResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{160} } -func (x *GetAlertYAMLResponse) GetYaml() string { - if x != nil { - return x.Yaml - } - return "" -} - -type TelemetryRequest struct { +type DeleteAlertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name passed to activity module's name arg - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Value passed to activity module's value arg - Value float32 `protobuf:"fixed32,2,opt,name=value,proto3" json:"value,omitempty"` - // Free form struct of the actual event - Event *structpb.Struct `protobuf:"bytes,3,opt,name=event,proto3" json:"event,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *TelemetryRequest) Reset() { - *x = TelemetryRequest{} +func (x *DeleteAlertRequest) Reset() { + *x = DeleteAlertRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9373,13 +9409,13 @@ func (x *TelemetryRequest) Reset() { } } -func (x *TelemetryRequest) String() string { +func (x *DeleteAlertRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TelemetryRequest) ProtoMessage() {} +func (*DeleteAlertRequest) ProtoMessage() {} -func (x *TelemetryRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteAlertRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9391,40 +9427,40 @@ func (x *TelemetryRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TelemetryRequest.ProtoReflect.Descriptor instead. -func (*TelemetryRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteAlertRequest.ProtoReflect.Descriptor instead. +func (*DeleteAlertRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{161} } -func (x *TelemetryRequest) GetName() string { +func (x *DeleteAlertRequest) GetOrganization() string { if x != nil { - return x.Name + return x.Organization } return "" } -func (x *TelemetryRequest) GetValue() float32 { +func (x *DeleteAlertRequest) GetProject() string { if x != nil { - return x.Value + return x.Project } - return 0 + return "" } -func (x *TelemetryRequest) GetEvent() *structpb.Struct { +func (x *DeleteAlertRequest) GetName() string { if x != nil { - return x.Event + return x.Name } - return nil + return "" } -type TelemetryResponse struct { +type DeleteAlertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *TelemetryResponse) Reset() { - *x = TelemetryResponse{} +func (x *DeleteAlertResponse) Reset() { + *x = DeleteAlertResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9432,13 +9468,13 @@ func (x *TelemetryResponse) Reset() { } } -func (x *TelemetryResponse) String() string { +func (x *DeleteAlertResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TelemetryResponse) ProtoMessage() {} +func (*DeleteAlertResponse) ProtoMessage() {} -func (x *TelemetryResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteAlertResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9450,27 +9486,23 @@ func (x *TelemetryResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TelemetryResponse.ProtoReflect.Descriptor instead. -func (*TelemetryResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteAlertResponse.ProtoReflect.Descriptor instead. +func (*DeleteAlertResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{162} } -type User struct { +type GenerateAlertYAMLRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - PhotoUrl string `protobuf:"bytes,4,opt,name=photo_url,json=photoUrl,proto3" json:"photo_url,omitempty"` - Quotas *UserQuotas `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Options *AlertOptions `protobuf:"bytes,3,opt,name=options,proto3" json:"options,omitempty"` } -func (x *User) Reset() { - *x = User{} +func (x *GenerateAlertYAMLRequest) Reset() { + *x = GenerateAlertYAMLRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9478,13 +9510,13 @@ func (x *User) Reset() { } } -func (x *User) String() string { +func (x *GenerateAlertYAMLRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*User) ProtoMessage() {} +func (*GenerateAlertYAMLRequest) ProtoMessage() {} -func (x *User) ProtoReflect() protoreflect.Message { +func (x *GenerateAlertYAMLRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9496,89 +9528,56 @@ func (x *User) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use User.ProtoReflect.Descriptor instead. -func (*User) Descriptor() ([]byte, []int) { +// Deprecated: Use GenerateAlertYAMLRequest.ProtoReflect.Descriptor instead. +func (*GenerateAlertYAMLRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{163} } -func (x *User) GetId() string { +func (x *GenerateAlertYAMLRequest) GetOrganization() string { if x != nil { - return x.Id + return x.Organization } return "" } -func (x *User) GetEmail() string { +func (x *GenerateAlertYAMLRequest) GetProject() string { if x != nil { - return x.Email + return x.Project } return "" } -func (x *User) GetDisplayName() string { +func (x *GenerateAlertYAMLRequest) GetOptions() *AlertOptions { if x != nil { - return x.DisplayName + return x.Options } - return "" + return nil } -func (x *User) GetPhotoUrl() string { - if x != nil { - return x.PhotoUrl - } - return "" -} +type GenerateAlertYAMLResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *User) GetQuotas() *UserQuotas { - if x != nil { - return x.Quotas - } - return nil + Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *User) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn +func (x *GenerateAlertYAMLResponse) Reset() { + *x = GenerateAlertYAMLResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[164] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *User) GetUpdatedOn() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedOn - } - return nil +func (x *GenerateAlertYAMLResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -type Service struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` -} - -func (x *Service) Reset() { - *x = Service{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[164] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Service) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Service) ProtoMessage() {} +func (*GenerateAlertYAMLResponse) ProtoMessage() {} -func (x *Service) ProtoReflect() protoreflect.Message { +func (x *GenerateAlertYAMLResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9590,68 +9589,30 @@ func (x *Service) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Service.ProtoReflect.Descriptor instead. -func (*Service) Descriptor() ([]byte, []int) { +// Deprecated: Use GenerateAlertYAMLResponse.ProtoReflect.Descriptor instead. +func (*GenerateAlertYAMLResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{164} } -func (x *Service) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Service) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Service) GetOrgId() string { - if x != nil { - return x.OrgId - } - return "" -} - -func (x *Service) GetOrgName() string { +func (x *GenerateAlertYAMLResponse) GetYaml() string { if x != nil { - return x.OrgName + return x.Yaml } return "" } -func (x *Service) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn - } - return nil -} - -func (x *Service) GetUpdatedOn() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedOn - } - return nil -} - -type Organization struct { +type GetAlertYAMLRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Globally unique - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Quotas *OrganizationQuotas `protobuf:"bytes,4,opt,name=quotas,proto3" json:"quotas,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *Organization) Reset() { - *x = Organization{} +func (x *GetAlertYAMLRequest) Reset() { + *x = GetAlertYAMLRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9659,13 +9620,13 @@ func (x *Organization) Reset() { } } -func (x *Organization) String() string { +func (x *GetAlertYAMLRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Organization) ProtoMessage() {} +func (*GetAlertYAMLRequest) ProtoMessage() {} -func (x *Organization) ProtoReflect() protoreflect.Message { +func (x *GetAlertYAMLRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9677,63 +9638,42 @@ func (x *Organization) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Organization.ProtoReflect.Descriptor instead. -func (*Organization) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAlertYAMLRequest.ProtoReflect.Descriptor instead. +func (*GetAlertYAMLRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{165} } -func (x *Organization) GetId() string { +func (x *GetAlertYAMLRequest) GetOrganization() string { if x != nil { - return x.Id + return x.Organization } return "" } -func (x *Organization) GetName() string { +func (x *GetAlertYAMLRequest) GetProject() string { if x != nil { - return x.Name + return x.Project } return "" } -func (x *Organization) GetDescription() string { +func (x *GetAlertYAMLRequest) GetName() string { if x != nil { - return x.Description + return x.Name } return "" } -func (x *Organization) GetQuotas() *OrganizationQuotas { - if x != nil { - return x.Quotas - } - return nil -} - -func (x *Organization) GetCreatedOn() *timestamppb.Timestamp { - if x != nil { - return x.CreatedOn - } - return nil -} - -func (x *Organization) GetUpdatedOn() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedOn - } - return nil -} - -type UserQuotas struct { +type GetAlertYAMLResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SingleuserOrgs uint32 `protobuf:"varint,1,opt,name=singleuser_orgs,json=singleuserOrgs,proto3" json:"singleuser_orgs,omitempty"` + Yaml string `protobuf:"bytes,1,opt,name=yaml,proto3" json:"yaml,omitempty"` } -func (x *UserQuotas) Reset() { - *x = UserQuotas{} +func (x *GetAlertYAMLResponse) Reset() { + *x = GetAlertYAMLResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9741,13 +9681,13 @@ func (x *UserQuotas) Reset() { } } -func (x *UserQuotas) String() string { +func (x *GetAlertYAMLResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserQuotas) ProtoMessage() {} +func (*GetAlertYAMLResponse) ProtoMessage() {} -func (x *UserQuotas) ProtoReflect() protoreflect.Message { +func (x *GetAlertYAMLResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9759,32 +9699,33 @@ func (x *UserQuotas) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserQuotas.ProtoReflect.Descriptor instead. -func (*UserQuotas) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAlertYAMLResponse.ProtoReflect.Descriptor instead. +func (*GetAlertYAMLResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{166} } -func (x *UserQuotas) GetSingleuserOrgs() uint32 { +func (x *GetAlertYAMLResponse) GetYaml() string { if x != nil { - return x.SingleuserOrgs + return x.Yaml } - return 0 + return "" } -type OrganizationQuotas struct { +type TelemetryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Projects uint32 `protobuf:"varint,1,opt,name=projects,proto3" json:"projects,omitempty"` - Deployments uint32 `protobuf:"varint,2,opt,name=deployments,proto3" json:"deployments,omitempty"` - SlotsTotal uint32 `protobuf:"varint,3,opt,name=slots_total,json=slotsTotal,proto3" json:"slots_total,omitempty"` - SlotsPerDeployment uint32 `protobuf:"varint,4,opt,name=slots_per_deployment,json=slotsPerDeployment,proto3" json:"slots_per_deployment,omitempty"` - OutstandingInvites uint32 `protobuf:"varint,5,opt,name=outstanding_invites,json=outstandingInvites,proto3" json:"outstanding_invites,omitempty"` + // Name passed to activity module's name arg + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Value passed to activity module's value arg + Value float32 `protobuf:"fixed32,2,opt,name=value,proto3" json:"value,omitempty"` + // Free form struct of the actual event + Event *structpb.Struct `protobuf:"bytes,3,opt,name=event,proto3" json:"event,omitempty"` } -func (x *OrganizationQuotas) Reset() { - *x = OrganizationQuotas{} +func (x *TelemetryRequest) Reset() { + *x = TelemetryRequest{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9792,13 +9733,13 @@ func (x *OrganizationQuotas) Reset() { } } -func (x *OrganizationQuotas) String() string { +func (x *TelemetryRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrganizationQuotas) ProtoMessage() {} +func (*TelemetryRequest) ProtoMessage() {} -func (x *OrganizationQuotas) ProtoReflect() protoreflect.Message { +func (x *TelemetryRequest) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9810,76 +9751,40 @@ func (x *OrganizationQuotas) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrganizationQuotas.ProtoReflect.Descriptor instead. -func (*OrganizationQuotas) Descriptor() ([]byte, []int) { +// Deprecated: Use TelemetryRequest.ProtoReflect.Descriptor instead. +func (*TelemetryRequest) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{167} } -func (x *OrganizationQuotas) GetProjects() uint32 { - if x != nil { - return x.Projects - } - return 0 -} - -func (x *OrganizationQuotas) GetDeployments() uint32 { - if x != nil { - return x.Deployments - } - return 0 -} - -func (x *OrganizationQuotas) GetSlotsTotal() uint32 { +func (x *TelemetryRequest) GetName() string { if x != nil { - return x.SlotsTotal + return x.Name } - return 0 + return "" } -func (x *OrganizationQuotas) GetSlotsPerDeployment() uint32 { +func (x *TelemetryRequest) GetValue() float32 { if x != nil { - return x.SlotsPerDeployment + return x.Value } return 0 } -func (x *OrganizationQuotas) GetOutstandingInvites() uint32 { +func (x *TelemetryRequest) GetEvent() *structpb.Struct { if x != nil { - return x.OutstandingInvites + return x.Event } - return 0 + return nil } -type Project struct { +type TelemetryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Unique in organization - OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` - OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` - Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` - Public bool `protobuf:"varint,6,opt,name=public,proto3" json:"public,omitempty"` - CreatedByUserId string `protobuf:"bytes,22,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` - Provisioner string `protobuf:"bytes,7,opt,name=provisioner,proto3" json:"provisioner,omitempty"` - GithubUrl string `protobuf:"bytes,8,opt,name=github_url,json=githubUrl,proto3" json:"github_url,omitempty"` - Subpath string `protobuf:"bytes,17,opt,name=subpath,proto3" json:"subpath,omitempty"` - ProdBranch string `protobuf:"bytes,9,opt,name=prod_branch,json=prodBranch,proto3" json:"prod_branch,omitempty"` - ProdOlapDriver string `protobuf:"bytes,10,opt,name=prod_olap_driver,json=prodOlapDriver,proto3" json:"prod_olap_driver,omitempty"` - ProdOlapDsn string `protobuf:"bytes,11,opt,name=prod_olap_dsn,json=prodOlapDsn,proto3" json:"prod_olap_dsn,omitempty"` - ProdSlots int64 `protobuf:"varint,12,opt,name=prod_slots,json=prodSlots,proto3" json:"prod_slots,omitempty"` - ProdDeploymentId string `protobuf:"bytes,13,opt,name=prod_deployment_id,json=prodDeploymentId,proto3" json:"prod_deployment_id,omitempty"` - FrontendUrl string `protobuf:"bytes,16,opt,name=frontend_url,json=frontendUrl,proto3" json:"frontend_url,omitempty"` - ProdTtlSeconds int64 `protobuf:"varint,18,opt,name=prod_ttl_seconds,json=prodTtlSeconds,proto3" json:"prod_ttl_seconds,omitempty"` - Annotations map[string]string `protobuf:"bytes,20,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ProdVersion string `protobuf:"bytes,21,opt,name=prod_version,json=prodVersion,proto3" json:"prod_version,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *Project) Reset() { - *x = Project{} +func (x *TelemetryResponse) Reset() { + *x = TelemetryResponse{} if protoimpl.UnsafeEnabled { mi := &file_rill_admin_v1_api_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9887,13 +9792,13 @@ func (x *Project) Reset() { } } -func (x *Project) String() string { +func (x *TelemetryResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Project) ProtoMessage() {} +func (*TelemetryResponse) ProtoMessage() {} -func (x *Project) ProtoReflect() protoreflect.Message { +func (x *TelemetryResponse) ProtoReflect() protoreflect.Message { mi := &file_rill_admin_v1_api_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9905,192 +9810,223 @@ func (x *Project) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Project.ProtoReflect.Descriptor instead. -func (*Project) Descriptor() ([]byte, []int) { +// Deprecated: Use TelemetryResponse.ProtoReflect.Descriptor instead. +func (*TelemetryResponse) Descriptor() ([]byte, []int) { return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{168} } -func (x *Project) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Project) GetName() string { - if x != nil { - return x.Name - } - return "" +type User struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + PhotoUrl string `protobuf:"bytes,4,opt,name=photo_url,json=photoUrl,proto3" json:"photo_url,omitempty"` + Quotas *UserQuotas `protobuf:"bytes,5,opt,name=quotas,proto3" json:"quotas,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *Project) GetOrgId() string { - if x != nil { - return x.OrgId +func (x *User) Reset() { + *x = User{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Project) GetOrgName() string { - if x != nil { - return x.OrgName - } - return "" +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Project) GetDescription() string { - if x != nil { - return x.Description +func (*User) ProtoMessage() {} + +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[169] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Project) GetPublic() bool { - if x != nil { - return x.Public - } - return false +// Deprecated: Use User.ProtoReflect.Descriptor instead. +func (*User) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{169} } -func (x *Project) GetCreatedByUserId() string { +func (x *User) GetId() string { if x != nil { - return x.CreatedByUserId + return x.Id } return "" } -func (x *Project) GetProvisioner() string { +func (x *User) GetEmail() string { if x != nil { - return x.Provisioner + return x.Email } return "" } -func (x *Project) GetGithubUrl() string { +func (x *User) GetDisplayName() string { if x != nil { - return x.GithubUrl + return x.DisplayName } return "" } -func (x *Project) GetSubpath() string { +func (x *User) GetPhotoUrl() string { if x != nil { - return x.Subpath + return x.PhotoUrl } return "" } -func (x *Project) GetProdBranch() string { +func (x *User) GetQuotas() *UserQuotas { if x != nil { - return x.ProdBranch + return x.Quotas } - return "" + return nil } -func (x *Project) GetProdOlapDriver() string { +func (x *User) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.ProdOlapDriver + return x.CreatedOn } - return "" + return nil } -func (x *Project) GetProdOlapDsn() string { +func (x *User) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.ProdOlapDsn + return x.UpdatedOn } - return "" + return nil } -func (x *Project) GetProdSlots() int64 { - if x != nil { - return x.ProdSlots +type Service struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` +} + +func (x *Service) Reset() { + *x = Service{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[170] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *Project) GetProdDeploymentId() string { - if x != nil { - return x.ProdDeploymentId +func (x *Service) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Service) ProtoMessage() {} + +func (x *Service) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[170] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Project) GetFrontendUrl() string { +// Deprecated: Use Service.ProtoReflect.Descriptor instead. +func (*Service) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{170} +} + +func (x *Service) GetId() string { if x != nil { - return x.FrontendUrl + return x.Id } return "" } -func (x *Project) GetProdTtlSeconds() int64 { +func (x *Service) GetName() string { if x != nil { - return x.ProdTtlSeconds + return x.Name } - return 0 + return "" } -func (x *Project) GetAnnotations() map[string]string { +func (x *Service) GetOrgId() string { if x != nil { - return x.Annotations + return x.OrgId } - return nil + return "" } -func (x *Project) GetProdVersion() string { +func (x *Service) GetOrgName() string { if x != nil { - return x.ProdVersion + return x.OrgName } return "" } -func (x *Project) GetCreatedOn() *timestamppb.Timestamp { +func (x *Service) GetCreatedOn() *timestamppb.Timestamp { if x != nil { return x.CreatedOn } return nil } -func (x *Project) GetUpdatedOn() *timestamppb.Timestamp { +func (x *Service) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { return x.UpdatedOn } return nil } -type Deployment struct { +type Organization struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - Slots int64 `protobuf:"varint,3,opt,name=slots,proto3" json:"slots,omitempty"` - Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` - RuntimeHost string `protobuf:"bytes,5,opt,name=runtime_host,json=runtimeHost,proto3" json:"runtime_host,omitempty"` - RuntimeInstanceId string `protobuf:"bytes,6,opt,name=runtime_instance_id,json=runtimeInstanceId,proto3" json:"runtime_instance_id,omitempty"` - Status DeploymentStatus `protobuf:"varint,7,opt,name=status,proto3,enum=rill.admin.v1.DeploymentStatus" json:"status,omitempty"` - StatusMessage string `protobuf:"bytes,8,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Globally unique + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Quotas *OrganizationQuotas `protobuf:"bytes,4,opt,name=quotas,proto3" json:"quotas,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *Deployment) Reset() { - *x = Deployment{} +func (x *Organization) Reset() { + *x = Organization{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[169] + mi := &file_rill_admin_v1_api_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Deployment) String() string { +func (x *Organization) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Deployment) ProtoMessage() {} +func (*Organization) ProtoMessage() {} -func (x *Deployment) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[169] +func (x *Organization) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10101,112 +10037,78 @@ func (x *Deployment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Deployment.ProtoReflect.Descriptor instead. -func (*Deployment) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{169} +// Deprecated: Use Organization.ProtoReflect.Descriptor instead. +func (*Organization) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{171} } -func (x *Deployment) GetId() string { +func (x *Organization) GetId() string { if x != nil { return x.Id } return "" } -func (x *Deployment) GetProjectId() string { - if x != nil { - return x.ProjectId - } - return "" -} - -func (x *Deployment) GetSlots() int64 { - if x != nil { - return x.Slots - } - return 0 -} - -func (x *Deployment) GetBranch() string { - if x != nil { - return x.Branch - } - return "" -} - -func (x *Deployment) GetRuntimeHost() string { +func (x *Organization) GetName() string { if x != nil { - return x.RuntimeHost + return x.Name } return "" } -func (x *Deployment) GetRuntimeInstanceId() string { +func (x *Organization) GetDescription() string { if x != nil { - return x.RuntimeInstanceId + return x.Description } return "" } -func (x *Deployment) GetStatus() DeploymentStatus { - if x != nil { - return x.Status - } - return DeploymentStatus_DEPLOYMENT_STATUS_UNSPECIFIED -} - -func (x *Deployment) GetStatusMessage() string { +func (x *Organization) GetQuotas() *OrganizationQuotas { if x != nil { - return x.StatusMessage + return x.Quotas } - return "" + return nil } -func (x *Deployment) GetCreatedOn() *timestamppb.Timestamp { +func (x *Organization) GetCreatedOn() *timestamppb.Timestamp { if x != nil { return x.CreatedOn } return nil } -func (x *Deployment) GetUpdatedOn() *timestamppb.Timestamp { +func (x *Organization) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { return x.UpdatedOn } return nil } -type OrganizationPermissions struct { +type UserQuotas struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ReadOrg bool `protobuf:"varint,1,opt,name=read_org,json=readOrg,proto3" json:"read_org,omitempty"` - ManageOrg bool `protobuf:"varint,2,opt,name=manage_org,json=manageOrg,proto3" json:"manage_org,omitempty"` - ReadProjects bool `protobuf:"varint,3,opt,name=read_projects,json=readProjects,proto3" json:"read_projects,omitempty"` - CreateProjects bool `protobuf:"varint,4,opt,name=create_projects,json=createProjects,proto3" json:"create_projects,omitempty"` - ManageProjects bool `protobuf:"varint,5,opt,name=manage_projects,json=manageProjects,proto3" json:"manage_projects,omitempty"` - ReadOrgMembers bool `protobuf:"varint,6,opt,name=read_org_members,json=readOrgMembers,proto3" json:"read_org_members,omitempty"` - ManageOrgMembers bool `protobuf:"varint,7,opt,name=manage_org_members,json=manageOrgMembers,proto3" json:"manage_org_members,omitempty"` + SingleuserOrgs uint32 `protobuf:"varint,1,opt,name=singleuser_orgs,json=singleuserOrgs,proto3" json:"singleuser_orgs,omitempty"` } -func (x *OrganizationPermissions) Reset() { - *x = OrganizationPermissions{} +func (x *UserQuotas) Reset() { + *x = UserQuotas{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[170] + mi := &file_rill_admin_v1_api_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OrganizationPermissions) String() string { +func (x *UserQuotas) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrganizationPermissions) ProtoMessage() {} +func (*UserQuotas) ProtoMessage() {} -func (x *OrganizationPermissions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[170] +func (x *UserQuotas) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10217,98 +10119,142 @@ func (x *OrganizationPermissions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrganizationPermissions.ProtoReflect.Descriptor instead. -func (*OrganizationPermissions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{170} +// Deprecated: Use UserQuotas.ProtoReflect.Descriptor instead. +func (*UserQuotas) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{172} } -func (x *OrganizationPermissions) GetReadOrg() bool { +func (x *UserQuotas) GetSingleuserOrgs() uint32 { if x != nil { - return x.ReadOrg + return x.SingleuserOrgs } - return false + return 0 } -func (x *OrganizationPermissions) GetManageOrg() bool { - if x != nil { - return x.ManageOrg +type OrganizationQuotas struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Projects uint32 `protobuf:"varint,1,opt,name=projects,proto3" json:"projects,omitempty"` + Deployments uint32 `protobuf:"varint,2,opt,name=deployments,proto3" json:"deployments,omitempty"` + SlotsTotal uint32 `protobuf:"varint,3,opt,name=slots_total,json=slotsTotal,proto3" json:"slots_total,omitempty"` + SlotsPerDeployment uint32 `protobuf:"varint,4,opt,name=slots_per_deployment,json=slotsPerDeployment,proto3" json:"slots_per_deployment,omitempty"` + OutstandingInvites uint32 `protobuf:"varint,5,opt,name=outstanding_invites,json=outstandingInvites,proto3" json:"outstanding_invites,omitempty"` +} + +func (x *OrganizationQuotas) Reset() { + *x = OrganizationQuotas{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[173] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *OrganizationPermissions) GetReadProjects() bool { +func (x *OrganizationQuotas) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrganizationQuotas) ProtoMessage() {} + +func (x *OrganizationQuotas) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[173] + 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 OrganizationQuotas.ProtoReflect.Descriptor instead. +func (*OrganizationQuotas) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{173} +} + +func (x *OrganizationQuotas) GetProjects() uint32 { if x != nil { - return x.ReadProjects + return x.Projects } - return false + return 0 } -func (x *OrganizationPermissions) GetCreateProjects() bool { +func (x *OrganizationQuotas) GetDeployments() uint32 { if x != nil { - return x.CreateProjects + return x.Deployments } - return false + return 0 } -func (x *OrganizationPermissions) GetManageProjects() bool { +func (x *OrganizationQuotas) GetSlotsTotal() uint32 { if x != nil { - return x.ManageProjects + return x.SlotsTotal } - return false + return 0 } -func (x *OrganizationPermissions) GetReadOrgMembers() bool { +func (x *OrganizationQuotas) GetSlotsPerDeployment() uint32 { if x != nil { - return x.ReadOrgMembers + return x.SlotsPerDeployment } - return false + return 0 } -func (x *OrganizationPermissions) GetManageOrgMembers() bool { +func (x *OrganizationQuotas) GetOutstandingInvites() uint32 { if x != nil { - return x.ManageOrgMembers + return x.OutstandingInvites } - return false + return 0 } -type ProjectPermissions struct { +type Project struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ReadProject bool `protobuf:"varint,1,opt,name=read_project,json=readProject,proto3" json:"read_project,omitempty"` - ManageProject bool `protobuf:"varint,2,opt,name=manage_project,json=manageProject,proto3" json:"manage_project,omitempty"` - ReadProd bool `protobuf:"varint,3,opt,name=read_prod,json=readProd,proto3" json:"read_prod,omitempty"` - ReadProdStatus bool `protobuf:"varint,4,opt,name=read_prod_status,json=readProdStatus,proto3" json:"read_prod_status,omitempty"` - ManageProd bool `protobuf:"varint,5,opt,name=manage_prod,json=manageProd,proto3" json:"manage_prod,omitempty"` - ReadDev bool `protobuf:"varint,6,opt,name=read_dev,json=readDev,proto3" json:"read_dev,omitempty"` - ReadDevStatus bool `protobuf:"varint,7,opt,name=read_dev_status,json=readDevStatus,proto3" json:"read_dev_status,omitempty"` - ManageDev bool `protobuf:"varint,8,opt,name=manage_dev,json=manageDev,proto3" json:"manage_dev,omitempty"` - ReadProjectMembers bool `protobuf:"varint,9,opt,name=read_project_members,json=readProjectMembers,proto3" json:"read_project_members,omitempty"` - ManageProjectMembers bool `protobuf:"varint,10,opt,name=manage_project_members,json=manageProjectMembers,proto3" json:"manage_project_members,omitempty"` - CreateReports bool `protobuf:"varint,11,opt,name=create_reports,json=createReports,proto3" json:"create_reports,omitempty"` - ManageReports bool `protobuf:"varint,12,opt,name=manage_reports,json=manageReports,proto3" json:"manage_reports,omitempty"` - CreateAlerts bool `protobuf:"varint,13,opt,name=create_alerts,json=createAlerts,proto3" json:"create_alerts,omitempty"` - ManageAlerts bool `protobuf:"varint,14,opt,name=manage_alerts,json=manageAlerts,proto3" json:"manage_alerts,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Unique in organization + OrgId string `protobuf:"bytes,3,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + OrgName string `protobuf:"bytes,4,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + Public bool `protobuf:"varint,6,opt,name=public,proto3" json:"public,omitempty"` + CreatedByUserId string `protobuf:"bytes,22,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` + Provisioner string `protobuf:"bytes,7,opt,name=provisioner,proto3" json:"provisioner,omitempty"` + GithubUrl string `protobuf:"bytes,8,opt,name=github_url,json=githubUrl,proto3" json:"github_url,omitempty"` + Subpath string `protobuf:"bytes,17,opt,name=subpath,proto3" json:"subpath,omitempty"` + ProdBranch string `protobuf:"bytes,9,opt,name=prod_branch,json=prodBranch,proto3" json:"prod_branch,omitempty"` + ProdOlapDriver string `protobuf:"bytes,10,opt,name=prod_olap_driver,json=prodOlapDriver,proto3" json:"prod_olap_driver,omitempty"` + ProdOlapDsn string `protobuf:"bytes,11,opt,name=prod_olap_dsn,json=prodOlapDsn,proto3" json:"prod_olap_dsn,omitempty"` + ProdSlots int64 `protobuf:"varint,12,opt,name=prod_slots,json=prodSlots,proto3" json:"prod_slots,omitempty"` + ProdDeploymentId string `protobuf:"bytes,13,opt,name=prod_deployment_id,json=prodDeploymentId,proto3" json:"prod_deployment_id,omitempty"` + FrontendUrl string `protobuf:"bytes,16,opt,name=frontend_url,json=frontendUrl,proto3" json:"frontend_url,omitempty"` + ProdTtlSeconds int64 `protobuf:"varint,18,opt,name=prod_ttl_seconds,json=prodTtlSeconds,proto3" json:"prod_ttl_seconds,omitempty"` + Annotations map[string]string `protobuf:"bytes,20,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ProdVersion string `protobuf:"bytes,21,opt,name=prod_version,json=prodVersion,proto3" json:"prod_version,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *ProjectPermissions) Reset() { - *x = ProjectPermissions{} +func (x *Project) Reset() { + *x = Project{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[171] + mi := &file_rill_admin_v1_api_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProjectPermissions) String() string { +func (x *Project) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProjectPermissions) ProtoMessage() {} +func (*Project) ProtoMessage() {} -func (x *ProjectPermissions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[171] +func (x *Project) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10319,223 +10265,192 @@ func (x *ProjectPermissions) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProjectPermissions.ProtoReflect.Descriptor instead. -func (*ProjectPermissions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{171} +// Deprecated: Use Project.ProtoReflect.Descriptor instead. +func (*Project) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{174} } -func (x *ProjectPermissions) GetReadProject() bool { +func (x *Project) GetId() string { if x != nil { - return x.ReadProject + return x.Id } - return false + return "" } -func (x *ProjectPermissions) GetManageProject() bool { +func (x *Project) GetName() string { if x != nil { - return x.ManageProject + return x.Name } - return false + return "" } -func (x *ProjectPermissions) GetReadProd() bool { +func (x *Project) GetOrgId() string { if x != nil { - return x.ReadProd + return x.OrgId } - return false + return "" } -func (x *ProjectPermissions) GetReadProdStatus() bool { +func (x *Project) GetOrgName() string { if x != nil { - return x.ReadProdStatus + return x.OrgName } - return false + return "" } -func (x *ProjectPermissions) GetManageProd() bool { +func (x *Project) GetDescription() string { if x != nil { - return x.ManageProd + return x.Description } - return false + return "" } -func (x *ProjectPermissions) GetReadDev() bool { +func (x *Project) GetPublic() bool { if x != nil { - return x.ReadDev + return x.Public } return false } -func (x *ProjectPermissions) GetReadDevStatus() bool { +func (x *Project) GetCreatedByUserId() string { if x != nil { - return x.ReadDevStatus + return x.CreatedByUserId } - return false + return "" } -func (x *ProjectPermissions) GetManageDev() bool { +func (x *Project) GetProvisioner() string { if x != nil { - return x.ManageDev + return x.Provisioner } - return false + return "" } -func (x *ProjectPermissions) GetReadProjectMembers() bool { +func (x *Project) GetGithubUrl() string { if x != nil { - return x.ReadProjectMembers + return x.GithubUrl } - return false + return "" } -func (x *ProjectPermissions) GetManageProjectMembers() bool { +func (x *Project) GetSubpath() string { if x != nil { - return x.ManageProjectMembers + return x.Subpath } - return false + return "" } -func (x *ProjectPermissions) GetCreateReports() bool { +func (x *Project) GetProdBranch() string { if x != nil { - return x.CreateReports + return x.ProdBranch } - return false + return "" } -func (x *ProjectPermissions) GetManageReports() bool { +func (x *Project) GetProdOlapDriver() string { if x != nil { - return x.ManageReports + return x.ProdOlapDriver } - return false + return "" } -func (x *ProjectPermissions) GetCreateAlerts() bool { +func (x *Project) GetProdOlapDsn() string { if x != nil { - return x.CreateAlerts + return x.ProdOlapDsn } - return false + return "" } -func (x *ProjectPermissions) GetManageAlerts() bool { +func (x *Project) GetProdSlots() int64 { if x != nil { - return x.ManageAlerts + return x.ProdSlots } - return false + return 0 } -type Member 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"` - UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` - RoleName string `protobuf:"bytes,4,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` +func (x *Project) GetProdDeploymentId() string { + if x != nil { + return x.ProdDeploymentId + } + return "" } -func (x *Member) Reset() { - *x = Member{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[172] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Project) GetFrontendUrl() string { + if x != nil { + return x.FrontendUrl } + return "" } -func (x *Member) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Member) ProtoMessage() {} - -func (x *Member) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[172] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Member.ProtoReflect.Descriptor instead. -func (*Member) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{172} -} - -func (x *Member) GetUserId() string { - if x != nil { - return x.UserId - } - return "" -} - -func (x *Member) GetUserEmail() string { +func (x *Project) GetProdTtlSeconds() int64 { if x != nil { - return x.UserEmail + return x.ProdTtlSeconds } - return "" + return 0 } -func (x *Member) GetUserName() string { +func (x *Project) GetAnnotations() map[string]string { if x != nil { - return x.UserName + return x.Annotations } - return "" + return nil } -func (x *Member) GetRoleName() string { +func (x *Project) GetProdVersion() string { if x != nil { - return x.RoleName + return x.ProdVersion } return "" } -func (x *Member) GetCreatedOn() *timestamppb.Timestamp { +func (x *Project) GetCreatedOn() *timestamppb.Timestamp { if x != nil { return x.CreatedOn } return nil } -func (x *Member) GetUpdatedOn() *timestamppb.Timestamp { +func (x *Project) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { return x.UpdatedOn } return nil } -type UserInvite struct { +type Deployment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - InvitedBy string `protobuf:"bytes,3,opt,name=invited_by,json=invitedBy,proto3" json:"invited_by,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + Slots int64 `protobuf:"varint,3,opt,name=slots,proto3" json:"slots,omitempty"` + Branch string `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` + RuntimeHost string `protobuf:"bytes,5,opt,name=runtime_host,json=runtimeHost,proto3" json:"runtime_host,omitempty"` + RuntimeInstanceId string `protobuf:"bytes,6,opt,name=runtime_instance_id,json=runtimeInstanceId,proto3" json:"runtime_instance_id,omitempty"` + Status DeploymentStatus `protobuf:"varint,7,opt,name=status,proto3,enum=rill.admin.v1.DeploymentStatus" json:"status,omitempty"` + StatusMessage string `protobuf:"bytes,8,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` } -func (x *UserInvite) Reset() { - *x = UserInvite{} +func (x *Deployment) Reset() { + *x = Deployment{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[173] + mi := &file_rill_admin_v1_api_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UserInvite) String() string { +func (x *Deployment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UserInvite) ProtoMessage() {} +func (*Deployment) ProtoMessage() {} -func (x *UserInvite) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[173] +func (x *Deployment) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10546,123 +10461,112 @@ func (x *UserInvite) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UserInvite.ProtoReflect.Descriptor instead. -func (*UserInvite) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{173} +// Deprecated: Use Deployment.ProtoReflect.Descriptor instead. +func (*Deployment) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{175} } -func (x *UserInvite) GetEmail() string { +func (x *Deployment) GetId() string { if x != nil { - return x.Email + return x.Id } return "" } -func (x *UserInvite) GetRole() string { +func (x *Deployment) GetProjectId() string { if x != nil { - return x.Role + return x.ProjectId } return "" } -func (x *UserInvite) GetInvitedBy() string { +func (x *Deployment) GetSlots() int64 { if x != nil { - return x.InvitedBy + return x.Slots } - return "" + return 0 } -type WhitelistedDomain struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` +func (x *Deployment) GetBranch() string { + if x != nil { + return x.Branch + } + return "" } -func (x *WhitelistedDomain) Reset() { - *x = WhitelistedDomain{} - if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[174] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Deployment) GetRuntimeHost() string { + if x != nil { + return x.RuntimeHost } + return "" } -func (x *WhitelistedDomain) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Deployment) GetRuntimeInstanceId() string { + if x != nil { + return x.RuntimeInstanceId + } + return "" } -func (*WhitelistedDomain) ProtoMessage() {} - -func (x *WhitelistedDomain) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[174] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Deployment) GetStatus() DeploymentStatus { + if x != nil { + return x.Status } - return mi.MessageOf(x) + return DeploymentStatus_DEPLOYMENT_STATUS_UNSPECIFIED } -// Deprecated: Use WhitelistedDomain.ProtoReflect.Descriptor instead. -func (*WhitelistedDomain) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{174} +func (x *Deployment) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" } -func (x *WhitelistedDomain) GetDomain() string { +func (x *Deployment) GetCreatedOn() *timestamppb.Timestamp { if x != nil { - return x.Domain + return x.CreatedOn } - return "" + return nil } -func (x *WhitelistedDomain) GetRole() string { +func (x *Deployment) GetUpdatedOn() *timestamppb.Timestamp { if x != nil { - return x.Role + return x.UpdatedOn } - return "" + return nil } -type Bookmark struct { +type OrganizationPermissions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - ResourceKind string `protobuf:"bytes,10,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` - ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - UserId string `protobuf:"bytes,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - Default bool `protobuf:"varint,11,opt,name=default,proto3" json:"default,omitempty"` - Shared bool `protobuf:"varint,12,opt,name=shared,proto3" json:"shared,omitempty"` - CreatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` - UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` + ReadOrg bool `protobuf:"varint,1,opt,name=read_org,json=readOrg,proto3" json:"read_org,omitempty"` + ManageOrg bool `protobuf:"varint,2,opt,name=manage_org,json=manageOrg,proto3" json:"manage_org,omitempty"` + ReadProjects bool `protobuf:"varint,3,opt,name=read_projects,json=readProjects,proto3" json:"read_projects,omitempty"` + CreateProjects bool `protobuf:"varint,4,opt,name=create_projects,json=createProjects,proto3" json:"create_projects,omitempty"` + ManageProjects bool `protobuf:"varint,5,opt,name=manage_projects,json=manageProjects,proto3" json:"manage_projects,omitempty"` + ReadOrgMembers bool `protobuf:"varint,6,opt,name=read_org_members,json=readOrgMembers,proto3" json:"read_org_members,omitempty"` + ManageOrgMembers bool `protobuf:"varint,7,opt,name=manage_org_members,json=manageOrgMembers,proto3" json:"manage_org_members,omitempty"` } -func (x *Bookmark) Reset() { - *x = Bookmark{} +func (x *OrganizationPermissions) Reset() { + *x = OrganizationPermissions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[175] + mi := &file_rill_admin_v1_api_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bookmark) String() string { +func (x *OrganizationPermissions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bookmark) ProtoMessage() {} +func (*OrganizationPermissions) ProtoMessage() {} -func (x *Bookmark) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[175] +func (x *OrganizationPermissions) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10673,70 +10577,558 @@ func (x *Bookmark) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bookmark.ProtoReflect.Descriptor instead. -func (*Bookmark) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{175} +// Deprecated: Use OrganizationPermissions.ProtoReflect.Descriptor instead. +func (*OrganizationPermissions) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{176} } -func (x *Bookmark) GetId() string { +func (x *OrganizationPermissions) GetReadOrg() bool { if x != nil { - return x.Id + return x.ReadOrg } - return "" + return false } -func (x *Bookmark) GetDisplayName() string { +func (x *OrganizationPermissions) GetManageOrg() bool { if x != nil { - return x.DisplayName + return x.ManageOrg } - return "" + return false } -func (x *Bookmark) GetDescription() string { +func (x *OrganizationPermissions) GetReadProjects() bool { if x != nil { - return x.Description + return x.ReadProjects } - return "" + return false } -func (x *Bookmark) GetData() []byte { +func (x *OrganizationPermissions) GetCreateProjects() bool { if x != nil { - return x.Data + return x.CreateProjects } - return nil + return false } -func (x *Bookmark) GetResourceKind() string { +func (x *OrganizationPermissions) GetManageProjects() bool { if x != nil { - return x.ResourceKind + return x.ManageProjects } - return "" + return false } -func (x *Bookmark) GetResourceName() string { +func (x *OrganizationPermissions) GetReadOrgMembers() bool { if x != nil { - return x.ResourceName + return x.ReadOrgMembers } - return "" + return false } -func (x *Bookmark) GetProjectId() string { +func (x *OrganizationPermissions) GetManageOrgMembers() bool { if x != nil { - return x.ProjectId + return x.ManageOrgMembers } - return "" + return false } -func (x *Bookmark) GetUserId() string { - if x != nil { - return x.UserId - } - return "" +type ProjectPermissions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ReadProject bool `protobuf:"varint,1,opt,name=read_project,json=readProject,proto3" json:"read_project,omitempty"` + ManageProject bool `protobuf:"varint,2,opt,name=manage_project,json=manageProject,proto3" json:"manage_project,omitempty"` + ReadProd bool `protobuf:"varint,3,opt,name=read_prod,json=readProd,proto3" json:"read_prod,omitempty"` + ReadProdStatus bool `protobuf:"varint,4,opt,name=read_prod_status,json=readProdStatus,proto3" json:"read_prod_status,omitempty"` + ManageProd bool `protobuf:"varint,5,opt,name=manage_prod,json=manageProd,proto3" json:"manage_prod,omitempty"` + ReadDev bool `protobuf:"varint,6,opt,name=read_dev,json=readDev,proto3" json:"read_dev,omitempty"` + ReadDevStatus bool `protobuf:"varint,7,opt,name=read_dev_status,json=readDevStatus,proto3" json:"read_dev_status,omitempty"` + ManageDev bool `protobuf:"varint,8,opt,name=manage_dev,json=manageDev,proto3" json:"manage_dev,omitempty"` + ReadProjectMembers bool `protobuf:"varint,9,opt,name=read_project_members,json=readProjectMembers,proto3" json:"read_project_members,omitempty"` + ManageProjectMembers bool `protobuf:"varint,10,opt,name=manage_project_members,json=manageProjectMembers,proto3" json:"manage_project_members,omitempty"` + CreateMagicAuthTokens bool `protobuf:"varint,15,opt,name=create_magic_auth_tokens,json=createMagicAuthTokens,proto3" json:"create_magic_auth_tokens,omitempty"` + ManageMagicAuthTokens bool `protobuf:"varint,16,opt,name=manage_magic_auth_tokens,json=manageMagicAuthTokens,proto3" json:"manage_magic_auth_tokens,omitempty"` + CreateReports bool `protobuf:"varint,11,opt,name=create_reports,json=createReports,proto3" json:"create_reports,omitempty"` + ManageReports bool `protobuf:"varint,12,opt,name=manage_reports,json=manageReports,proto3" json:"manage_reports,omitempty"` + CreateAlerts bool `protobuf:"varint,13,opt,name=create_alerts,json=createAlerts,proto3" json:"create_alerts,omitempty"` + ManageAlerts bool `protobuf:"varint,14,opt,name=manage_alerts,json=manageAlerts,proto3" json:"manage_alerts,omitempty"` + CreateBookmarks bool `protobuf:"varint,17,opt,name=create_bookmarks,json=createBookmarks,proto3" json:"create_bookmarks,omitempty"` + ManageBookmarks bool `protobuf:"varint,18,opt,name=manage_bookmarks,json=manageBookmarks,proto3" json:"manage_bookmarks,omitempty"` } -func (x *Bookmark) GetDefault() bool { - if x != nil { - return x.Default +func (x *ProjectPermissions) Reset() { + *x = ProjectPermissions{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProjectPermissions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectPermissions) ProtoMessage() {} + +func (x *ProjectPermissions) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[177] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectPermissions.ProtoReflect.Descriptor instead. +func (*ProjectPermissions) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{177} +} + +func (x *ProjectPermissions) GetReadProject() bool { + if x != nil { + return x.ReadProject + } + return false +} + +func (x *ProjectPermissions) GetManageProject() bool { + if x != nil { + return x.ManageProject + } + return false +} + +func (x *ProjectPermissions) GetReadProd() bool { + if x != nil { + return x.ReadProd + } + return false +} + +func (x *ProjectPermissions) GetReadProdStatus() bool { + if x != nil { + return x.ReadProdStatus + } + return false +} + +func (x *ProjectPermissions) GetManageProd() bool { + if x != nil { + return x.ManageProd + } + return false +} + +func (x *ProjectPermissions) GetReadDev() bool { + if x != nil { + return x.ReadDev + } + return false +} + +func (x *ProjectPermissions) GetReadDevStatus() bool { + if x != nil { + return x.ReadDevStatus + } + return false +} + +func (x *ProjectPermissions) GetManageDev() bool { + if x != nil { + return x.ManageDev + } + return false +} + +func (x *ProjectPermissions) GetReadProjectMembers() bool { + if x != nil { + return x.ReadProjectMembers + } + return false +} + +func (x *ProjectPermissions) GetManageProjectMembers() bool { + if x != nil { + return x.ManageProjectMembers + } + return false +} + +func (x *ProjectPermissions) GetCreateMagicAuthTokens() bool { + if x != nil { + return x.CreateMagicAuthTokens + } + return false +} + +func (x *ProjectPermissions) GetManageMagicAuthTokens() bool { + if x != nil { + return x.ManageMagicAuthTokens + } + return false +} + +func (x *ProjectPermissions) GetCreateReports() bool { + if x != nil { + return x.CreateReports + } + return false +} + +func (x *ProjectPermissions) GetManageReports() bool { + if x != nil { + return x.ManageReports + } + return false +} + +func (x *ProjectPermissions) GetCreateAlerts() bool { + if x != nil { + return x.CreateAlerts + } + return false +} + +func (x *ProjectPermissions) GetManageAlerts() bool { + if x != nil { + return x.ManageAlerts + } + return false +} + +func (x *ProjectPermissions) GetCreateBookmarks() bool { + if x != nil { + return x.CreateBookmarks + } + return false +} + +func (x *ProjectPermissions) GetManageBookmarks() bool { + if x != nil { + return x.ManageBookmarks + } + return false +} + +type Member 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"` + UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"` + RoleName string `protobuf:"bytes,4,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` +} + +func (x *Member) Reset() { + *x = Member{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Member) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Member) ProtoMessage() {} + +func (x *Member) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[178] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Member.ProtoReflect.Descriptor instead. +func (*Member) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{178} +} + +func (x *Member) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *Member) GetUserEmail() string { + if x != nil { + return x.UserEmail + } + return "" +} + +func (x *Member) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *Member) GetRoleName() string { + if x != nil { + return x.RoleName + } + return "" +} + +func (x *Member) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *Member) GetUpdatedOn() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedOn + } + return nil +} + +type UserInvite struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + InvitedBy string `protobuf:"bytes,3,opt,name=invited_by,json=invitedBy,proto3" json:"invited_by,omitempty"` +} + +func (x *UserInvite) Reset() { + *x = UserInvite{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[179] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserInvite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserInvite) ProtoMessage() {} + +func (x *UserInvite) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[179] + 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 UserInvite.ProtoReflect.Descriptor instead. +func (*UserInvite) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{179} +} + +func (x *UserInvite) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *UserInvite) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *UserInvite) GetInvitedBy() string { + if x != nil { + return x.InvitedBy + } + return "" +} + +type WhitelistedDomain struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` +} + +func (x *WhitelistedDomain) Reset() { + *x = WhitelistedDomain{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[180] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WhitelistedDomain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WhitelistedDomain) ProtoMessage() {} + +func (x *WhitelistedDomain) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[180] + 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 WhitelistedDomain.ProtoReflect.Descriptor instead. +func (*WhitelistedDomain) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{180} +} + +func (x *WhitelistedDomain) GetDomain() string { + if x != nil { + return x.Domain + } + return "" +} + +func (x *WhitelistedDomain) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +type Bookmark struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + ResourceKind string `protobuf:"bytes,10,opt,name=resource_kind,json=resourceKind,proto3" json:"resource_kind,omitempty"` + ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + ProjectId string `protobuf:"bytes,5,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + UserId string `protobuf:"bytes,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + Default bool `protobuf:"varint,11,opt,name=default,proto3" json:"default,omitempty"` + Shared bool `protobuf:"varint,12,opt,name=shared,proto3" json:"shared,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + UpdatedOn *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_on,json=updatedOn,proto3" json:"updated_on,omitempty"` +} + +func (x *Bookmark) Reset() { + *x = Bookmark{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[181] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bookmark) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bookmark) ProtoMessage() {} + +func (x *Bookmark) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[181] + 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 Bookmark.ProtoReflect.Descriptor instead. +func (*Bookmark) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{181} +} + +func (x *Bookmark) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Bookmark) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *Bookmark) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Bookmark) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *Bookmark) GetResourceKind() string { + if x != nil { + return x.ResourceKind + } + return "" +} + +func (x *Bookmark) GetResourceName() string { + if x != nil { + return x.ResourceName + } + return "" +} + +func (x *Bookmark) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *Bookmark) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *Bookmark) GetDefault() bool { + if x != nil { + return x.Default } return false } @@ -10775,7 +11167,7 @@ type ServiceToken struct { func (x *ServiceToken) Reset() { *x = ServiceToken{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[176] + mi := &file_rill_admin_v1_api_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10788,7 +11180,7 @@ func (x *ServiceToken) String() string { func (*ServiceToken) ProtoMessage() {} func (x *ServiceToken) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[176] + mi := &file_rill_admin_v1_api_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10801,7 +11193,7 @@ func (x *ServiceToken) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceToken.ProtoReflect.Descriptor instead. func (*ServiceToken) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{176} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{182} } func (x *ServiceToken) GetId() string { @@ -10825,6 +11217,133 @@ func (x *ServiceToken) GetExpiresOn() *timestamppb.Timestamp { return nil } +type MagicAuthToken struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + CreatedOn *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_on,json=createdOn,proto3" json:"created_on,omitempty"` + ExpiresOn *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_on,json=expiresOn,proto3" json:"expires_on,omitempty"` + UsedOn *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=used_on,json=usedOn,proto3" json:"used_on,omitempty"` + CreatedByUserId string `protobuf:"bytes,6,opt,name=created_by_user_id,json=createdByUserId,proto3" json:"created_by_user_id,omitempty"` + CreatedByUserEmail string `protobuf:"bytes,7,opt,name=created_by_user_email,json=createdByUserEmail,proto3" json:"created_by_user_email,omitempty"` + Attributes *structpb.Struct `protobuf:"bytes,8,opt,name=attributes,proto3" json:"attributes,omitempty"` + MetricsView string `protobuf:"bytes,9,opt,name=metrics_view,json=metricsView,proto3" json:"metrics_view,omitempty"` + MetricsViewFilter *v1.Expression `protobuf:"bytes,10,opt,name=metrics_view_filter,json=metricsViewFilter,proto3" json:"metrics_view_filter,omitempty"` + MetricsViewFields []string `protobuf:"bytes,11,rep,name=metrics_view_fields,json=metricsViewFields,proto3" json:"metrics_view_fields,omitempty"` +} + +func (x *MagicAuthToken) Reset() { + *x = MagicAuthToken{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_admin_v1_api_proto_msgTypes[183] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MagicAuthToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MagicAuthToken) ProtoMessage() {} + +func (x *MagicAuthToken) ProtoReflect() protoreflect.Message { + mi := &file_rill_admin_v1_api_proto_msgTypes[183] + 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 MagicAuthToken.ProtoReflect.Descriptor instead. +func (*MagicAuthToken) Descriptor() ([]byte, []int) { + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{183} +} + +func (x *MagicAuthToken) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MagicAuthToken) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *MagicAuthToken) GetCreatedOn() *timestamppb.Timestamp { + if x != nil { + return x.CreatedOn + } + return nil +} + +func (x *MagicAuthToken) GetExpiresOn() *timestamppb.Timestamp { + if x != nil { + return x.ExpiresOn + } + return nil +} + +func (x *MagicAuthToken) GetUsedOn() *timestamppb.Timestamp { + if x != nil { + return x.UsedOn + } + return nil +} + +func (x *MagicAuthToken) GetCreatedByUserId() string { + if x != nil { + return x.CreatedByUserId + } + return "" +} + +func (x *MagicAuthToken) GetCreatedByUserEmail() string { + if x != nil { + return x.CreatedByUserEmail + } + return "" +} + +func (x *MagicAuthToken) GetAttributes() *structpb.Struct { + if x != nil { + return x.Attributes + } + return nil +} + +func (x *MagicAuthToken) GetMetricsView() string { + if x != nil { + return x.MetricsView + } + return "" +} + +func (x *MagicAuthToken) GetMetricsViewFilter() *v1.Expression { + if x != nil { + return x.MetricsViewFilter + } + return nil +} + +func (x *MagicAuthToken) GetMetricsViewFields() []string { + if x != nil { + return x.MetricsViewFields + } + return nil +} + type VirtualFile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -10839,7 +11358,7 @@ type VirtualFile struct { func (x *VirtualFile) Reset() { *x = VirtualFile{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[177] + mi := &file_rill_admin_v1_api_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10852,7 +11371,7 @@ func (x *VirtualFile) String() string { func (*VirtualFile) ProtoMessage() {} func (x *VirtualFile) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[177] + mi := &file_rill_admin_v1_api_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10865,7 +11384,7 @@ func (x *VirtualFile) ProtoReflect() protoreflect.Message { // Deprecated: Use VirtualFile.ProtoReflect.Descriptor instead. func (*VirtualFile) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{177} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{184} } func (x *VirtualFile) GetPath() string { @@ -10919,7 +11438,7 @@ type ReportOptions struct { func (x *ReportOptions) Reset() { *x = ReportOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[178] + mi := &file_rill_admin_v1_api_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10932,7 +11451,7 @@ func (x *ReportOptions) String() string { func (*ReportOptions) ProtoMessage() {} func (x *ReportOptions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[178] + mi := &file_rill_admin_v1_api_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10945,7 +11464,7 @@ func (x *ReportOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportOptions.ProtoReflect.Descriptor instead. func (*ReportOptions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{178} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{185} } func (x *ReportOptions) GetTitle() string { @@ -11060,7 +11579,7 @@ type AlertOptions struct { func (x *AlertOptions) Reset() { *x = AlertOptions{} if protoimpl.UnsafeEnabled { - mi := &file_rill_admin_v1_api_proto_msgTypes[179] + mi := &file_rill_admin_v1_api_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11073,7 +11592,7 @@ func (x *AlertOptions) String() string { func (*AlertOptions) ProtoMessage() {} func (x *AlertOptions) ProtoReflect() protoreflect.Message { - mi := &file_rill_admin_v1_api_proto_msgTypes[179] + mi := &file_rill_admin_v1_api_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11086,7 +11605,7 @@ func (x *AlertOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use AlertOptions.ProtoReflect.Descriptor instead. func (*AlertOptions) Descriptor() ([]byte, []int) { - return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{179} + return file_rill_admin_v1_api_proto_rawDescGZIP(), []int{186} } func (x *AlertOptions) GetTitle() string { @@ -11179,663 +11698,680 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x58, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x18, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, - 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x86, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, - 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, - 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5a, - 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x1a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x19, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, - 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, - 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, - 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x72, 0x69, 0x6c, 0x6c, + 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, + 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x62, + 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, + 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x86, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x41, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2c, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, - 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, - 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x23, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x8d, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, - 0xf0, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x5a, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x1a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x19, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1c, 0x0a, 0x1a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x19, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, + 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x1a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, + 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x81, 0x01, + 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, + 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, - 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x70, 0x72, - 0x6f, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6a, 0x77, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x77, 0x74, 0x12, 0x52, - 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xa3, 0x02, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x12, 0x5b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, + 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72, + 0x6f, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, + 0x70, 0x72, 0x6f, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6a, 0x77, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6a, 0x77, 0x74, + 0x12, 0x52, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa3, 0x02, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x5b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, + 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x01, 0x0a, 0x19, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, - 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x6f, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, - 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x9f, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, - 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x66, - 0x6f, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x1a, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x3c, + 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x01, 0x0a, + 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, + 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x6f, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x29, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x9f, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, - 0x88, 0x04, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, - 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x38, 0x0a, 0x0a, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x66, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x72, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x72, 0x63, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, - 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x74, 0x6c, - 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x4b, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x19, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, + 0x00, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x05, 0x0a, + 0x03, 0x66, 0x6f, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x22, 0x88, 0x04, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x19, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, + 0x00, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x68, + 0x65, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x38, 0x0a, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x66, 0x6f, 0x72, 0x22, 0xba, 0x01, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x72, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x72, + 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, + 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x4b, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, + 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x22, 0x69, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x22, 0x69, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x49, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x69, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x22, 0xbf, 0x04, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x11, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x49, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x69, 0x0a, 0x14, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, + 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, + 0x70, 0x5f, 0x64, 0x73, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x73, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x72, + 0x6c, 0x12, 0x50, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x49, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, + 0x57, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc5, 0x04, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x88, 0x01, + 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x09, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x04, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x25, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, + 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x07, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, + 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, 0x64, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, 0x74, 0x6c, + 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x6f, + 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x15, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8b, 0x02, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, - 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x22, 0xbf, 0x04, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, - 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x5f, - 0x64, 0x73, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x4f, - 0x6c, 0x61, 0x70, 0x44, 0x73, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, - 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x12, - 0x50, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x49, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x57, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xc5, 0x04, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, - 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x09, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x04, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x05, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, 0x74, 0x6c, - 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x48, 0x07, - 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x65, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x8b, 0x02, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xba, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x38, 0x01, 0x22, 0xba, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, - 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a, - 0x17, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x1a, 0x0a, - 0x18, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x1c, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, - 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x7a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x01, 0x0a, - 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, - 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7e, 0x0a, 0x1f, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, - 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7e, 0x0a, 0x1c, 0x41, - 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x46, 0x0a, 0x1d, 0x41, - 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x75, 0x70, 0x22, 0x9b, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x6b, 0x65, 0x65, 0x70, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x73, 0x22, 0x22, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1b, - 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x20, - 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x29, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x52, 0x0a, 0x13, - 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x64, - 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, - 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x42, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x22, 0xab, 0x02, 0x0a, 0x17, 0x53, 0x75, 0x64, - 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, - 0x2f, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, - 0x12, 0x32, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x37, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, - 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf9, 0x02, 0x0a, 0x23, 0x53, 0x75, 0x64, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x73, 0x6c, 0x6f, 0x74, 0x73, - 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x50, 0x65, - 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, - 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x12, 0x6f, - 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, - 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x73, 0x22, 0x67, 0x0a, 0x24, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, - 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x1b, 0x53, - 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, - 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, - 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x4f, 0x72, 0x67, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, 0x72, - 0x67, 0x73, 0x22, 0x47, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x8e, 0x02, 0x0a, 0x1c, - 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x5e, 0x0a, 0x0b, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x1d, - 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0xb3, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x75, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb3, 0x01, 0x0a, - 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x3e, 0x0a, 0x17, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x1a, 0x0a, 0x18, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x0a, 0x1c, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0x79, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x7a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, + 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, + 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7e, 0x0a, + 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa5, 0x01, - 0x0a, 0x17, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7e, 0x0a, + 0x1c, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x46, 0x0a, + 0x1d, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x22, 0x9b, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x6b, 0x65, 0x65, 0x70, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, + 0x0a, 0x20, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x53, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x16, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x52, + 0x0a, 0x13, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, + 0x65, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x16, 0x53, + 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x17, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0d, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x42, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x22, 0xab, 0x02, 0x0a, 0x17, 0x53, + 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x12, 0x2f, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x6f, + 0x72, 0x67, 0x12, 0x32, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf9, 0x02, 0x0a, 0x23, 0x53, 0x75, 0x64, + 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, + 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x73, 0x6c, 0x6f, + 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, 0x73, + 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, + 0x12, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, + 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x24, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, + 0x1b, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6f, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x4f, 0x72, 0x67, 0x73, 0x88, 0x01, 0x01, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x6f, 0x72, 0x67, 0x73, 0x22, 0x47, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x8e, 0x02, + 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, + 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x5e, + 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, + 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, + 0x0a, 0x1d, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x30, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x75, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb3, + 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x79, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x07, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xa5, 0x01, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x22, 0x8b, 0x01, 0x0a, 0x1a, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, @@ -11843,14 +12379,10 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, - 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, - 0x6e, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x22, 0x8b, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, @@ -11858,739 +12390,789 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x40, - 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x22, 0x2f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x22, 0x3a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x41, 0x0a, - 0x0f, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, - 0x22, 0x60, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x83, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, - 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x35, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x09, 0x62, 0x6f, 0x6f, - 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, - 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x4a, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, - 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x8b, 0x02, 0x0a, 0x15, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x22, 0x3a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, + 0x41, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, + 0x6e, 0x65, 0x22, 0x60, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x35, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x09, 0x62, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x64, 0x22, + 0x4a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, + 0x6b, 0x52, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x8b, 0x02, 0x0a, 0x15, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x22, 0x4d, 0x0a, 0x16, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x08, + 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xc3, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, + 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x22, 0x4d, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x33, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x08, 0x62, 0x6f, - 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xc3, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x49, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x22, 0x18, 0x0a, 0x16, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x64, - 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, - 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, - 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x68, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, - 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x1e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x22, - 0x65, 0x0a, 0x23, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6e, - 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x4d, - 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x24, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, - 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x22, 0x18, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x49, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, + 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x0a, + 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x70, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x68, 0x0a, 0x13, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x29, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x1e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, + 0x64, 0x22, 0x65, 0x0a, 0x23, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x60, 0x01, + 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x6d, + 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x74, + 0x6c, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x24, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x0a, 0x1d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x49, 0x64, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x0a, 0x1c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, + 0x1d, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x0a, 0x1d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, - 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x77, 0x0a, 0x1c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x1d, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0x77, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x1d, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x22, 0x3b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, - 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x22, 0x8d, - 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, - 0x10, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x1c, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd3, 0x04, 0x0a, - 0x1b, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, - 0x68, 0x61, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x68, 0x61, 0x73, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x67, - 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x1c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xa7, 0x01, 0x0a, 0x25, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x23, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x28, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x77, 0x0a, 0x28, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, - 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xa9, - 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x8b, 0x01, 0x0a, 0x1e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x21, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x1e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x21, 0x0a, 0x1f, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, - 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x1e, - 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x25, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x22, 0x28, 0x0a, 0x26, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x01, 0x0a, - 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x77, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x11, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x10, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x54, 0x0a, + 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, + 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x22, 0xad, 0x02, 0x0a, 0x1a, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, + 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x74, 0x6c, 0x4d, 0x69, 0x6e, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, + 0x69, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x4b, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, + 0x69, 0x65, 0x77, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x1b, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, 0x69, + 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xb4, 0x01, 0x0a, 0x1a, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, + 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x7c, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x35, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x38, 0x0a, 0x1b, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x22, 0x8d, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x47, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x6c, 0x12, + 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0xd3, 0x04, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, + 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x1c, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x1a, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xa7, 0x01, + 0x0a, 0x25, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x23, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0x77, 0x0a, 0x28, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x28, 0x0a, 0x26, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x76, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x69, + 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x22, 0x8b, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x22, 0x21, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x22, 0x21, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x25, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x06, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1b, 0x0a, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x28, 0x0a, 0x26, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, + 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, + 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, + 0x28, 0x0a, 0x26, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x63, 0x0a, 0x25, 0x4c, 0x69, 0x73, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x4b, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x22, 0x98, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x47, 0x0a, 0x12, - 0x67, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, - 0x6f, 0x6e, 0x18, 0x02, 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, 0x0f, 0x67, 0x69, 0x74, 0x55, 0x72, 0x6c, 0x45, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x62, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x69, 0x74, 0x53, - 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x50, 0x75, 0x6c, 0x6c, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, - 0x2a, 0x04, 0x18, 0x64, 0x40, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x73, 0x0a, 0x17, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, - 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc0, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x56, 0x0a, 0x0b, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x64, - 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, - 0x69, 0x74, 0x55, 0x72, 0x6c, 0x22, 0xe6, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x55, 0x0a, 0x0b, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, - 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, - 0x6c, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x22, 0x97, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x55, - 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x49, 0x0a, - 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x12, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x40, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x2a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01, 0x0a, - 0x11, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x18, - 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x63, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0x4b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x22, 0x98, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, + 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, + 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, + 0x74, 0x55, 0x72, 0x6c, 0x12, 0x47, 0x0a, 0x12, 0x67, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x5f, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 0x18, 0x02, 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, 0x0f, 0x67, 0x69, + 0x74, 0x55, 0x72, 0x6c, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x12, 0x1f, 0x0a, + 0x0b, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x67, 0x69, 0x74, 0x53, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x22, 0x96, + 0x01, 0x0a, 0x16, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x12, 0x26, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0x64, 0x40, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x73, 0x0a, 0x17, 0x50, 0x75, 0x6c, 0x6c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc0, 0x02, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x56, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x1a, + 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x6c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, + 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x55, + 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x55, 0x72, 0x6c, 0x22, 0xe6, 0x02, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x12, 0x55, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x66, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, + 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x64, + 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x64, + 0x69, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x49, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, + 0x6f, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x12, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x22, 0x95, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x6e, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0x0a, 0x14, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x14, + 0x0a, 0x12, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x19, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, - 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x30, 0x0a, 0x1a, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x93, 0x01, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x29, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, - 0x10, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x0a, 0x17, 0x55, 0x6e, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x66, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x67, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x68, 0x0a, 0x14, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x99, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3f, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2f, 0x0a, - 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, - 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, - 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x67, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x40, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, + 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x30, 0x0a, 0x1a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, - 0x61, 0x6d, 0x6c, 0x22, 0x6b, 0x0a, 0x10, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x22, 0x13, 0x0a, 0x11, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x95, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x68, 0x6f, 0x74, 0x6f, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x68, 0x6f, 0x74, - 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, - 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, - 0x18, 0x07, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xd5, 0x01, - 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, - 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, - 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x61, 0x6d, 0x6c, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x10, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x13, 0x0a, 0x11, + 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1a, + 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x18, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x67, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x2a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x6b, 0x0a, 0x10, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x95, 0x02, + 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x21, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x06, + 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x07, 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, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x85, 0x02, 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, - 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, - 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xd5, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x35, 0x0a, - 0x0a, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, 0x72, 0x67, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, - 0x4f, 0x72, 0x67, 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, - 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x6c, - 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x50, - 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, - 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x6f, 0x75, 0x74, 0x73, 0x74, - 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x22, 0xce, 0x06, - 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, - 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, - 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x5f, - 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, - 0x6f, 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, - 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x73, 0x6e, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, - 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, - 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x55, 0x72, 0x6c, - 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, - 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x49, 0x0a, 0x0b, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 0x18, 0x0f, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x1a, 0x3e, - 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, - 0x03, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x6c, 0x6f, - 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2e, 0x0a, - 0x13, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x4f, 0x6e, 0x22, 0xa2, 0x02, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x72, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, - 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, - 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0xa8, 0x04, 0x0a, 0x12, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, - 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, - 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x12, 0x26, 0x0a, 0x0f, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x64, - 0x65, 0x76, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x44, 0x65, 0x76, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x12, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x85, 0x02, + 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x35, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x6f, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x75, 0x73, 0x65, 0x72, 0x4f, 0x72, 0x67, 0x73, 0x22, 0xd6, 0x01, 0x0a, + 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, + 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x12, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x50, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x12, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x73, 0x22, 0xce, 0x06, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, + 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x72, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, + 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, 0x70, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x6f, 0x6c, 0x61, + 0x70, 0x5f, 0x64, 0x73, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, + 0x64, 0x4f, 0x6c, 0x61, 0x70, 0x44, 0x73, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x64, 0x5f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, + 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x54, 0x74, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x12, 0x49, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0e, + 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, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0f, 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, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x03, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x6f, 0x6e, 0x18, 0x09, 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, 0x4f, 0x6e, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, + 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xa2, 0x02, 0x0a, 0x17, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x6f, 0x72, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, 0x64, 0x4f, + 0x72, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, + 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x67, + 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x22, 0xf0, 0x05, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, + 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x12, 0x28, + 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x50, 0x72, + 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x61, + 0x64, 0x44, 0x65, 0x76, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x64, 0x65, 0x76, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, + 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x44, 0x65, 0x76, 0x12, 0x30, 0x0a, 0x14, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x61, 0x64, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, + 0x16, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x67, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x67, + 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x18, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x29, 0x0a, + 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 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, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, @@ -12650,908 +13232,975 @@ var file_rill_admin_v1_api_proto_rawDesc = []byte{ 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 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, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, - 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x22, 0xa3, 0x04, 0x0a, 0x0e, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x4f, 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x72, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, - 0x11, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, - 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, - 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, - 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, - 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, - 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, - 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, - 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, - 0x22, 0xb0, 0x03, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, - 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, - 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, 0x66, 0x74, - 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, 0x61, 0x63, 0x6b, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, - 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0b, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x73, 0x2a, 0x6e, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x47, 0x49, 0x54, 0x48, 0x55, - 0x42, 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, 0x1a, 0x0a, 0x16, 0x47, 0x49, - 0x54, 0x48, 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, - 0x45, 0x10, 0x02, 0x2a, 0x8b, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x45, 0x50, 0x4c, - 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x44, - 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x12, 0x33, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x06, 0x75, 0x73, 0x65, 0x64, + 0x4f, 0x6e, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x31, 0x0a, 0x15, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x4b, + 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x0b, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x63, 0x72, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, + 0x72, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, + 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, + 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x70, + 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, 0x61, 0x63, 0x6b, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6c, + 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, + 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0xb0, 0x03, 0x0a, 0x0c, 0x41, 0x6c, 0x65, 0x72, 0x74, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x2b, 0x0a, + 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, + 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, + 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6c, + 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, + 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6c, 0x61, 0x63, + 0x6b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2a, 0x6e, 0x0a, 0x10, 0x47, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, + 0x1d, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 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, 0x1a, 0x0a, 0x16, 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, + 0x47, 0x49, 0x54, 0x48, 0x55, 0x42, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x2a, 0x8b, 0x01, 0x0a, 0x10, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, + 0x0a, 0x1d, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, + 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x4f, 0x4b, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, - 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x04, 0x32, 0xc0, 0x64, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x81, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x87, - 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x32, 0xcc, 0x68, 0x0a, 0x0c, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, + 0x12, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x81, 0x01, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x82, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x87, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8b, + 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x8e, 0x01, 0x0a, + 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x32, 0x18, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbc, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, + 0x3a, 0x01, 0x2a, 0x32, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xbc, 0x01, + 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, + 0x72, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x46, 0x6f, 0x72, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, + 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, + 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x12, 0xb5, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, + 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, - 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xb5, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, - 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x37, 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9c, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, - 0x32, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9c, + 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x32, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc1, 0x01, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, + 0x1a, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc1, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x1a, 0x3f, 0x2f, 0x76, 0x31, 0x2f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x10, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, - 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, - 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x12, 0x84, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x72, - 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xaa, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, + 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x12, 0xa6, 0x01, + 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, + 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x84, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x72, 0x65, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xaa, 0x01, + 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, + 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x17, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xa0, 0x01, 0x0a, 0x11, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, - 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, - 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x18, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x32, 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x7d, 0x12, 0xa0, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x32, 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xbb, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x4f, 0x72, + 0x62, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xbb, 0x01, 0x0a, + 0x19, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, - 0x01, 0x2a, 0x1a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x1a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xab, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x2a, 0x43, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, - 0x12, 0xbf, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x1a, 0x43, 0x2f, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, + 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0xab, 0x01, 0x0a, + 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x7d, 0x12, 0x78, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, + 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x13, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x45, 0x2a, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, + 0x3a, 0x01, 0x2a, 0x1a, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x7d, 0x12, 0x78, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xa8, 0x01, 0x0a, - 0x1c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, - 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x72, 0x65, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, - 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x12, 0xb3, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, + 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0xa8, 0x01, 0x0a, 0x1c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x70, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x91, 0x01, + 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, + 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2d, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0xb1, 0x01, 0x0a, 0x17, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x22, - 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0xb7, 0x01, - 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, - 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, - 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xab, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, - 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, - 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x12, 0xb3, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x68, 0x75, 0x62, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x52, 0x65, + 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x85, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, + 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0xb3, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x67, 0x69, 0x74, 0x2d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0xb1, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x2d, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x64, 0x12, 0xb7, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, + 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x7c, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, - 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xc7, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, - 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x95, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1f, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x76, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xab, 0x01, + 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x07, 0x47, + 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, + 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xb3, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x79, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, - 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, - 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, - 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x7c, + 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, + 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0xc7, 0x01, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x49, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, + 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x79, + 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x95, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x64, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, - 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, - 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, - 0x3a, 0x01, 0x2a, 0x32, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, - 0x65, 0x72, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0xb5, - 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, - 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, - 0x3a, 0x01, 0x2a, 0x32, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, - 0x65, 0x72, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xa1, 0x01, 0x0a, 0x15, 0x53, 0x75, 0x64, 0x6f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, + 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, + 0x72, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x53, 0x75, + 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x32, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, - 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x1e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, + 0x73, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x95, 0x01, 0x0a, + 0x14, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x32, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x12, 0xb5, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x73, 0x12, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x6f, 0x74, + 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x51, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x32, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x73, 0x2f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xa1, 0x01, 0x0a, + 0x15, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x64, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x32, 0x22, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x75, 0x70, 0x65, 0x72, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0xd9, 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0xdf, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, - 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0xdf, 0x01, 0x0a, + 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, + 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, - 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, - 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, - 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x12, 0x8f, - 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, - 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x32, 0x35, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x12, 0xc0, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x7d, 0x12, 0xd3, + 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, + 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, + 0x12, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x68, 0x69, 0x74, + 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x64, 0x12, 0x8f, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2e, 0x2f, 0x76, 0x31, + 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x0d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, + 0x3a, 0x01, 0x2a, 0x32, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x0d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, + 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x15, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2b, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, - 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x16, 0x52, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x15, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x15, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x12, 0x77, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x73, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, - 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, - 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7f, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, - 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6f, - 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, - 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7d, 0x0a, 0x0e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, - 0x3a, 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, - 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, - 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, - 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, - 0x65, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x70, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x90, 0x01, 0x0a, 0x0f, 0x50, 0x75, 0x6c, 0x6c, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x25, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, - 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x23, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, - 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x89, 0x01, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x22, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, - 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x9f, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, - 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0a, 0x45, 0x64, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, + 0x9d, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x2a, + 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0xb9, 0x01, 0x0a, 0x13, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, + 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, + 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x22, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x12, 0xb6, 0x01, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, + 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x6d, + 0x61, 0x67, 0x69, 0x63, 0x12, 0x94, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4d, + 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2a, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x4d, 0x61, 0x67, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x15, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x1a, 0x15, 0x2f, 0x76, 0x31, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0x77, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x73, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, + 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7f, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, + 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, + 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, + 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x7d, 0x0a, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x2f, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x24, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x2a, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x6f, + 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4d, 0x65, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x90, 0x01, 0x0a, 0x0f, 0x50, 0x75, + 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x25, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, + 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x2f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x12, 0x8d, 0x01, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x23, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x89, 0x01, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x22, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, + 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x9f, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0a, 0x45, + 0x64, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x01, 0x2a, 0x1a, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc1, 0x01, 0x0a, 0x11, - 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x3a, 0x01, 0x2a, 0x22, - 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, - 0xa3, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x44, 0x2a, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x01, 0x2a, 0x1a, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc1, 0x01, + 0x0a, 0x11, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x3a, 0x01, + 0x2a, 0x22, 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, 0x22, 0x4a, 0x2f, - 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0xb8, 0x01, 0x0a, 0x12, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, - 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, - 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x01, 0x2a, - 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, 0x22, + 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0xb8, 0x01, 0x0a, 0x12, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, + 0x4d, 0x4c, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, + 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, + 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x9b, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x09, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, + 0x1a, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x2f, - 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x9b, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3f, 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x09, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x1a, 0x41, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x10, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x43, 0x2a, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x27, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0xa7, 0x01, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x22, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x10, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, - 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, - 0x2a, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, - 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0xa7, 0x01, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x22, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x76, - 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x79, 0x61, 0x6d, 0x6c, 0x42, 0xad, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x76, 0x31, - 0xa2, 0x02, 0x03, 0x52, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x7d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x42, 0xad, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, + 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, + 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x69, 0x6c, + 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x41, 0x58, 0xaa, 0x02, 0x0d, 0x52, 0x69, 0x6c, 0x6c, 0x2e, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x52, 0x69, 0x6c, 0x6c, 0x5c, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x52, 0x69, 0x6c, 0x6c, 0x5c, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -13567,8 +14216,8 @@ func file_rill_admin_v1_api_proto_rawDescGZIP() []byte { } var file_rill_admin_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_rill_admin_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 191) -var file_rill_admin_v1_api_proto_goTypes = []interface{}{ +var file_rill_admin_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 198) +var file_rill_admin_v1_api_proto_goTypes = []any{ (GithubPermission)(0), // 0: rill.admin.v1.GithubPermission (DeploymentStatus)(0), // 1: rill.admin.v1.DeploymentStatus (*PingRequest)(nil), // 2: rill.admin.v1.PingRequest @@ -13682,345 +14331,366 @@ var file_rill_admin_v1_api_proto_goTypes = []interface{}{ (*IssueServiceAuthTokenResponse)(nil), // 110: rill.admin.v1.IssueServiceAuthTokenResponse (*ListServiceAuthTokensRequest)(nil), // 111: rill.admin.v1.ListServiceAuthTokensRequest (*ListServiceAuthTokensResponse)(nil), // 112: rill.admin.v1.ListServiceAuthTokensResponse - (*GetGithubRepoStatusRequest)(nil), // 113: rill.admin.v1.GetGithubRepoStatusRequest - (*GetGithubRepoStatusResponse)(nil), // 114: rill.admin.v1.GetGithubRepoStatusResponse - (*GetGithubUserStatusRequest)(nil), // 115: rill.admin.v1.GetGithubUserStatusRequest - (*GetGithubUserStatusResponse)(nil), // 116: rill.admin.v1.GetGithubUserStatusResponse - (*GetGitCredentialsRequest)(nil), // 117: rill.admin.v1.GetGitCredentialsRequest - (*GetGitCredentialsResponse)(nil), // 118: rill.admin.v1.GetGitCredentialsResponse - (*CreateWhitelistedDomainRequest)(nil), // 119: rill.admin.v1.CreateWhitelistedDomainRequest - (*CreateWhitelistedDomainResponse)(nil), // 120: rill.admin.v1.CreateWhitelistedDomainResponse - (*RemoveWhitelistedDomainRequest)(nil), // 121: rill.admin.v1.RemoveWhitelistedDomainRequest - (*RemoveWhitelistedDomainResponse)(nil), // 122: rill.admin.v1.RemoveWhitelistedDomainResponse - (*ListWhitelistedDomainsRequest)(nil), // 123: rill.admin.v1.ListWhitelistedDomainsRequest - (*ListWhitelistedDomainsResponse)(nil), // 124: rill.admin.v1.ListWhitelistedDomainsResponse - (*CreateProjectWhitelistedDomainRequest)(nil), // 125: rill.admin.v1.CreateProjectWhitelistedDomainRequest - (*CreateProjectWhitelistedDomainResponse)(nil), // 126: rill.admin.v1.CreateProjectWhitelistedDomainResponse - (*RemoveProjectWhitelistedDomainRequest)(nil), // 127: rill.admin.v1.RemoveProjectWhitelistedDomainRequest - (*RemoveProjectWhitelistedDomainResponse)(nil), // 128: rill.admin.v1.RemoveProjectWhitelistedDomainResponse - (*ListProjectWhitelistedDomainsRequest)(nil), // 129: rill.admin.v1.ListProjectWhitelistedDomainsRequest - (*ListProjectWhitelistedDomainsResponse)(nil), // 130: rill.admin.v1.ListProjectWhitelistedDomainsResponse - (*GetRepoMetaRequest)(nil), // 131: rill.admin.v1.GetRepoMetaRequest - (*GetRepoMetaResponse)(nil), // 132: rill.admin.v1.GetRepoMetaResponse - (*PullVirtualRepoRequest)(nil), // 133: rill.admin.v1.PullVirtualRepoRequest - (*PullVirtualRepoResponse)(nil), // 134: rill.admin.v1.PullVirtualRepoResponse - (*GetReportMetaRequest)(nil), // 135: rill.admin.v1.GetReportMetaRequest - (*GetReportMetaResponse)(nil), // 136: rill.admin.v1.GetReportMetaResponse - (*GetAlertMetaRequest)(nil), // 137: rill.admin.v1.GetAlertMetaRequest - (*GetAlertMetaResponse)(nil), // 138: rill.admin.v1.GetAlertMetaResponse - (*CreateReportRequest)(nil), // 139: rill.admin.v1.CreateReportRequest - (*CreateReportResponse)(nil), // 140: rill.admin.v1.CreateReportResponse - (*EditReportRequest)(nil), // 141: rill.admin.v1.EditReportRequest - (*EditReportResponse)(nil), // 142: rill.admin.v1.EditReportResponse - (*UnsubscribeReportRequest)(nil), // 143: rill.admin.v1.UnsubscribeReportRequest - (*UnsubscribeReportResponse)(nil), // 144: rill.admin.v1.UnsubscribeReportResponse - (*DeleteReportRequest)(nil), // 145: rill.admin.v1.DeleteReportRequest - (*DeleteReportResponse)(nil), // 146: rill.admin.v1.DeleteReportResponse - (*TriggerReportRequest)(nil), // 147: rill.admin.v1.TriggerReportRequest - (*TriggerReportResponse)(nil), // 148: rill.admin.v1.TriggerReportResponse - (*GenerateReportYAMLRequest)(nil), // 149: rill.admin.v1.GenerateReportYAMLRequest - (*GenerateReportYAMLResponse)(nil), // 150: rill.admin.v1.GenerateReportYAMLResponse - (*CreateAlertRequest)(nil), // 151: rill.admin.v1.CreateAlertRequest - (*CreateAlertResponse)(nil), // 152: rill.admin.v1.CreateAlertResponse - (*EditAlertRequest)(nil), // 153: rill.admin.v1.EditAlertRequest - (*EditAlertResponse)(nil), // 154: rill.admin.v1.EditAlertResponse - (*UnsubscribeAlertRequest)(nil), // 155: rill.admin.v1.UnsubscribeAlertRequest - (*UnsubscribeAlertResponse)(nil), // 156: rill.admin.v1.UnsubscribeAlertResponse - (*DeleteAlertRequest)(nil), // 157: rill.admin.v1.DeleteAlertRequest - (*DeleteAlertResponse)(nil), // 158: rill.admin.v1.DeleteAlertResponse - (*GenerateAlertYAMLRequest)(nil), // 159: rill.admin.v1.GenerateAlertYAMLRequest - (*GenerateAlertYAMLResponse)(nil), // 160: rill.admin.v1.GenerateAlertYAMLResponse - (*GetAlertYAMLRequest)(nil), // 161: rill.admin.v1.GetAlertYAMLRequest - (*GetAlertYAMLResponse)(nil), // 162: rill.admin.v1.GetAlertYAMLResponse - (*TelemetryRequest)(nil), // 163: rill.admin.v1.TelemetryRequest - (*TelemetryResponse)(nil), // 164: rill.admin.v1.TelemetryResponse - (*User)(nil), // 165: rill.admin.v1.User - (*Service)(nil), // 166: rill.admin.v1.Service - (*Organization)(nil), // 167: rill.admin.v1.Organization - (*UserQuotas)(nil), // 168: rill.admin.v1.UserQuotas - (*OrganizationQuotas)(nil), // 169: rill.admin.v1.OrganizationQuotas - (*Project)(nil), // 170: rill.admin.v1.Project - (*Deployment)(nil), // 171: rill.admin.v1.Deployment - (*OrganizationPermissions)(nil), // 172: rill.admin.v1.OrganizationPermissions - (*ProjectPermissions)(nil), // 173: rill.admin.v1.ProjectPermissions - (*Member)(nil), // 174: rill.admin.v1.Member - (*UserInvite)(nil), // 175: rill.admin.v1.UserInvite - (*WhitelistedDomain)(nil), // 176: rill.admin.v1.WhitelistedDomain - (*Bookmark)(nil), // 177: rill.admin.v1.Bookmark - (*ServiceToken)(nil), // 178: rill.admin.v1.ServiceToken - (*VirtualFile)(nil), // 179: rill.admin.v1.VirtualFile - (*ReportOptions)(nil), // 180: rill.admin.v1.ReportOptions - (*AlertOptions)(nil), // 181: rill.admin.v1.AlertOptions - nil, // 182: rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry - nil, // 183: rill.admin.v1.GetProjectVariablesResponse.VariablesEntry - nil, // 184: rill.admin.v1.GetIFrameRequest.QueryEntry - nil, // 185: rill.admin.v1.CreateProjectRequest.VariablesEntry - nil, // 186: rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry - nil, // 187: rill.admin.v1.UpdateProjectVariablesResponse.VariablesEntry - nil, // 188: rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry - nil, // 189: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry - nil, // 190: rill.admin.v1.GetReportMetaRequest.AnnotationsEntry - nil, // 191: rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry - nil, // 192: rill.admin.v1.Project.AnnotationsEntry - (*timestamppb.Timestamp)(nil), // 193: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 194: google.protobuf.Struct - (v1.ExportFormat)(0), // 195: rill.runtime.v1.ExportFormat + (*IssueMagicAuthTokenRequest)(nil), // 113: rill.admin.v1.IssueMagicAuthTokenRequest + (*IssueMagicAuthTokenResponse)(nil), // 114: rill.admin.v1.IssueMagicAuthTokenResponse + (*ListMagicAuthTokensRequest)(nil), // 115: rill.admin.v1.ListMagicAuthTokensRequest + (*ListMagicAuthTokensResponse)(nil), // 116: rill.admin.v1.ListMagicAuthTokensResponse + (*RevokeMagicAuthTokenRequest)(nil), // 117: rill.admin.v1.RevokeMagicAuthTokenRequest + (*RevokeMagicAuthTokenResponse)(nil), // 118: rill.admin.v1.RevokeMagicAuthTokenResponse + (*GetGithubRepoStatusRequest)(nil), // 119: rill.admin.v1.GetGithubRepoStatusRequest + (*GetGithubRepoStatusResponse)(nil), // 120: rill.admin.v1.GetGithubRepoStatusResponse + (*GetGithubUserStatusRequest)(nil), // 121: rill.admin.v1.GetGithubUserStatusRequest + (*GetGithubUserStatusResponse)(nil), // 122: rill.admin.v1.GetGithubUserStatusResponse + (*GetGitCredentialsRequest)(nil), // 123: rill.admin.v1.GetGitCredentialsRequest + (*GetGitCredentialsResponse)(nil), // 124: rill.admin.v1.GetGitCredentialsResponse + (*CreateWhitelistedDomainRequest)(nil), // 125: rill.admin.v1.CreateWhitelistedDomainRequest + (*CreateWhitelistedDomainResponse)(nil), // 126: rill.admin.v1.CreateWhitelistedDomainResponse + (*RemoveWhitelistedDomainRequest)(nil), // 127: rill.admin.v1.RemoveWhitelistedDomainRequest + (*RemoveWhitelistedDomainResponse)(nil), // 128: rill.admin.v1.RemoveWhitelistedDomainResponse + (*ListWhitelistedDomainsRequest)(nil), // 129: rill.admin.v1.ListWhitelistedDomainsRequest + (*ListWhitelistedDomainsResponse)(nil), // 130: rill.admin.v1.ListWhitelistedDomainsResponse + (*CreateProjectWhitelistedDomainRequest)(nil), // 131: rill.admin.v1.CreateProjectWhitelistedDomainRequest + (*CreateProjectWhitelistedDomainResponse)(nil), // 132: rill.admin.v1.CreateProjectWhitelistedDomainResponse + (*RemoveProjectWhitelistedDomainRequest)(nil), // 133: rill.admin.v1.RemoveProjectWhitelistedDomainRequest + (*RemoveProjectWhitelistedDomainResponse)(nil), // 134: rill.admin.v1.RemoveProjectWhitelistedDomainResponse + (*ListProjectWhitelistedDomainsRequest)(nil), // 135: rill.admin.v1.ListProjectWhitelistedDomainsRequest + (*ListProjectWhitelistedDomainsResponse)(nil), // 136: rill.admin.v1.ListProjectWhitelistedDomainsResponse + (*GetRepoMetaRequest)(nil), // 137: rill.admin.v1.GetRepoMetaRequest + (*GetRepoMetaResponse)(nil), // 138: rill.admin.v1.GetRepoMetaResponse + (*PullVirtualRepoRequest)(nil), // 139: rill.admin.v1.PullVirtualRepoRequest + (*PullVirtualRepoResponse)(nil), // 140: rill.admin.v1.PullVirtualRepoResponse + (*GetReportMetaRequest)(nil), // 141: rill.admin.v1.GetReportMetaRequest + (*GetReportMetaResponse)(nil), // 142: rill.admin.v1.GetReportMetaResponse + (*GetAlertMetaRequest)(nil), // 143: rill.admin.v1.GetAlertMetaRequest + (*GetAlertMetaResponse)(nil), // 144: rill.admin.v1.GetAlertMetaResponse + (*CreateReportRequest)(nil), // 145: rill.admin.v1.CreateReportRequest + (*CreateReportResponse)(nil), // 146: rill.admin.v1.CreateReportResponse + (*EditReportRequest)(nil), // 147: rill.admin.v1.EditReportRequest + (*EditReportResponse)(nil), // 148: rill.admin.v1.EditReportResponse + (*UnsubscribeReportRequest)(nil), // 149: rill.admin.v1.UnsubscribeReportRequest + (*UnsubscribeReportResponse)(nil), // 150: rill.admin.v1.UnsubscribeReportResponse + (*DeleteReportRequest)(nil), // 151: rill.admin.v1.DeleteReportRequest + (*DeleteReportResponse)(nil), // 152: rill.admin.v1.DeleteReportResponse + (*TriggerReportRequest)(nil), // 153: rill.admin.v1.TriggerReportRequest + (*TriggerReportResponse)(nil), // 154: rill.admin.v1.TriggerReportResponse + (*GenerateReportYAMLRequest)(nil), // 155: rill.admin.v1.GenerateReportYAMLRequest + (*GenerateReportYAMLResponse)(nil), // 156: rill.admin.v1.GenerateReportYAMLResponse + (*CreateAlertRequest)(nil), // 157: rill.admin.v1.CreateAlertRequest + (*CreateAlertResponse)(nil), // 158: rill.admin.v1.CreateAlertResponse + (*EditAlertRequest)(nil), // 159: rill.admin.v1.EditAlertRequest + (*EditAlertResponse)(nil), // 160: rill.admin.v1.EditAlertResponse + (*UnsubscribeAlertRequest)(nil), // 161: rill.admin.v1.UnsubscribeAlertRequest + (*UnsubscribeAlertResponse)(nil), // 162: rill.admin.v1.UnsubscribeAlertResponse + (*DeleteAlertRequest)(nil), // 163: rill.admin.v1.DeleteAlertRequest + (*DeleteAlertResponse)(nil), // 164: rill.admin.v1.DeleteAlertResponse + (*GenerateAlertYAMLRequest)(nil), // 165: rill.admin.v1.GenerateAlertYAMLRequest + (*GenerateAlertYAMLResponse)(nil), // 166: rill.admin.v1.GenerateAlertYAMLResponse + (*GetAlertYAMLRequest)(nil), // 167: rill.admin.v1.GetAlertYAMLRequest + (*GetAlertYAMLResponse)(nil), // 168: rill.admin.v1.GetAlertYAMLResponse + (*TelemetryRequest)(nil), // 169: rill.admin.v1.TelemetryRequest + (*TelemetryResponse)(nil), // 170: rill.admin.v1.TelemetryResponse + (*User)(nil), // 171: rill.admin.v1.User + (*Service)(nil), // 172: rill.admin.v1.Service + (*Organization)(nil), // 173: rill.admin.v1.Organization + (*UserQuotas)(nil), // 174: rill.admin.v1.UserQuotas + (*OrganizationQuotas)(nil), // 175: rill.admin.v1.OrganizationQuotas + (*Project)(nil), // 176: rill.admin.v1.Project + (*Deployment)(nil), // 177: rill.admin.v1.Deployment + (*OrganizationPermissions)(nil), // 178: rill.admin.v1.OrganizationPermissions + (*ProjectPermissions)(nil), // 179: rill.admin.v1.ProjectPermissions + (*Member)(nil), // 180: rill.admin.v1.Member + (*UserInvite)(nil), // 181: rill.admin.v1.UserInvite + (*WhitelistedDomain)(nil), // 182: rill.admin.v1.WhitelistedDomain + (*Bookmark)(nil), // 183: rill.admin.v1.Bookmark + (*ServiceToken)(nil), // 184: rill.admin.v1.ServiceToken + (*MagicAuthToken)(nil), // 185: rill.admin.v1.MagicAuthToken + (*VirtualFile)(nil), // 186: rill.admin.v1.VirtualFile + (*ReportOptions)(nil), // 187: rill.admin.v1.ReportOptions + (*AlertOptions)(nil), // 188: rill.admin.v1.AlertOptions + nil, // 189: rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry + nil, // 190: rill.admin.v1.GetProjectVariablesResponse.VariablesEntry + nil, // 191: rill.admin.v1.GetIFrameRequest.QueryEntry + nil, // 192: rill.admin.v1.CreateProjectRequest.VariablesEntry + nil, // 193: rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry + nil, // 194: rill.admin.v1.UpdateProjectVariablesResponse.VariablesEntry + nil, // 195: rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry + nil, // 196: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry + nil, // 197: rill.admin.v1.GetReportMetaRequest.AnnotationsEntry + nil, // 198: rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry + nil, // 199: rill.admin.v1.Project.AnnotationsEntry + (*timestamppb.Timestamp)(nil), // 200: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 201: google.protobuf.Struct + (*v1.Expression)(nil), // 202: rill.runtime.v1.Expression + (v1.ExportFormat)(0), // 203: rill.runtime.v1.ExportFormat } var file_rill_admin_v1_api_proto_depIdxs = []int32{ - 193, // 0: rill.admin.v1.PingResponse.time:type_name -> google.protobuf.Timestamp - 167, // 1: rill.admin.v1.ListOrganizationsResponse.organizations:type_name -> rill.admin.v1.Organization - 167, // 2: rill.admin.v1.GetOrganizationResponse.organization:type_name -> rill.admin.v1.Organization - 172, // 3: rill.admin.v1.GetOrganizationResponse.permissions:type_name -> rill.admin.v1.OrganizationPermissions - 167, // 4: rill.admin.v1.CreateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization - 167, // 5: rill.admin.v1.UpdateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization - 170, // 6: rill.admin.v1.ListProjectsForOrganizationResponse.projects:type_name -> rill.admin.v1.Project - 170, // 7: rill.admin.v1.GetProjectResponse.project:type_name -> rill.admin.v1.Project - 171, // 8: rill.admin.v1.GetProjectResponse.prod_deployment:type_name -> rill.admin.v1.Deployment - 173, // 9: rill.admin.v1.GetProjectResponse.project_permissions:type_name -> rill.admin.v1.ProjectPermissions - 182, // 10: rill.admin.v1.SearchProjectNamesRequest.annotations:type_name -> rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry - 183, // 11: rill.admin.v1.GetProjectVariablesResponse.variables:type_name -> rill.admin.v1.GetProjectVariablesResponse.VariablesEntry - 165, // 12: rill.admin.v1.SearchProjectUsersResponse.users:type_name -> rill.admin.v1.User - 194, // 13: rill.admin.v1.GetDeploymentCredentialsRequest.attributes:type_name -> google.protobuf.Struct - 194, // 14: rill.admin.v1.GetIFrameRequest.attributes:type_name -> google.protobuf.Struct - 184, // 15: rill.admin.v1.GetIFrameRequest.query:type_name -> rill.admin.v1.GetIFrameRequest.QueryEntry - 166, // 16: rill.admin.v1.ListServicesResponse.services:type_name -> rill.admin.v1.Service - 166, // 17: rill.admin.v1.CreateServiceResponse.service:type_name -> rill.admin.v1.Service - 166, // 18: rill.admin.v1.UpdateServiceResponse.service:type_name -> rill.admin.v1.Service - 166, // 19: rill.admin.v1.DeleteServiceResponse.service:type_name -> rill.admin.v1.Service - 185, // 20: rill.admin.v1.CreateProjectRequest.variables:type_name -> rill.admin.v1.CreateProjectRequest.VariablesEntry - 170, // 21: rill.admin.v1.CreateProjectResponse.project:type_name -> rill.admin.v1.Project - 170, // 22: rill.admin.v1.UpdateProjectResponse.project:type_name -> rill.admin.v1.Project - 186, // 23: rill.admin.v1.UpdateProjectVariablesRequest.variables:type_name -> rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry - 187, // 24: rill.admin.v1.UpdateProjectVariablesResponse.variables:type_name -> rill.admin.v1.UpdateProjectVariablesResponse.VariablesEntry - 174, // 25: rill.admin.v1.ListOrganizationMembersResponse.members:type_name -> rill.admin.v1.Member - 175, // 26: rill.admin.v1.ListOrganizationInvitesResponse.invites:type_name -> rill.admin.v1.UserInvite - 165, // 27: rill.admin.v1.ListSuperusersResponse.users:type_name -> rill.admin.v1.User - 165, // 28: rill.admin.v1.SudoGetResourceResponse.user:type_name -> rill.admin.v1.User - 167, // 29: rill.admin.v1.SudoGetResourceResponse.org:type_name -> rill.admin.v1.Organization - 170, // 30: rill.admin.v1.SudoGetResourceResponse.project:type_name -> rill.admin.v1.Project - 171, // 31: rill.admin.v1.SudoGetResourceResponse.deployment:type_name -> rill.admin.v1.Deployment - 171, // 32: rill.admin.v1.SudoGetResourceResponse.instance:type_name -> rill.admin.v1.Deployment - 167, // 33: rill.admin.v1.SudoUpdateOrganizationQuotasResponse.organization:type_name -> rill.admin.v1.Organization - 165, // 34: rill.admin.v1.SudoUpdateUserQuotasResponse.user:type_name -> rill.admin.v1.User - 188, // 35: rill.admin.v1.SudoUpdateAnnotationsRequest.annotations:type_name -> rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry - 170, // 36: rill.admin.v1.SudoUpdateAnnotationsResponse.project:type_name -> rill.admin.v1.Project - 174, // 37: rill.admin.v1.ListProjectMembersResponse.members:type_name -> rill.admin.v1.Member - 175, // 38: rill.admin.v1.ListProjectInvitesResponse.invites:type_name -> rill.admin.v1.UserInvite - 165, // 39: rill.admin.v1.GetCurrentUserResponse.user:type_name -> rill.admin.v1.User + 200, // 0: rill.admin.v1.PingResponse.time:type_name -> google.protobuf.Timestamp + 173, // 1: rill.admin.v1.ListOrganizationsResponse.organizations:type_name -> rill.admin.v1.Organization + 173, // 2: rill.admin.v1.GetOrganizationResponse.organization:type_name -> rill.admin.v1.Organization + 178, // 3: rill.admin.v1.GetOrganizationResponse.permissions:type_name -> rill.admin.v1.OrganizationPermissions + 173, // 4: rill.admin.v1.CreateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization + 173, // 5: rill.admin.v1.UpdateOrganizationResponse.organization:type_name -> rill.admin.v1.Organization + 176, // 6: rill.admin.v1.ListProjectsForOrganizationResponse.projects:type_name -> rill.admin.v1.Project + 176, // 7: rill.admin.v1.GetProjectResponse.project:type_name -> rill.admin.v1.Project + 177, // 8: rill.admin.v1.GetProjectResponse.prod_deployment:type_name -> rill.admin.v1.Deployment + 179, // 9: rill.admin.v1.GetProjectResponse.project_permissions:type_name -> rill.admin.v1.ProjectPermissions + 189, // 10: rill.admin.v1.SearchProjectNamesRequest.annotations:type_name -> rill.admin.v1.SearchProjectNamesRequest.AnnotationsEntry + 190, // 11: rill.admin.v1.GetProjectVariablesResponse.variables:type_name -> rill.admin.v1.GetProjectVariablesResponse.VariablesEntry + 171, // 12: rill.admin.v1.SearchProjectUsersResponse.users:type_name -> rill.admin.v1.User + 201, // 13: rill.admin.v1.GetDeploymentCredentialsRequest.attributes:type_name -> google.protobuf.Struct + 201, // 14: rill.admin.v1.GetIFrameRequest.attributes:type_name -> google.protobuf.Struct + 191, // 15: rill.admin.v1.GetIFrameRequest.query:type_name -> rill.admin.v1.GetIFrameRequest.QueryEntry + 172, // 16: rill.admin.v1.ListServicesResponse.services:type_name -> rill.admin.v1.Service + 172, // 17: rill.admin.v1.CreateServiceResponse.service:type_name -> rill.admin.v1.Service + 172, // 18: rill.admin.v1.UpdateServiceResponse.service:type_name -> rill.admin.v1.Service + 172, // 19: rill.admin.v1.DeleteServiceResponse.service:type_name -> rill.admin.v1.Service + 192, // 20: rill.admin.v1.CreateProjectRequest.variables:type_name -> rill.admin.v1.CreateProjectRequest.VariablesEntry + 176, // 21: rill.admin.v1.CreateProjectResponse.project:type_name -> rill.admin.v1.Project + 176, // 22: rill.admin.v1.UpdateProjectResponse.project:type_name -> rill.admin.v1.Project + 193, // 23: rill.admin.v1.UpdateProjectVariablesRequest.variables:type_name -> rill.admin.v1.UpdateProjectVariablesRequest.VariablesEntry + 194, // 24: rill.admin.v1.UpdateProjectVariablesResponse.variables:type_name -> rill.admin.v1.UpdateProjectVariablesResponse.VariablesEntry + 180, // 25: rill.admin.v1.ListOrganizationMembersResponse.members:type_name -> rill.admin.v1.Member + 181, // 26: rill.admin.v1.ListOrganizationInvitesResponse.invites:type_name -> rill.admin.v1.UserInvite + 171, // 27: rill.admin.v1.ListSuperusersResponse.users:type_name -> rill.admin.v1.User + 171, // 28: rill.admin.v1.SudoGetResourceResponse.user:type_name -> rill.admin.v1.User + 173, // 29: rill.admin.v1.SudoGetResourceResponse.org:type_name -> rill.admin.v1.Organization + 176, // 30: rill.admin.v1.SudoGetResourceResponse.project:type_name -> rill.admin.v1.Project + 177, // 31: rill.admin.v1.SudoGetResourceResponse.deployment:type_name -> rill.admin.v1.Deployment + 177, // 32: rill.admin.v1.SudoGetResourceResponse.instance:type_name -> rill.admin.v1.Deployment + 173, // 33: rill.admin.v1.SudoUpdateOrganizationQuotasResponse.organization:type_name -> rill.admin.v1.Organization + 171, // 34: rill.admin.v1.SudoUpdateUserQuotasResponse.user:type_name -> rill.admin.v1.User + 195, // 35: rill.admin.v1.SudoUpdateAnnotationsRequest.annotations:type_name -> rill.admin.v1.SudoUpdateAnnotationsRequest.AnnotationsEntry + 176, // 36: rill.admin.v1.SudoUpdateAnnotationsResponse.project:type_name -> rill.admin.v1.Project + 180, // 37: rill.admin.v1.ListProjectMembersResponse.members:type_name -> rill.admin.v1.Member + 181, // 38: rill.admin.v1.ListProjectInvitesResponse.invites:type_name -> rill.admin.v1.UserInvite + 171, // 39: rill.admin.v1.GetCurrentUserResponse.user:type_name -> rill.admin.v1.User 88, // 40: rill.admin.v1.GetCurrentUserResponse.preferences:type_name -> rill.admin.v1.UserPreferences - 165, // 41: rill.admin.v1.GetUserResponse.user:type_name -> rill.admin.v1.User + 171, // 41: rill.admin.v1.GetUserResponse.user:type_name -> rill.admin.v1.User 88, // 42: rill.admin.v1.UpdateUserPreferencesRequest.preferences:type_name -> rill.admin.v1.UserPreferences 88, // 43: rill.admin.v1.UpdateUserPreferencesResponse.preferences:type_name -> rill.admin.v1.UserPreferences - 177, // 44: rill.admin.v1.ListBookmarksResponse.bookmarks:type_name -> rill.admin.v1.Bookmark - 177, // 45: rill.admin.v1.GetBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark - 177, // 46: rill.admin.v1.CreateBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark - 165, // 47: rill.admin.v1.SearchUsersResponse.users:type_name -> rill.admin.v1.User - 178, // 48: rill.admin.v1.ListServiceAuthTokensResponse.tokens:type_name -> rill.admin.v1.ServiceToken - 0, // 49: rill.admin.v1.GetGithubUserStatusResponse.user_installation_permission:type_name -> rill.admin.v1.GithubPermission - 189, // 50: rill.admin.v1.GetGithubUserStatusResponse.organization_installation_permissions:type_name -> rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry - 176, // 51: rill.admin.v1.ListWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain - 176, // 52: rill.admin.v1.ListProjectWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain - 193, // 53: rill.admin.v1.GetRepoMetaResponse.git_url_expires_on:type_name -> google.protobuf.Timestamp - 179, // 54: rill.admin.v1.PullVirtualRepoResponse.files:type_name -> rill.admin.v1.VirtualFile - 190, // 55: rill.admin.v1.GetReportMetaRequest.annotations:type_name -> rill.admin.v1.GetReportMetaRequest.AnnotationsEntry - 193, // 56: rill.admin.v1.GetReportMetaRequest.execution_time:type_name -> google.protobuf.Timestamp - 191, // 57: rill.admin.v1.GetAlertMetaRequest.annotations:type_name -> rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry - 194, // 58: rill.admin.v1.GetAlertMetaResponse.query_for_attributes:type_name -> google.protobuf.Struct - 180, // 59: rill.admin.v1.CreateReportRequest.options:type_name -> rill.admin.v1.ReportOptions - 180, // 60: rill.admin.v1.EditReportRequest.options:type_name -> rill.admin.v1.ReportOptions - 180, // 61: rill.admin.v1.GenerateReportYAMLRequest.options:type_name -> rill.admin.v1.ReportOptions - 181, // 62: rill.admin.v1.CreateAlertRequest.options:type_name -> rill.admin.v1.AlertOptions - 181, // 63: rill.admin.v1.EditAlertRequest.options:type_name -> rill.admin.v1.AlertOptions - 181, // 64: rill.admin.v1.GenerateAlertYAMLRequest.options:type_name -> rill.admin.v1.AlertOptions - 194, // 65: rill.admin.v1.TelemetryRequest.event:type_name -> google.protobuf.Struct - 168, // 66: rill.admin.v1.User.quotas:type_name -> rill.admin.v1.UserQuotas - 193, // 67: rill.admin.v1.User.created_on:type_name -> google.protobuf.Timestamp - 193, // 68: rill.admin.v1.User.updated_on:type_name -> google.protobuf.Timestamp - 193, // 69: rill.admin.v1.Service.created_on:type_name -> google.protobuf.Timestamp - 193, // 70: rill.admin.v1.Service.updated_on:type_name -> google.protobuf.Timestamp - 169, // 71: rill.admin.v1.Organization.quotas:type_name -> rill.admin.v1.OrganizationQuotas - 193, // 72: rill.admin.v1.Organization.created_on:type_name -> google.protobuf.Timestamp - 193, // 73: rill.admin.v1.Organization.updated_on:type_name -> google.protobuf.Timestamp - 192, // 74: rill.admin.v1.Project.annotations:type_name -> rill.admin.v1.Project.AnnotationsEntry - 193, // 75: rill.admin.v1.Project.created_on:type_name -> google.protobuf.Timestamp - 193, // 76: rill.admin.v1.Project.updated_on:type_name -> google.protobuf.Timestamp - 1, // 77: rill.admin.v1.Deployment.status:type_name -> rill.admin.v1.DeploymentStatus - 193, // 78: rill.admin.v1.Deployment.created_on:type_name -> google.protobuf.Timestamp - 193, // 79: rill.admin.v1.Deployment.updated_on:type_name -> google.protobuf.Timestamp - 193, // 80: rill.admin.v1.Member.created_on:type_name -> google.protobuf.Timestamp - 193, // 81: rill.admin.v1.Member.updated_on:type_name -> google.protobuf.Timestamp - 193, // 82: rill.admin.v1.Bookmark.created_on:type_name -> google.protobuf.Timestamp - 193, // 83: rill.admin.v1.Bookmark.updated_on:type_name -> google.protobuf.Timestamp - 193, // 84: rill.admin.v1.ServiceToken.created_on:type_name -> google.protobuf.Timestamp - 193, // 85: rill.admin.v1.ServiceToken.expires_on:type_name -> google.protobuf.Timestamp - 193, // 86: rill.admin.v1.VirtualFile.updated_on:type_name -> google.protobuf.Timestamp - 195, // 87: rill.admin.v1.ReportOptions.export_format:type_name -> rill.runtime.v1.ExportFormat - 0, // 88: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry.value:type_name -> rill.admin.v1.GithubPermission - 2, // 89: rill.admin.v1.AdminService.Ping:input_type -> rill.admin.v1.PingRequest - 4, // 90: rill.admin.v1.AdminService.ListOrganizations:input_type -> rill.admin.v1.ListOrganizationsRequest - 6, // 91: rill.admin.v1.AdminService.GetOrganization:input_type -> rill.admin.v1.GetOrganizationRequest - 8, // 92: rill.admin.v1.AdminService.CreateOrganization:input_type -> rill.admin.v1.CreateOrganizationRequest - 10, // 93: rill.admin.v1.AdminService.DeleteOrganization:input_type -> rill.admin.v1.DeleteOrganizationRequest - 12, // 94: rill.admin.v1.AdminService.UpdateOrganization:input_type -> rill.admin.v1.UpdateOrganizationRequest - 14, // 95: rill.admin.v1.AdminService.ListProjectsForOrganization:input_type -> rill.admin.v1.ListProjectsForOrganizationRequest - 16, // 96: rill.admin.v1.AdminService.GetProject:input_type -> rill.admin.v1.GetProjectRequest - 18, // 97: rill.admin.v1.AdminService.SearchProjectNames:input_type -> rill.admin.v1.SearchProjectNamesRequest - 20, // 98: rill.admin.v1.AdminService.GetProjectVariables:input_type -> rill.admin.v1.GetProjectVariablesRequest - 36, // 99: rill.admin.v1.AdminService.CreateProject:input_type -> rill.admin.v1.CreateProjectRequest - 38, // 100: rill.admin.v1.AdminService.DeleteProject:input_type -> rill.admin.v1.DeleteProjectRequest - 40, // 101: rill.admin.v1.AdminService.UpdateProject:input_type -> rill.admin.v1.UpdateProjectRequest - 42, // 102: rill.admin.v1.AdminService.UpdateProjectVariables:input_type -> rill.admin.v1.UpdateProjectVariablesRequest - 44, // 103: rill.admin.v1.AdminService.TriggerReconcile:input_type -> rill.admin.v1.TriggerReconcileRequest - 46, // 104: rill.admin.v1.AdminService.TriggerRefreshSources:input_type -> rill.admin.v1.TriggerRefreshSourcesRequest - 48, // 105: rill.admin.v1.AdminService.TriggerRedeploy:input_type -> rill.admin.v1.TriggerRedeployRequest - 50, // 106: rill.admin.v1.AdminService.ListOrganizationMembers:input_type -> rill.admin.v1.ListOrganizationMembersRequest - 52, // 107: rill.admin.v1.AdminService.ListOrganizationInvites:input_type -> rill.admin.v1.ListOrganizationInvitesRequest - 54, // 108: rill.admin.v1.AdminService.AddOrganizationMember:input_type -> rill.admin.v1.AddOrganizationMemberRequest - 56, // 109: rill.admin.v1.AdminService.RemoveOrganizationMember:input_type -> rill.admin.v1.RemoveOrganizationMemberRequest - 58, // 110: rill.admin.v1.AdminService.LeaveOrganization:input_type -> rill.admin.v1.LeaveOrganizationRequest - 60, // 111: rill.admin.v1.AdminService.SetOrganizationMemberRole:input_type -> rill.admin.v1.SetOrganizationMemberRoleRequest - 74, // 112: rill.admin.v1.AdminService.ListProjectMembers:input_type -> rill.admin.v1.ListProjectMembersRequest - 76, // 113: rill.admin.v1.AdminService.ListProjectInvites:input_type -> rill.admin.v1.ListProjectInvitesRequest - 78, // 114: rill.admin.v1.AdminService.AddProjectMember:input_type -> rill.admin.v1.AddProjectMemberRequest - 80, // 115: rill.admin.v1.AdminService.RemoveProjectMember:input_type -> rill.admin.v1.RemoveProjectMemberRequest - 82, // 116: rill.admin.v1.AdminService.SetProjectMemberRole:input_type -> rill.admin.v1.SetProjectMemberRoleRequest - 84, // 117: rill.admin.v1.AdminService.GetCurrentUser:input_type -> rill.admin.v1.GetCurrentUserRequest - 105, // 118: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:input_type -> rill.admin.v1.IssueRepresentativeAuthTokenRequest - 103, // 119: rill.admin.v1.AdminService.RevokeCurrentAuthToken:input_type -> rill.admin.v1.RevokeCurrentAuthTokenRequest - 113, // 120: rill.admin.v1.AdminService.GetGithubRepoStatus:input_type -> rill.admin.v1.GetGithubRepoStatusRequest - 115, // 121: rill.admin.v1.AdminService.GetGithubUserStatus:input_type -> rill.admin.v1.GetGithubUserStatusRequest - 117, // 122: rill.admin.v1.AdminService.GetGitCredentials:input_type -> rill.admin.v1.GetGitCredentialsRequest - 119, // 123: rill.admin.v1.AdminService.CreateWhitelistedDomain:input_type -> rill.admin.v1.CreateWhitelistedDomainRequest - 121, // 124: rill.admin.v1.AdminService.RemoveWhitelistedDomain:input_type -> rill.admin.v1.RemoveWhitelistedDomainRequest - 123, // 125: rill.admin.v1.AdminService.ListWhitelistedDomains:input_type -> rill.admin.v1.ListWhitelistedDomainsRequest - 86, // 126: rill.admin.v1.AdminService.GetUser:input_type -> rill.admin.v1.GetUserRequest - 101, // 127: rill.admin.v1.AdminService.SearchUsers:input_type -> rill.admin.v1.SearchUsersRequest - 22, // 128: rill.admin.v1.AdminService.SearchProjectUsers:input_type -> rill.admin.v1.SearchProjectUsersRequest - 62, // 129: rill.admin.v1.AdminService.ListSuperusers:input_type -> rill.admin.v1.ListSuperusersRequest - 24, // 130: rill.admin.v1.AdminService.GetDeploymentCredentials:input_type -> rill.admin.v1.GetDeploymentCredentialsRequest - 26, // 131: rill.admin.v1.AdminService.GetIFrame:input_type -> rill.admin.v1.GetIFrameRequest - 64, // 132: rill.admin.v1.AdminService.SetSuperuser:input_type -> rill.admin.v1.SetSuperuserRequest - 66, // 133: rill.admin.v1.AdminService.SudoGetResource:input_type -> rill.admin.v1.SudoGetResourceRequest - 70, // 134: rill.admin.v1.AdminService.SudoUpdateUserQuotas:input_type -> rill.admin.v1.SudoUpdateUserQuotasRequest - 68, // 135: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:input_type -> rill.admin.v1.SudoUpdateOrganizationQuotasRequest - 72, // 136: rill.admin.v1.AdminService.SudoUpdateAnnotations:input_type -> rill.admin.v1.SudoUpdateAnnotationsRequest - 125, // 137: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:input_type -> rill.admin.v1.CreateProjectWhitelistedDomainRequest - 127, // 138: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:input_type -> rill.admin.v1.RemoveProjectWhitelistedDomainRequest - 129, // 139: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:input_type -> rill.admin.v1.ListProjectWhitelistedDomainsRequest - 28, // 140: rill.admin.v1.AdminService.ListServices:input_type -> rill.admin.v1.ListServicesRequest - 30, // 141: rill.admin.v1.AdminService.CreateService:input_type -> rill.admin.v1.CreateServiceRequest - 32, // 142: rill.admin.v1.AdminService.UpdateService:input_type -> rill.admin.v1.UpdateServiceRequest - 34, // 143: rill.admin.v1.AdminService.DeleteService:input_type -> rill.admin.v1.DeleteServiceRequest - 111, // 144: rill.admin.v1.AdminService.ListServiceAuthTokens:input_type -> rill.admin.v1.ListServiceAuthTokensRequest - 109, // 145: rill.admin.v1.AdminService.IssueServiceAuthToken:input_type -> rill.admin.v1.IssueServiceAuthTokenRequest - 107, // 146: rill.admin.v1.AdminService.RevokeServiceAuthToken:input_type -> rill.admin.v1.RevokeServiceAuthTokenRequest - 89, // 147: rill.admin.v1.AdminService.UpdateUserPreferences:input_type -> rill.admin.v1.UpdateUserPreferencesRequest - 91, // 148: rill.admin.v1.AdminService.ListBookmarks:input_type -> rill.admin.v1.ListBookmarksRequest - 93, // 149: rill.admin.v1.AdminService.GetBookmark:input_type -> rill.admin.v1.GetBookmarkRequest - 95, // 150: rill.admin.v1.AdminService.CreateBookmark:input_type -> rill.admin.v1.CreateBookmarkRequest - 97, // 151: rill.admin.v1.AdminService.UpdateBookmark:input_type -> rill.admin.v1.UpdateBookmarkRequest - 99, // 152: rill.admin.v1.AdminService.RemoveBookmark:input_type -> rill.admin.v1.RemoveBookmarkRequest - 131, // 153: rill.admin.v1.AdminService.GetRepoMeta:input_type -> rill.admin.v1.GetRepoMetaRequest - 133, // 154: rill.admin.v1.AdminService.PullVirtualRepo:input_type -> rill.admin.v1.PullVirtualRepoRequest - 135, // 155: rill.admin.v1.AdminService.GetReportMeta:input_type -> rill.admin.v1.GetReportMetaRequest - 137, // 156: rill.admin.v1.AdminService.GetAlertMeta:input_type -> rill.admin.v1.GetAlertMetaRequest - 139, // 157: rill.admin.v1.AdminService.CreateReport:input_type -> rill.admin.v1.CreateReportRequest - 141, // 158: rill.admin.v1.AdminService.EditReport:input_type -> rill.admin.v1.EditReportRequest - 143, // 159: rill.admin.v1.AdminService.UnsubscribeReport:input_type -> rill.admin.v1.UnsubscribeReportRequest - 145, // 160: rill.admin.v1.AdminService.DeleteReport:input_type -> rill.admin.v1.DeleteReportRequest - 147, // 161: rill.admin.v1.AdminService.TriggerReport:input_type -> rill.admin.v1.TriggerReportRequest - 149, // 162: rill.admin.v1.AdminService.GenerateReportYAML:input_type -> rill.admin.v1.GenerateReportYAMLRequest - 151, // 163: rill.admin.v1.AdminService.CreateAlert:input_type -> rill.admin.v1.CreateAlertRequest - 153, // 164: rill.admin.v1.AdminService.EditAlert:input_type -> rill.admin.v1.EditAlertRequest - 155, // 165: rill.admin.v1.AdminService.UnsubscribeAlert:input_type -> rill.admin.v1.UnsubscribeAlertRequest - 157, // 166: rill.admin.v1.AdminService.DeleteAlert:input_type -> rill.admin.v1.DeleteAlertRequest - 159, // 167: rill.admin.v1.AdminService.GenerateAlertYAML:input_type -> rill.admin.v1.GenerateAlertYAMLRequest - 161, // 168: rill.admin.v1.AdminService.GetAlertYAML:input_type -> rill.admin.v1.GetAlertYAMLRequest - 3, // 169: rill.admin.v1.AdminService.Ping:output_type -> rill.admin.v1.PingResponse - 5, // 170: rill.admin.v1.AdminService.ListOrganizations:output_type -> rill.admin.v1.ListOrganizationsResponse - 7, // 171: rill.admin.v1.AdminService.GetOrganization:output_type -> rill.admin.v1.GetOrganizationResponse - 9, // 172: rill.admin.v1.AdminService.CreateOrganization:output_type -> rill.admin.v1.CreateOrganizationResponse - 11, // 173: rill.admin.v1.AdminService.DeleteOrganization:output_type -> rill.admin.v1.DeleteOrganizationResponse - 13, // 174: rill.admin.v1.AdminService.UpdateOrganization:output_type -> rill.admin.v1.UpdateOrganizationResponse - 15, // 175: rill.admin.v1.AdminService.ListProjectsForOrganization:output_type -> rill.admin.v1.ListProjectsForOrganizationResponse - 17, // 176: rill.admin.v1.AdminService.GetProject:output_type -> rill.admin.v1.GetProjectResponse - 19, // 177: rill.admin.v1.AdminService.SearchProjectNames:output_type -> rill.admin.v1.SearchProjectNamesResponse - 21, // 178: rill.admin.v1.AdminService.GetProjectVariables:output_type -> rill.admin.v1.GetProjectVariablesResponse - 37, // 179: rill.admin.v1.AdminService.CreateProject:output_type -> rill.admin.v1.CreateProjectResponse - 39, // 180: rill.admin.v1.AdminService.DeleteProject:output_type -> rill.admin.v1.DeleteProjectResponse - 41, // 181: rill.admin.v1.AdminService.UpdateProject:output_type -> rill.admin.v1.UpdateProjectResponse - 43, // 182: rill.admin.v1.AdminService.UpdateProjectVariables:output_type -> rill.admin.v1.UpdateProjectVariablesResponse - 45, // 183: rill.admin.v1.AdminService.TriggerReconcile:output_type -> rill.admin.v1.TriggerReconcileResponse - 47, // 184: rill.admin.v1.AdminService.TriggerRefreshSources:output_type -> rill.admin.v1.TriggerRefreshSourcesResponse - 49, // 185: rill.admin.v1.AdminService.TriggerRedeploy:output_type -> rill.admin.v1.TriggerRedeployResponse - 51, // 186: rill.admin.v1.AdminService.ListOrganizationMembers:output_type -> rill.admin.v1.ListOrganizationMembersResponse - 53, // 187: rill.admin.v1.AdminService.ListOrganizationInvites:output_type -> rill.admin.v1.ListOrganizationInvitesResponse - 55, // 188: rill.admin.v1.AdminService.AddOrganizationMember:output_type -> rill.admin.v1.AddOrganizationMemberResponse - 57, // 189: rill.admin.v1.AdminService.RemoveOrganizationMember:output_type -> rill.admin.v1.RemoveOrganizationMemberResponse - 59, // 190: rill.admin.v1.AdminService.LeaveOrganization:output_type -> rill.admin.v1.LeaveOrganizationResponse - 61, // 191: rill.admin.v1.AdminService.SetOrganizationMemberRole:output_type -> rill.admin.v1.SetOrganizationMemberRoleResponse - 75, // 192: rill.admin.v1.AdminService.ListProjectMembers:output_type -> rill.admin.v1.ListProjectMembersResponse - 77, // 193: rill.admin.v1.AdminService.ListProjectInvites:output_type -> rill.admin.v1.ListProjectInvitesResponse - 79, // 194: rill.admin.v1.AdminService.AddProjectMember:output_type -> rill.admin.v1.AddProjectMemberResponse - 81, // 195: rill.admin.v1.AdminService.RemoveProjectMember:output_type -> rill.admin.v1.RemoveProjectMemberResponse - 83, // 196: rill.admin.v1.AdminService.SetProjectMemberRole:output_type -> rill.admin.v1.SetProjectMemberRoleResponse - 85, // 197: rill.admin.v1.AdminService.GetCurrentUser:output_type -> rill.admin.v1.GetCurrentUserResponse - 106, // 198: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:output_type -> rill.admin.v1.IssueRepresentativeAuthTokenResponse - 104, // 199: rill.admin.v1.AdminService.RevokeCurrentAuthToken:output_type -> rill.admin.v1.RevokeCurrentAuthTokenResponse - 114, // 200: rill.admin.v1.AdminService.GetGithubRepoStatus:output_type -> rill.admin.v1.GetGithubRepoStatusResponse - 116, // 201: rill.admin.v1.AdminService.GetGithubUserStatus:output_type -> rill.admin.v1.GetGithubUserStatusResponse - 118, // 202: rill.admin.v1.AdminService.GetGitCredentials:output_type -> rill.admin.v1.GetGitCredentialsResponse - 120, // 203: rill.admin.v1.AdminService.CreateWhitelistedDomain:output_type -> rill.admin.v1.CreateWhitelistedDomainResponse - 122, // 204: rill.admin.v1.AdminService.RemoveWhitelistedDomain:output_type -> rill.admin.v1.RemoveWhitelistedDomainResponse - 124, // 205: rill.admin.v1.AdminService.ListWhitelistedDomains:output_type -> rill.admin.v1.ListWhitelistedDomainsResponse - 87, // 206: rill.admin.v1.AdminService.GetUser:output_type -> rill.admin.v1.GetUserResponse - 102, // 207: rill.admin.v1.AdminService.SearchUsers:output_type -> rill.admin.v1.SearchUsersResponse - 23, // 208: rill.admin.v1.AdminService.SearchProjectUsers:output_type -> rill.admin.v1.SearchProjectUsersResponse - 63, // 209: rill.admin.v1.AdminService.ListSuperusers:output_type -> rill.admin.v1.ListSuperusersResponse - 25, // 210: rill.admin.v1.AdminService.GetDeploymentCredentials:output_type -> rill.admin.v1.GetDeploymentCredentialsResponse - 27, // 211: rill.admin.v1.AdminService.GetIFrame:output_type -> rill.admin.v1.GetIFrameResponse - 65, // 212: rill.admin.v1.AdminService.SetSuperuser:output_type -> rill.admin.v1.SetSuperuserResponse - 67, // 213: rill.admin.v1.AdminService.SudoGetResource:output_type -> rill.admin.v1.SudoGetResourceResponse - 71, // 214: rill.admin.v1.AdminService.SudoUpdateUserQuotas:output_type -> rill.admin.v1.SudoUpdateUserQuotasResponse - 69, // 215: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:output_type -> rill.admin.v1.SudoUpdateOrganizationQuotasResponse - 73, // 216: rill.admin.v1.AdminService.SudoUpdateAnnotations:output_type -> rill.admin.v1.SudoUpdateAnnotationsResponse - 126, // 217: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:output_type -> rill.admin.v1.CreateProjectWhitelistedDomainResponse - 128, // 218: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:output_type -> rill.admin.v1.RemoveProjectWhitelistedDomainResponse - 130, // 219: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:output_type -> rill.admin.v1.ListProjectWhitelistedDomainsResponse - 29, // 220: rill.admin.v1.AdminService.ListServices:output_type -> rill.admin.v1.ListServicesResponse - 31, // 221: rill.admin.v1.AdminService.CreateService:output_type -> rill.admin.v1.CreateServiceResponse - 33, // 222: rill.admin.v1.AdminService.UpdateService:output_type -> rill.admin.v1.UpdateServiceResponse - 35, // 223: rill.admin.v1.AdminService.DeleteService:output_type -> rill.admin.v1.DeleteServiceResponse - 112, // 224: rill.admin.v1.AdminService.ListServiceAuthTokens:output_type -> rill.admin.v1.ListServiceAuthTokensResponse - 110, // 225: rill.admin.v1.AdminService.IssueServiceAuthToken:output_type -> rill.admin.v1.IssueServiceAuthTokenResponse - 108, // 226: rill.admin.v1.AdminService.RevokeServiceAuthToken:output_type -> rill.admin.v1.RevokeServiceAuthTokenResponse - 90, // 227: rill.admin.v1.AdminService.UpdateUserPreferences:output_type -> rill.admin.v1.UpdateUserPreferencesResponse - 92, // 228: rill.admin.v1.AdminService.ListBookmarks:output_type -> rill.admin.v1.ListBookmarksResponse - 94, // 229: rill.admin.v1.AdminService.GetBookmark:output_type -> rill.admin.v1.GetBookmarkResponse - 96, // 230: rill.admin.v1.AdminService.CreateBookmark:output_type -> rill.admin.v1.CreateBookmarkResponse - 98, // 231: rill.admin.v1.AdminService.UpdateBookmark:output_type -> rill.admin.v1.UpdateBookmarkResponse - 100, // 232: rill.admin.v1.AdminService.RemoveBookmark:output_type -> rill.admin.v1.RemoveBookmarkResponse - 132, // 233: rill.admin.v1.AdminService.GetRepoMeta:output_type -> rill.admin.v1.GetRepoMetaResponse - 134, // 234: rill.admin.v1.AdminService.PullVirtualRepo:output_type -> rill.admin.v1.PullVirtualRepoResponse - 136, // 235: rill.admin.v1.AdminService.GetReportMeta:output_type -> rill.admin.v1.GetReportMetaResponse - 138, // 236: rill.admin.v1.AdminService.GetAlertMeta:output_type -> rill.admin.v1.GetAlertMetaResponse - 140, // 237: rill.admin.v1.AdminService.CreateReport:output_type -> rill.admin.v1.CreateReportResponse - 142, // 238: rill.admin.v1.AdminService.EditReport:output_type -> rill.admin.v1.EditReportResponse - 144, // 239: rill.admin.v1.AdminService.UnsubscribeReport:output_type -> rill.admin.v1.UnsubscribeReportResponse - 146, // 240: rill.admin.v1.AdminService.DeleteReport:output_type -> rill.admin.v1.DeleteReportResponse - 148, // 241: rill.admin.v1.AdminService.TriggerReport:output_type -> rill.admin.v1.TriggerReportResponse - 150, // 242: rill.admin.v1.AdminService.GenerateReportYAML:output_type -> rill.admin.v1.GenerateReportYAMLResponse - 152, // 243: rill.admin.v1.AdminService.CreateAlert:output_type -> rill.admin.v1.CreateAlertResponse - 154, // 244: rill.admin.v1.AdminService.EditAlert:output_type -> rill.admin.v1.EditAlertResponse - 156, // 245: rill.admin.v1.AdminService.UnsubscribeAlert:output_type -> rill.admin.v1.UnsubscribeAlertResponse - 158, // 246: rill.admin.v1.AdminService.DeleteAlert:output_type -> rill.admin.v1.DeleteAlertResponse - 160, // 247: rill.admin.v1.AdminService.GenerateAlertYAML:output_type -> rill.admin.v1.GenerateAlertYAMLResponse - 162, // 248: rill.admin.v1.AdminService.GetAlertYAML:output_type -> rill.admin.v1.GetAlertYAMLResponse - 169, // [169:249] is the sub-list for method output_type - 89, // [89:169] is the sub-list for method input_type - 89, // [89:89] is the sub-list for extension type_name - 89, // [89:89] is the sub-list for extension extendee - 0, // [0:89] is the sub-list for field type_name + 183, // 44: rill.admin.v1.ListBookmarksResponse.bookmarks:type_name -> rill.admin.v1.Bookmark + 183, // 45: rill.admin.v1.GetBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark + 183, // 46: rill.admin.v1.CreateBookmarkResponse.bookmark:type_name -> rill.admin.v1.Bookmark + 171, // 47: rill.admin.v1.SearchUsersResponse.users:type_name -> rill.admin.v1.User + 184, // 48: rill.admin.v1.ListServiceAuthTokensResponse.tokens:type_name -> rill.admin.v1.ServiceToken + 202, // 49: rill.admin.v1.IssueMagicAuthTokenRequest.metrics_view_filter:type_name -> rill.runtime.v1.Expression + 185, // 50: rill.admin.v1.ListMagicAuthTokensResponse.tokens:type_name -> rill.admin.v1.MagicAuthToken + 0, // 51: rill.admin.v1.GetGithubUserStatusResponse.user_installation_permission:type_name -> rill.admin.v1.GithubPermission + 196, // 52: rill.admin.v1.GetGithubUserStatusResponse.organization_installation_permissions:type_name -> rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry + 182, // 53: rill.admin.v1.ListWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain + 182, // 54: rill.admin.v1.ListProjectWhitelistedDomainsResponse.domains:type_name -> rill.admin.v1.WhitelistedDomain + 200, // 55: rill.admin.v1.GetRepoMetaResponse.git_url_expires_on:type_name -> google.protobuf.Timestamp + 186, // 56: rill.admin.v1.PullVirtualRepoResponse.files:type_name -> rill.admin.v1.VirtualFile + 197, // 57: rill.admin.v1.GetReportMetaRequest.annotations:type_name -> rill.admin.v1.GetReportMetaRequest.AnnotationsEntry + 200, // 58: rill.admin.v1.GetReportMetaRequest.execution_time:type_name -> google.protobuf.Timestamp + 198, // 59: rill.admin.v1.GetAlertMetaRequest.annotations:type_name -> rill.admin.v1.GetAlertMetaRequest.AnnotationsEntry + 201, // 60: rill.admin.v1.GetAlertMetaResponse.query_for_attributes:type_name -> google.protobuf.Struct + 187, // 61: rill.admin.v1.CreateReportRequest.options:type_name -> rill.admin.v1.ReportOptions + 187, // 62: rill.admin.v1.EditReportRequest.options:type_name -> rill.admin.v1.ReportOptions + 187, // 63: rill.admin.v1.GenerateReportYAMLRequest.options:type_name -> rill.admin.v1.ReportOptions + 188, // 64: rill.admin.v1.CreateAlertRequest.options:type_name -> rill.admin.v1.AlertOptions + 188, // 65: rill.admin.v1.EditAlertRequest.options:type_name -> rill.admin.v1.AlertOptions + 188, // 66: rill.admin.v1.GenerateAlertYAMLRequest.options:type_name -> rill.admin.v1.AlertOptions + 201, // 67: rill.admin.v1.TelemetryRequest.event:type_name -> google.protobuf.Struct + 174, // 68: rill.admin.v1.User.quotas:type_name -> rill.admin.v1.UserQuotas + 200, // 69: rill.admin.v1.User.created_on:type_name -> google.protobuf.Timestamp + 200, // 70: rill.admin.v1.User.updated_on:type_name -> google.protobuf.Timestamp + 200, // 71: rill.admin.v1.Service.created_on:type_name -> google.protobuf.Timestamp + 200, // 72: rill.admin.v1.Service.updated_on:type_name -> google.protobuf.Timestamp + 175, // 73: rill.admin.v1.Organization.quotas:type_name -> rill.admin.v1.OrganizationQuotas + 200, // 74: rill.admin.v1.Organization.created_on:type_name -> google.protobuf.Timestamp + 200, // 75: rill.admin.v1.Organization.updated_on:type_name -> google.protobuf.Timestamp + 199, // 76: rill.admin.v1.Project.annotations:type_name -> rill.admin.v1.Project.AnnotationsEntry + 200, // 77: rill.admin.v1.Project.created_on:type_name -> google.protobuf.Timestamp + 200, // 78: rill.admin.v1.Project.updated_on:type_name -> google.protobuf.Timestamp + 1, // 79: rill.admin.v1.Deployment.status:type_name -> rill.admin.v1.DeploymentStatus + 200, // 80: rill.admin.v1.Deployment.created_on:type_name -> google.protobuf.Timestamp + 200, // 81: rill.admin.v1.Deployment.updated_on:type_name -> google.protobuf.Timestamp + 200, // 82: rill.admin.v1.Member.created_on:type_name -> google.protobuf.Timestamp + 200, // 83: rill.admin.v1.Member.updated_on:type_name -> google.protobuf.Timestamp + 200, // 84: rill.admin.v1.Bookmark.created_on:type_name -> google.protobuf.Timestamp + 200, // 85: rill.admin.v1.Bookmark.updated_on:type_name -> google.protobuf.Timestamp + 200, // 86: rill.admin.v1.ServiceToken.created_on:type_name -> google.protobuf.Timestamp + 200, // 87: rill.admin.v1.ServiceToken.expires_on:type_name -> google.protobuf.Timestamp + 200, // 88: rill.admin.v1.MagicAuthToken.created_on:type_name -> google.protobuf.Timestamp + 200, // 89: rill.admin.v1.MagicAuthToken.expires_on:type_name -> google.protobuf.Timestamp + 200, // 90: rill.admin.v1.MagicAuthToken.used_on:type_name -> google.protobuf.Timestamp + 201, // 91: rill.admin.v1.MagicAuthToken.attributes:type_name -> google.protobuf.Struct + 202, // 92: rill.admin.v1.MagicAuthToken.metrics_view_filter:type_name -> rill.runtime.v1.Expression + 200, // 93: rill.admin.v1.VirtualFile.updated_on:type_name -> google.protobuf.Timestamp + 203, // 94: rill.admin.v1.ReportOptions.export_format:type_name -> rill.runtime.v1.ExportFormat + 0, // 95: rill.admin.v1.GetGithubUserStatusResponse.OrganizationInstallationPermissionsEntry.value:type_name -> rill.admin.v1.GithubPermission + 2, // 96: rill.admin.v1.AdminService.Ping:input_type -> rill.admin.v1.PingRequest + 4, // 97: rill.admin.v1.AdminService.ListOrganizations:input_type -> rill.admin.v1.ListOrganizationsRequest + 6, // 98: rill.admin.v1.AdminService.GetOrganization:input_type -> rill.admin.v1.GetOrganizationRequest + 8, // 99: rill.admin.v1.AdminService.CreateOrganization:input_type -> rill.admin.v1.CreateOrganizationRequest + 10, // 100: rill.admin.v1.AdminService.DeleteOrganization:input_type -> rill.admin.v1.DeleteOrganizationRequest + 12, // 101: rill.admin.v1.AdminService.UpdateOrganization:input_type -> rill.admin.v1.UpdateOrganizationRequest + 14, // 102: rill.admin.v1.AdminService.ListProjectsForOrganization:input_type -> rill.admin.v1.ListProjectsForOrganizationRequest + 16, // 103: rill.admin.v1.AdminService.GetProject:input_type -> rill.admin.v1.GetProjectRequest + 18, // 104: rill.admin.v1.AdminService.SearchProjectNames:input_type -> rill.admin.v1.SearchProjectNamesRequest + 20, // 105: rill.admin.v1.AdminService.GetProjectVariables:input_type -> rill.admin.v1.GetProjectVariablesRequest + 36, // 106: rill.admin.v1.AdminService.CreateProject:input_type -> rill.admin.v1.CreateProjectRequest + 38, // 107: rill.admin.v1.AdminService.DeleteProject:input_type -> rill.admin.v1.DeleteProjectRequest + 40, // 108: rill.admin.v1.AdminService.UpdateProject:input_type -> rill.admin.v1.UpdateProjectRequest + 42, // 109: rill.admin.v1.AdminService.UpdateProjectVariables:input_type -> rill.admin.v1.UpdateProjectVariablesRequest + 44, // 110: rill.admin.v1.AdminService.TriggerReconcile:input_type -> rill.admin.v1.TriggerReconcileRequest + 46, // 111: rill.admin.v1.AdminService.TriggerRefreshSources:input_type -> rill.admin.v1.TriggerRefreshSourcesRequest + 48, // 112: rill.admin.v1.AdminService.TriggerRedeploy:input_type -> rill.admin.v1.TriggerRedeployRequest + 50, // 113: rill.admin.v1.AdminService.ListOrganizationMembers:input_type -> rill.admin.v1.ListOrganizationMembersRequest + 52, // 114: rill.admin.v1.AdminService.ListOrganizationInvites:input_type -> rill.admin.v1.ListOrganizationInvitesRequest + 54, // 115: rill.admin.v1.AdminService.AddOrganizationMember:input_type -> rill.admin.v1.AddOrganizationMemberRequest + 56, // 116: rill.admin.v1.AdminService.RemoveOrganizationMember:input_type -> rill.admin.v1.RemoveOrganizationMemberRequest + 58, // 117: rill.admin.v1.AdminService.LeaveOrganization:input_type -> rill.admin.v1.LeaveOrganizationRequest + 60, // 118: rill.admin.v1.AdminService.SetOrganizationMemberRole:input_type -> rill.admin.v1.SetOrganizationMemberRoleRequest + 74, // 119: rill.admin.v1.AdminService.ListProjectMembers:input_type -> rill.admin.v1.ListProjectMembersRequest + 76, // 120: rill.admin.v1.AdminService.ListProjectInvites:input_type -> rill.admin.v1.ListProjectInvitesRequest + 78, // 121: rill.admin.v1.AdminService.AddProjectMember:input_type -> rill.admin.v1.AddProjectMemberRequest + 80, // 122: rill.admin.v1.AdminService.RemoveProjectMember:input_type -> rill.admin.v1.RemoveProjectMemberRequest + 82, // 123: rill.admin.v1.AdminService.SetProjectMemberRole:input_type -> rill.admin.v1.SetProjectMemberRoleRequest + 84, // 124: rill.admin.v1.AdminService.GetCurrentUser:input_type -> rill.admin.v1.GetCurrentUserRequest + 105, // 125: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:input_type -> rill.admin.v1.IssueRepresentativeAuthTokenRequest + 103, // 126: rill.admin.v1.AdminService.RevokeCurrentAuthToken:input_type -> rill.admin.v1.RevokeCurrentAuthTokenRequest + 119, // 127: rill.admin.v1.AdminService.GetGithubRepoStatus:input_type -> rill.admin.v1.GetGithubRepoStatusRequest + 121, // 128: rill.admin.v1.AdminService.GetGithubUserStatus:input_type -> rill.admin.v1.GetGithubUserStatusRequest + 123, // 129: rill.admin.v1.AdminService.GetGitCredentials:input_type -> rill.admin.v1.GetGitCredentialsRequest + 125, // 130: rill.admin.v1.AdminService.CreateWhitelistedDomain:input_type -> rill.admin.v1.CreateWhitelistedDomainRequest + 127, // 131: rill.admin.v1.AdminService.RemoveWhitelistedDomain:input_type -> rill.admin.v1.RemoveWhitelistedDomainRequest + 129, // 132: rill.admin.v1.AdminService.ListWhitelistedDomains:input_type -> rill.admin.v1.ListWhitelistedDomainsRequest + 86, // 133: rill.admin.v1.AdminService.GetUser:input_type -> rill.admin.v1.GetUserRequest + 101, // 134: rill.admin.v1.AdminService.SearchUsers:input_type -> rill.admin.v1.SearchUsersRequest + 22, // 135: rill.admin.v1.AdminService.SearchProjectUsers:input_type -> rill.admin.v1.SearchProjectUsersRequest + 62, // 136: rill.admin.v1.AdminService.ListSuperusers:input_type -> rill.admin.v1.ListSuperusersRequest + 24, // 137: rill.admin.v1.AdminService.GetDeploymentCredentials:input_type -> rill.admin.v1.GetDeploymentCredentialsRequest + 26, // 138: rill.admin.v1.AdminService.GetIFrame:input_type -> rill.admin.v1.GetIFrameRequest + 64, // 139: rill.admin.v1.AdminService.SetSuperuser:input_type -> rill.admin.v1.SetSuperuserRequest + 66, // 140: rill.admin.v1.AdminService.SudoGetResource:input_type -> rill.admin.v1.SudoGetResourceRequest + 70, // 141: rill.admin.v1.AdminService.SudoUpdateUserQuotas:input_type -> rill.admin.v1.SudoUpdateUserQuotasRequest + 68, // 142: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:input_type -> rill.admin.v1.SudoUpdateOrganizationQuotasRequest + 72, // 143: rill.admin.v1.AdminService.SudoUpdateAnnotations:input_type -> rill.admin.v1.SudoUpdateAnnotationsRequest + 131, // 144: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:input_type -> rill.admin.v1.CreateProjectWhitelistedDomainRequest + 133, // 145: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:input_type -> rill.admin.v1.RemoveProjectWhitelistedDomainRequest + 135, // 146: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:input_type -> rill.admin.v1.ListProjectWhitelistedDomainsRequest + 28, // 147: rill.admin.v1.AdminService.ListServices:input_type -> rill.admin.v1.ListServicesRequest + 30, // 148: rill.admin.v1.AdminService.CreateService:input_type -> rill.admin.v1.CreateServiceRequest + 32, // 149: rill.admin.v1.AdminService.UpdateService:input_type -> rill.admin.v1.UpdateServiceRequest + 34, // 150: rill.admin.v1.AdminService.DeleteService:input_type -> rill.admin.v1.DeleteServiceRequest + 111, // 151: rill.admin.v1.AdminService.ListServiceAuthTokens:input_type -> rill.admin.v1.ListServiceAuthTokensRequest + 109, // 152: rill.admin.v1.AdminService.IssueServiceAuthToken:input_type -> rill.admin.v1.IssueServiceAuthTokenRequest + 107, // 153: rill.admin.v1.AdminService.RevokeServiceAuthToken:input_type -> rill.admin.v1.RevokeServiceAuthTokenRequest + 113, // 154: rill.admin.v1.AdminService.IssueMagicAuthToken:input_type -> rill.admin.v1.IssueMagicAuthTokenRequest + 115, // 155: rill.admin.v1.AdminService.ListMagicAuthTokens:input_type -> rill.admin.v1.ListMagicAuthTokensRequest + 117, // 156: rill.admin.v1.AdminService.RevokeMagicAuthToken:input_type -> rill.admin.v1.RevokeMagicAuthTokenRequest + 89, // 157: rill.admin.v1.AdminService.UpdateUserPreferences:input_type -> rill.admin.v1.UpdateUserPreferencesRequest + 91, // 158: rill.admin.v1.AdminService.ListBookmarks:input_type -> rill.admin.v1.ListBookmarksRequest + 93, // 159: rill.admin.v1.AdminService.GetBookmark:input_type -> rill.admin.v1.GetBookmarkRequest + 95, // 160: rill.admin.v1.AdminService.CreateBookmark:input_type -> rill.admin.v1.CreateBookmarkRequest + 97, // 161: rill.admin.v1.AdminService.UpdateBookmark:input_type -> rill.admin.v1.UpdateBookmarkRequest + 99, // 162: rill.admin.v1.AdminService.RemoveBookmark:input_type -> rill.admin.v1.RemoveBookmarkRequest + 137, // 163: rill.admin.v1.AdminService.GetRepoMeta:input_type -> rill.admin.v1.GetRepoMetaRequest + 139, // 164: rill.admin.v1.AdminService.PullVirtualRepo:input_type -> rill.admin.v1.PullVirtualRepoRequest + 141, // 165: rill.admin.v1.AdminService.GetReportMeta:input_type -> rill.admin.v1.GetReportMetaRequest + 143, // 166: rill.admin.v1.AdminService.GetAlertMeta:input_type -> rill.admin.v1.GetAlertMetaRequest + 145, // 167: rill.admin.v1.AdminService.CreateReport:input_type -> rill.admin.v1.CreateReportRequest + 147, // 168: rill.admin.v1.AdminService.EditReport:input_type -> rill.admin.v1.EditReportRequest + 149, // 169: rill.admin.v1.AdminService.UnsubscribeReport:input_type -> rill.admin.v1.UnsubscribeReportRequest + 151, // 170: rill.admin.v1.AdminService.DeleteReport:input_type -> rill.admin.v1.DeleteReportRequest + 153, // 171: rill.admin.v1.AdminService.TriggerReport:input_type -> rill.admin.v1.TriggerReportRequest + 155, // 172: rill.admin.v1.AdminService.GenerateReportYAML:input_type -> rill.admin.v1.GenerateReportYAMLRequest + 157, // 173: rill.admin.v1.AdminService.CreateAlert:input_type -> rill.admin.v1.CreateAlertRequest + 159, // 174: rill.admin.v1.AdminService.EditAlert:input_type -> rill.admin.v1.EditAlertRequest + 161, // 175: rill.admin.v1.AdminService.UnsubscribeAlert:input_type -> rill.admin.v1.UnsubscribeAlertRequest + 163, // 176: rill.admin.v1.AdminService.DeleteAlert:input_type -> rill.admin.v1.DeleteAlertRequest + 165, // 177: rill.admin.v1.AdminService.GenerateAlertYAML:input_type -> rill.admin.v1.GenerateAlertYAMLRequest + 167, // 178: rill.admin.v1.AdminService.GetAlertYAML:input_type -> rill.admin.v1.GetAlertYAMLRequest + 3, // 179: rill.admin.v1.AdminService.Ping:output_type -> rill.admin.v1.PingResponse + 5, // 180: rill.admin.v1.AdminService.ListOrganizations:output_type -> rill.admin.v1.ListOrganizationsResponse + 7, // 181: rill.admin.v1.AdminService.GetOrganization:output_type -> rill.admin.v1.GetOrganizationResponse + 9, // 182: rill.admin.v1.AdminService.CreateOrganization:output_type -> rill.admin.v1.CreateOrganizationResponse + 11, // 183: rill.admin.v1.AdminService.DeleteOrganization:output_type -> rill.admin.v1.DeleteOrganizationResponse + 13, // 184: rill.admin.v1.AdminService.UpdateOrganization:output_type -> rill.admin.v1.UpdateOrganizationResponse + 15, // 185: rill.admin.v1.AdminService.ListProjectsForOrganization:output_type -> rill.admin.v1.ListProjectsForOrganizationResponse + 17, // 186: rill.admin.v1.AdminService.GetProject:output_type -> rill.admin.v1.GetProjectResponse + 19, // 187: rill.admin.v1.AdminService.SearchProjectNames:output_type -> rill.admin.v1.SearchProjectNamesResponse + 21, // 188: rill.admin.v1.AdminService.GetProjectVariables:output_type -> rill.admin.v1.GetProjectVariablesResponse + 37, // 189: rill.admin.v1.AdminService.CreateProject:output_type -> rill.admin.v1.CreateProjectResponse + 39, // 190: rill.admin.v1.AdminService.DeleteProject:output_type -> rill.admin.v1.DeleteProjectResponse + 41, // 191: rill.admin.v1.AdminService.UpdateProject:output_type -> rill.admin.v1.UpdateProjectResponse + 43, // 192: rill.admin.v1.AdminService.UpdateProjectVariables:output_type -> rill.admin.v1.UpdateProjectVariablesResponse + 45, // 193: rill.admin.v1.AdminService.TriggerReconcile:output_type -> rill.admin.v1.TriggerReconcileResponse + 47, // 194: rill.admin.v1.AdminService.TriggerRefreshSources:output_type -> rill.admin.v1.TriggerRefreshSourcesResponse + 49, // 195: rill.admin.v1.AdminService.TriggerRedeploy:output_type -> rill.admin.v1.TriggerRedeployResponse + 51, // 196: rill.admin.v1.AdminService.ListOrganizationMembers:output_type -> rill.admin.v1.ListOrganizationMembersResponse + 53, // 197: rill.admin.v1.AdminService.ListOrganizationInvites:output_type -> rill.admin.v1.ListOrganizationInvitesResponse + 55, // 198: rill.admin.v1.AdminService.AddOrganizationMember:output_type -> rill.admin.v1.AddOrganizationMemberResponse + 57, // 199: rill.admin.v1.AdminService.RemoveOrganizationMember:output_type -> rill.admin.v1.RemoveOrganizationMemberResponse + 59, // 200: rill.admin.v1.AdminService.LeaveOrganization:output_type -> rill.admin.v1.LeaveOrganizationResponse + 61, // 201: rill.admin.v1.AdminService.SetOrganizationMemberRole:output_type -> rill.admin.v1.SetOrganizationMemberRoleResponse + 75, // 202: rill.admin.v1.AdminService.ListProjectMembers:output_type -> rill.admin.v1.ListProjectMembersResponse + 77, // 203: rill.admin.v1.AdminService.ListProjectInvites:output_type -> rill.admin.v1.ListProjectInvitesResponse + 79, // 204: rill.admin.v1.AdminService.AddProjectMember:output_type -> rill.admin.v1.AddProjectMemberResponse + 81, // 205: rill.admin.v1.AdminService.RemoveProjectMember:output_type -> rill.admin.v1.RemoveProjectMemberResponse + 83, // 206: rill.admin.v1.AdminService.SetProjectMemberRole:output_type -> rill.admin.v1.SetProjectMemberRoleResponse + 85, // 207: rill.admin.v1.AdminService.GetCurrentUser:output_type -> rill.admin.v1.GetCurrentUserResponse + 106, // 208: rill.admin.v1.AdminService.IssueRepresentativeAuthToken:output_type -> rill.admin.v1.IssueRepresentativeAuthTokenResponse + 104, // 209: rill.admin.v1.AdminService.RevokeCurrentAuthToken:output_type -> rill.admin.v1.RevokeCurrentAuthTokenResponse + 120, // 210: rill.admin.v1.AdminService.GetGithubRepoStatus:output_type -> rill.admin.v1.GetGithubRepoStatusResponse + 122, // 211: rill.admin.v1.AdminService.GetGithubUserStatus:output_type -> rill.admin.v1.GetGithubUserStatusResponse + 124, // 212: rill.admin.v1.AdminService.GetGitCredentials:output_type -> rill.admin.v1.GetGitCredentialsResponse + 126, // 213: rill.admin.v1.AdminService.CreateWhitelistedDomain:output_type -> rill.admin.v1.CreateWhitelistedDomainResponse + 128, // 214: rill.admin.v1.AdminService.RemoveWhitelistedDomain:output_type -> rill.admin.v1.RemoveWhitelistedDomainResponse + 130, // 215: rill.admin.v1.AdminService.ListWhitelistedDomains:output_type -> rill.admin.v1.ListWhitelistedDomainsResponse + 87, // 216: rill.admin.v1.AdminService.GetUser:output_type -> rill.admin.v1.GetUserResponse + 102, // 217: rill.admin.v1.AdminService.SearchUsers:output_type -> rill.admin.v1.SearchUsersResponse + 23, // 218: rill.admin.v1.AdminService.SearchProjectUsers:output_type -> rill.admin.v1.SearchProjectUsersResponse + 63, // 219: rill.admin.v1.AdminService.ListSuperusers:output_type -> rill.admin.v1.ListSuperusersResponse + 25, // 220: rill.admin.v1.AdminService.GetDeploymentCredentials:output_type -> rill.admin.v1.GetDeploymentCredentialsResponse + 27, // 221: rill.admin.v1.AdminService.GetIFrame:output_type -> rill.admin.v1.GetIFrameResponse + 65, // 222: rill.admin.v1.AdminService.SetSuperuser:output_type -> rill.admin.v1.SetSuperuserResponse + 67, // 223: rill.admin.v1.AdminService.SudoGetResource:output_type -> rill.admin.v1.SudoGetResourceResponse + 71, // 224: rill.admin.v1.AdminService.SudoUpdateUserQuotas:output_type -> rill.admin.v1.SudoUpdateUserQuotasResponse + 69, // 225: rill.admin.v1.AdminService.SudoUpdateOrganizationQuotas:output_type -> rill.admin.v1.SudoUpdateOrganizationQuotasResponse + 73, // 226: rill.admin.v1.AdminService.SudoUpdateAnnotations:output_type -> rill.admin.v1.SudoUpdateAnnotationsResponse + 132, // 227: rill.admin.v1.AdminService.CreateProjectWhitelistedDomain:output_type -> rill.admin.v1.CreateProjectWhitelistedDomainResponse + 134, // 228: rill.admin.v1.AdminService.RemoveProjectWhitelistedDomain:output_type -> rill.admin.v1.RemoveProjectWhitelistedDomainResponse + 136, // 229: rill.admin.v1.AdminService.ListProjectWhitelistedDomains:output_type -> rill.admin.v1.ListProjectWhitelistedDomainsResponse + 29, // 230: rill.admin.v1.AdminService.ListServices:output_type -> rill.admin.v1.ListServicesResponse + 31, // 231: rill.admin.v1.AdminService.CreateService:output_type -> rill.admin.v1.CreateServiceResponse + 33, // 232: rill.admin.v1.AdminService.UpdateService:output_type -> rill.admin.v1.UpdateServiceResponse + 35, // 233: rill.admin.v1.AdminService.DeleteService:output_type -> rill.admin.v1.DeleteServiceResponse + 112, // 234: rill.admin.v1.AdminService.ListServiceAuthTokens:output_type -> rill.admin.v1.ListServiceAuthTokensResponse + 110, // 235: rill.admin.v1.AdminService.IssueServiceAuthToken:output_type -> rill.admin.v1.IssueServiceAuthTokenResponse + 108, // 236: rill.admin.v1.AdminService.RevokeServiceAuthToken:output_type -> rill.admin.v1.RevokeServiceAuthTokenResponse + 114, // 237: rill.admin.v1.AdminService.IssueMagicAuthToken:output_type -> rill.admin.v1.IssueMagicAuthTokenResponse + 116, // 238: rill.admin.v1.AdminService.ListMagicAuthTokens:output_type -> rill.admin.v1.ListMagicAuthTokensResponse + 118, // 239: rill.admin.v1.AdminService.RevokeMagicAuthToken:output_type -> rill.admin.v1.RevokeMagicAuthTokenResponse + 90, // 240: rill.admin.v1.AdminService.UpdateUserPreferences:output_type -> rill.admin.v1.UpdateUserPreferencesResponse + 92, // 241: rill.admin.v1.AdminService.ListBookmarks:output_type -> rill.admin.v1.ListBookmarksResponse + 94, // 242: rill.admin.v1.AdminService.GetBookmark:output_type -> rill.admin.v1.GetBookmarkResponse + 96, // 243: rill.admin.v1.AdminService.CreateBookmark:output_type -> rill.admin.v1.CreateBookmarkResponse + 98, // 244: rill.admin.v1.AdminService.UpdateBookmark:output_type -> rill.admin.v1.UpdateBookmarkResponse + 100, // 245: rill.admin.v1.AdminService.RemoveBookmark:output_type -> rill.admin.v1.RemoveBookmarkResponse + 138, // 246: rill.admin.v1.AdminService.GetRepoMeta:output_type -> rill.admin.v1.GetRepoMetaResponse + 140, // 247: rill.admin.v1.AdminService.PullVirtualRepo:output_type -> rill.admin.v1.PullVirtualRepoResponse + 142, // 248: rill.admin.v1.AdminService.GetReportMeta:output_type -> rill.admin.v1.GetReportMetaResponse + 144, // 249: rill.admin.v1.AdminService.GetAlertMeta:output_type -> rill.admin.v1.GetAlertMetaResponse + 146, // 250: rill.admin.v1.AdminService.CreateReport:output_type -> rill.admin.v1.CreateReportResponse + 148, // 251: rill.admin.v1.AdminService.EditReport:output_type -> rill.admin.v1.EditReportResponse + 150, // 252: rill.admin.v1.AdminService.UnsubscribeReport:output_type -> rill.admin.v1.UnsubscribeReportResponse + 152, // 253: rill.admin.v1.AdminService.DeleteReport:output_type -> rill.admin.v1.DeleteReportResponse + 154, // 254: rill.admin.v1.AdminService.TriggerReport:output_type -> rill.admin.v1.TriggerReportResponse + 156, // 255: rill.admin.v1.AdminService.GenerateReportYAML:output_type -> rill.admin.v1.GenerateReportYAMLResponse + 158, // 256: rill.admin.v1.AdminService.CreateAlert:output_type -> rill.admin.v1.CreateAlertResponse + 160, // 257: rill.admin.v1.AdminService.EditAlert:output_type -> rill.admin.v1.EditAlertResponse + 162, // 258: rill.admin.v1.AdminService.UnsubscribeAlert:output_type -> rill.admin.v1.UnsubscribeAlertResponse + 164, // 259: rill.admin.v1.AdminService.DeleteAlert:output_type -> rill.admin.v1.DeleteAlertResponse + 166, // 260: rill.admin.v1.AdminService.GenerateAlertYAML:output_type -> rill.admin.v1.GenerateAlertYAMLResponse + 168, // 261: rill.admin.v1.AdminService.GetAlertYAML:output_type -> rill.admin.v1.GetAlertYAMLResponse + 179, // [179:262] is the sub-list for method output_type + 96, // [96:179] is the sub-list for method input_type + 96, // [96:96] is the sub-list for extension type_name + 96, // [96:96] is the sub-list for extension extendee + 0, // [0:96] is the sub-list for field type_name } func init() { file_rill_admin_v1_api_proto_init() } @@ -14029,7 +14699,7 @@ func file_rill_admin_v1_api_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_admin_v1_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*PingRequest); i { case 0: return &v.state @@ -14041,7 +14711,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*PingResponse); i { case 0: return &v.state @@ -14053,7 +14723,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationsRequest); i { case 0: return &v.state @@ -14065,7 +14735,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationsResponse); i { case 0: return &v.state @@ -14077,7 +14747,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*GetOrganizationRequest); i { case 0: return &v.state @@ -14089,7 +14759,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*GetOrganizationResponse); i { case 0: return &v.state @@ -14101,7 +14771,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*CreateOrganizationRequest); i { case 0: return &v.state @@ -14113,7 +14783,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*CreateOrganizationResponse); i { case 0: return &v.state @@ -14125,7 +14795,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*DeleteOrganizationRequest); i { case 0: return &v.state @@ -14137,7 +14807,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*DeleteOrganizationResponse); i { case 0: return &v.state @@ -14149,7 +14819,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*UpdateOrganizationRequest); i { case 0: return &v.state @@ -14161,7 +14831,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*UpdateOrganizationResponse); i { case 0: return &v.state @@ -14173,7 +14843,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*ListProjectsForOrganizationRequest); i { case 0: return &v.state @@ -14185,7 +14855,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*ListProjectsForOrganizationResponse); i { case 0: return &v.state @@ -14197,7 +14867,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*GetProjectRequest); i { case 0: return &v.state @@ -14209,7 +14879,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*GetProjectResponse); i { case 0: return &v.state @@ -14221,7 +14891,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*SearchProjectNamesRequest); i { case 0: return &v.state @@ -14233,7 +14903,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*SearchProjectNamesResponse); i { case 0: return &v.state @@ -14245,7 +14915,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*GetProjectVariablesRequest); i { case 0: return &v.state @@ -14257,7 +14927,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*GetProjectVariablesResponse); i { case 0: return &v.state @@ -14269,7 +14939,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*SearchProjectUsersRequest); i { case 0: return &v.state @@ -14281,7 +14951,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*SearchProjectUsersResponse); i { case 0: return &v.state @@ -14293,7 +14963,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*GetDeploymentCredentialsRequest); i { case 0: return &v.state @@ -14305,7 +14975,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*GetDeploymentCredentialsResponse); i { case 0: return &v.state @@ -14317,7 +14987,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*GetIFrameRequest); i { case 0: return &v.state @@ -14329,7 +14999,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*GetIFrameResponse); i { case 0: return &v.state @@ -14341,7 +15011,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*ListServicesRequest); i { case 0: return &v.state @@ -14353,7 +15023,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*ListServicesResponse); i { case 0: return &v.state @@ -14365,7 +15035,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*CreateServiceRequest); i { case 0: return &v.state @@ -14377,7 +15047,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*CreateServiceResponse); i { case 0: return &v.state @@ -14389,7 +15059,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*UpdateServiceRequest); i { case 0: return &v.state @@ -14401,7 +15071,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*UpdateServiceResponse); i { case 0: return &v.state @@ -14413,7 +15083,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*DeleteServiceRequest); i { case 0: return &v.state @@ -14425,7 +15095,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*DeleteServiceResponse); i { case 0: return &v.state @@ -14437,7 +15107,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*CreateProjectRequest); i { case 0: return &v.state @@ -14449,7 +15119,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*CreateProjectResponse); i { case 0: return &v.state @@ -14461,7 +15131,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*DeleteProjectRequest); i { case 0: return &v.state @@ -14473,7 +15143,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*DeleteProjectResponse); i { case 0: return &v.state @@ -14485,7 +15155,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*UpdateProjectRequest); i { case 0: return &v.state @@ -14497,7 +15167,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*UpdateProjectResponse); i { case 0: return &v.state @@ -14509,7 +15179,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*UpdateProjectVariablesRequest); i { case 0: return &v.state @@ -14521,7 +15191,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*UpdateProjectVariablesResponse); i { case 0: return &v.state @@ -14533,7 +15203,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*TriggerReconcileRequest); i { case 0: return &v.state @@ -14545,7 +15215,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*TriggerReconcileResponse); i { case 0: return &v.state @@ -14557,7 +15227,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*TriggerRefreshSourcesRequest); i { case 0: return &v.state @@ -14569,7 +15239,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*TriggerRefreshSourcesResponse); i { case 0: return &v.state @@ -14581,7 +15251,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*TriggerRedeployRequest); i { case 0: return &v.state @@ -14593,7 +15263,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*TriggerRedeployResponse); i { case 0: return &v.state @@ -14605,7 +15275,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationMembersRequest); i { case 0: return &v.state @@ -14617,7 +15287,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationMembersResponse); i { case 0: return &v.state @@ -14629,7 +15299,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationInvitesRequest); i { case 0: return &v.state @@ -14641,7 +15311,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*ListOrganizationInvitesResponse); i { case 0: return &v.state @@ -14653,7 +15323,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*AddOrganizationMemberRequest); i { case 0: return &v.state @@ -14665,7 +15335,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*AddOrganizationMemberResponse); i { case 0: return &v.state @@ -14677,7 +15347,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*RemoveOrganizationMemberRequest); i { case 0: return &v.state @@ -14689,7 +15359,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*RemoveOrganizationMemberResponse); i { case 0: return &v.state @@ -14701,7 +15371,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*LeaveOrganizationRequest); i { case 0: return &v.state @@ -14713,7 +15383,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*LeaveOrganizationResponse); i { case 0: return &v.state @@ -14725,7 +15395,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*SetOrganizationMemberRoleRequest); i { case 0: return &v.state @@ -14737,7 +15407,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*SetOrganizationMemberRoleResponse); i { case 0: return &v.state @@ -14749,7 +15419,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*ListSuperusersRequest); i { case 0: return &v.state @@ -14761,7 +15431,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*ListSuperusersResponse); i { case 0: return &v.state @@ -14773,7 +15443,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*SetSuperuserRequest); i { case 0: return &v.state @@ -14785,7 +15455,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*SetSuperuserResponse); i { case 0: return &v.state @@ -14797,7 +15467,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*SudoGetResourceRequest); i { case 0: return &v.state @@ -14809,7 +15479,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*SudoGetResourceResponse); i { case 0: return &v.state @@ -14821,7 +15491,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*SudoUpdateOrganizationQuotasRequest); i { case 0: return &v.state @@ -14833,7 +15503,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*SudoUpdateOrganizationQuotasResponse); i { case 0: return &v.state @@ -14845,7 +15515,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*SudoUpdateUserQuotasRequest); i { case 0: return &v.state @@ -14857,7 +15527,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*SudoUpdateUserQuotasResponse); i { case 0: return &v.state @@ -14869,7 +15539,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*SudoUpdateAnnotationsRequest); i { case 0: return &v.state @@ -14881,7 +15551,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[71].Exporter = func(v any, i int) any { switch v := v.(*SudoUpdateAnnotationsResponse); i { case 0: return &v.state @@ -14893,7 +15563,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*ListProjectMembersRequest); i { case 0: return &v.state @@ -14905,7 +15575,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[73].Exporter = func(v any, i int) any { switch v := v.(*ListProjectMembersResponse); i { case 0: return &v.state @@ -14917,7 +15587,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[74].Exporter = func(v any, i int) any { switch v := v.(*ListProjectInvitesRequest); i { case 0: return &v.state @@ -14929,7 +15599,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*ListProjectInvitesResponse); i { case 0: return &v.state @@ -14941,7 +15611,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*AddProjectMemberRequest); i { case 0: return &v.state @@ -14953,7 +15623,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[77].Exporter = func(v any, i int) any { switch v := v.(*AddProjectMemberResponse); i { case 0: return &v.state @@ -14965,7 +15635,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[78].Exporter = func(v any, i int) any { switch v := v.(*RemoveProjectMemberRequest); i { case 0: return &v.state @@ -14977,7 +15647,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[79].Exporter = func(v any, i int) any { switch v := v.(*RemoveProjectMemberResponse); i { case 0: return &v.state @@ -14989,7 +15659,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*SetProjectMemberRoleRequest); i { case 0: return &v.state @@ -15001,7 +15671,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[81].Exporter = func(v any, i int) any { switch v := v.(*SetProjectMemberRoleResponse); i { case 0: return &v.state @@ -15013,7 +15683,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[82].Exporter = func(v any, i int) any { switch v := v.(*GetCurrentUserRequest); i { case 0: return &v.state @@ -15025,7 +15695,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[83].Exporter = func(v any, i int) any { switch v := v.(*GetCurrentUserResponse); i { case 0: return &v.state @@ -15037,7 +15707,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[84].Exporter = func(v any, i int) any { switch v := v.(*GetUserRequest); i { case 0: return &v.state @@ -15049,7 +15719,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[85].Exporter = func(v any, i int) any { switch v := v.(*GetUserResponse); i { case 0: return &v.state @@ -15061,7 +15731,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[86].Exporter = func(v any, i int) any { switch v := v.(*UserPreferences); i { case 0: return &v.state @@ -15073,7 +15743,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[87].Exporter = func(v any, i int) any { switch v := v.(*UpdateUserPreferencesRequest); i { case 0: return &v.state @@ -15085,7 +15755,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[88].Exporter = func(v any, i int) any { switch v := v.(*UpdateUserPreferencesResponse); i { case 0: return &v.state @@ -15097,7 +15767,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[89].Exporter = func(v any, i int) any { switch v := v.(*ListBookmarksRequest); i { case 0: return &v.state @@ -15109,7 +15779,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[90].Exporter = func(v any, i int) any { switch v := v.(*ListBookmarksResponse); i { case 0: return &v.state @@ -15121,7 +15791,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[91].Exporter = func(v any, i int) any { switch v := v.(*GetBookmarkRequest); i { case 0: return &v.state @@ -15133,7 +15803,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[92].Exporter = func(v any, i int) any { switch v := v.(*GetBookmarkResponse); i { case 0: return &v.state @@ -15145,7 +15815,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[93].Exporter = func(v any, i int) any { switch v := v.(*CreateBookmarkRequest); i { case 0: return &v.state @@ -15157,7 +15827,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[94].Exporter = func(v any, i int) any { switch v := v.(*CreateBookmarkResponse); i { case 0: return &v.state @@ -15169,7 +15839,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[95].Exporter = func(v any, i int) any { switch v := v.(*UpdateBookmarkRequest); i { case 0: return &v.state @@ -15181,7 +15851,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[96].Exporter = func(v any, i int) any { switch v := v.(*UpdateBookmarkResponse); i { case 0: return &v.state @@ -15193,7 +15863,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[97].Exporter = func(v any, i int) any { switch v := v.(*RemoveBookmarkRequest); i { case 0: return &v.state @@ -15205,7 +15875,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[98].Exporter = func(v any, i int) any { switch v := v.(*RemoveBookmarkResponse); i { case 0: return &v.state @@ -15217,7 +15887,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[99].Exporter = func(v any, i int) any { switch v := v.(*SearchUsersRequest); i { case 0: return &v.state @@ -15229,7 +15899,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[100].Exporter = func(v any, i int) any { switch v := v.(*SearchUsersResponse); i { case 0: return &v.state @@ -15241,7 +15911,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[101].Exporter = func(v any, i int) any { switch v := v.(*RevokeCurrentAuthTokenRequest); i { case 0: return &v.state @@ -15253,7 +15923,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[102].Exporter = func(v any, i int) any { switch v := v.(*RevokeCurrentAuthTokenResponse); i { case 0: return &v.state @@ -15265,7 +15935,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[103].Exporter = func(v any, i int) any { switch v := v.(*IssueRepresentativeAuthTokenRequest); i { case 0: return &v.state @@ -15277,7 +15947,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[104].Exporter = func(v any, i int) any { switch v := v.(*IssueRepresentativeAuthTokenResponse); i { case 0: return &v.state @@ -15289,7 +15959,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[105].Exporter = func(v any, i int) any { switch v := v.(*RevokeServiceAuthTokenRequest); i { case 0: return &v.state @@ -15301,7 +15971,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[106].Exporter = func(v any, i int) any { switch v := v.(*RevokeServiceAuthTokenResponse); i { case 0: return &v.state @@ -15313,7 +15983,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[107].Exporter = func(v any, i int) any { switch v := v.(*IssueServiceAuthTokenRequest); i { case 0: return &v.state @@ -15325,7 +15995,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[108].Exporter = func(v any, i int) any { switch v := v.(*IssueServiceAuthTokenResponse); i { case 0: return &v.state @@ -15337,7 +16007,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[109].Exporter = func(v any, i int) any { switch v := v.(*ListServiceAuthTokensRequest); i { case 0: return &v.state @@ -15349,7 +16019,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[110].Exporter = func(v any, i int) any { switch v := v.(*ListServiceAuthTokensResponse); i { case 0: return &v.state @@ -15361,7 +16031,79 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[111].Exporter = func(v any, i int) any { + switch v := v.(*IssueMagicAuthTokenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[112].Exporter = func(v any, i int) any { + switch v := v.(*IssueMagicAuthTokenResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[113].Exporter = func(v any, i int) any { + switch v := v.(*ListMagicAuthTokensRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[114].Exporter = func(v any, i int) any { + switch v := v.(*ListMagicAuthTokensResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[115].Exporter = func(v any, i int) any { + switch v := v.(*RevokeMagicAuthTokenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[116].Exporter = func(v any, i int) any { + switch v := v.(*RevokeMagicAuthTokenResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[117].Exporter = func(v any, i int) any { switch v := v.(*GetGithubRepoStatusRequest); i { case 0: return &v.state @@ -15373,7 +16115,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[118].Exporter = func(v any, i int) any { switch v := v.(*GetGithubRepoStatusResponse); i { case 0: return &v.state @@ -15385,7 +16127,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[119].Exporter = func(v any, i int) any { switch v := v.(*GetGithubUserStatusRequest); i { case 0: return &v.state @@ -15397,7 +16139,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[120].Exporter = func(v any, i int) any { switch v := v.(*GetGithubUserStatusResponse); i { case 0: return &v.state @@ -15409,7 +16151,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[121].Exporter = func(v any, i int) any { switch v := v.(*GetGitCredentialsRequest); i { case 0: return &v.state @@ -15421,7 +16163,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[122].Exporter = func(v any, i int) any { switch v := v.(*GetGitCredentialsResponse); i { case 0: return &v.state @@ -15433,7 +16175,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[123].Exporter = func(v any, i int) any { switch v := v.(*CreateWhitelistedDomainRequest); i { case 0: return &v.state @@ -15445,7 +16187,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[124].Exporter = func(v any, i int) any { switch v := v.(*CreateWhitelistedDomainResponse); i { case 0: return &v.state @@ -15457,7 +16199,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[125].Exporter = func(v any, i int) any { switch v := v.(*RemoveWhitelistedDomainRequest); i { case 0: return &v.state @@ -15469,7 +16211,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[126].Exporter = func(v any, i int) any { switch v := v.(*RemoveWhitelistedDomainResponse); i { case 0: return &v.state @@ -15481,7 +16223,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[127].Exporter = func(v any, i int) any { switch v := v.(*ListWhitelistedDomainsRequest); i { case 0: return &v.state @@ -15493,7 +16235,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[128].Exporter = func(v any, i int) any { switch v := v.(*ListWhitelistedDomainsResponse); i { case 0: return &v.state @@ -15505,7 +16247,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[129].Exporter = func(v any, i int) any { switch v := v.(*CreateProjectWhitelistedDomainRequest); i { case 0: return &v.state @@ -15517,7 +16259,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[130].Exporter = func(v any, i int) any { switch v := v.(*CreateProjectWhitelistedDomainResponse); i { case 0: return &v.state @@ -15529,7 +16271,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[131].Exporter = func(v any, i int) any { switch v := v.(*RemoveProjectWhitelistedDomainRequest); i { case 0: return &v.state @@ -15541,7 +16283,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[132].Exporter = func(v any, i int) any { switch v := v.(*RemoveProjectWhitelistedDomainResponse); i { case 0: return &v.state @@ -15553,7 +16295,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[133].Exporter = func(v any, i int) any { switch v := v.(*ListProjectWhitelistedDomainsRequest); i { case 0: return &v.state @@ -15565,7 +16307,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[134].Exporter = func(v any, i int) any { switch v := v.(*ListProjectWhitelistedDomainsResponse); i { case 0: return &v.state @@ -15577,7 +16319,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[135].Exporter = func(v any, i int) any { switch v := v.(*GetRepoMetaRequest); i { case 0: return &v.state @@ -15589,7 +16331,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[136].Exporter = func(v any, i int) any { switch v := v.(*GetRepoMetaResponse); i { case 0: return &v.state @@ -15601,7 +16343,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[137].Exporter = func(v any, i int) any { switch v := v.(*PullVirtualRepoRequest); i { case 0: return &v.state @@ -15613,7 +16355,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[138].Exporter = func(v any, i int) any { switch v := v.(*PullVirtualRepoResponse); i { case 0: return &v.state @@ -15625,7 +16367,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[139].Exporter = func(v any, i int) any { switch v := v.(*GetReportMetaRequest); i { case 0: return &v.state @@ -15637,7 +16379,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[140].Exporter = func(v any, i int) any { switch v := v.(*GetReportMetaResponse); i { case 0: return &v.state @@ -15649,7 +16391,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[141].Exporter = func(v any, i int) any { switch v := v.(*GetAlertMetaRequest); i { case 0: return &v.state @@ -15661,7 +16403,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[142].Exporter = func(v any, i int) any { switch v := v.(*GetAlertMetaResponse); i { case 0: return &v.state @@ -15673,7 +16415,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[143].Exporter = func(v any, i int) any { switch v := v.(*CreateReportRequest); i { case 0: return &v.state @@ -15685,7 +16427,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[144].Exporter = func(v any, i int) any { switch v := v.(*CreateReportResponse); i { case 0: return &v.state @@ -15697,7 +16439,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[145].Exporter = func(v any, i int) any { switch v := v.(*EditReportRequest); i { case 0: return &v.state @@ -15709,7 +16451,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[146].Exporter = func(v any, i int) any { switch v := v.(*EditReportResponse); i { case 0: return &v.state @@ -15721,7 +16463,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[147].Exporter = func(v any, i int) any { switch v := v.(*UnsubscribeReportRequest); i { case 0: return &v.state @@ -15733,7 +16475,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[148].Exporter = func(v any, i int) any { switch v := v.(*UnsubscribeReportResponse); i { case 0: return &v.state @@ -15745,7 +16487,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[149].Exporter = func(v any, i int) any { switch v := v.(*DeleteReportRequest); i { case 0: return &v.state @@ -15757,7 +16499,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[150].Exporter = func(v any, i int) any { switch v := v.(*DeleteReportResponse); i { case 0: return &v.state @@ -15769,7 +16511,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[151].Exporter = func(v any, i int) any { switch v := v.(*TriggerReportRequest); i { case 0: return &v.state @@ -15781,7 +16523,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[152].Exporter = func(v any, i int) any { switch v := v.(*TriggerReportResponse); i { case 0: return &v.state @@ -15793,7 +16535,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[153].Exporter = func(v any, i int) any { switch v := v.(*GenerateReportYAMLRequest); i { case 0: return &v.state @@ -15805,7 +16547,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[154].Exporter = func(v any, i int) any { switch v := v.(*GenerateReportYAMLResponse); i { case 0: return &v.state @@ -15817,7 +16559,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[155].Exporter = func(v any, i int) any { switch v := v.(*CreateAlertRequest); i { case 0: return &v.state @@ -15829,7 +16571,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[156].Exporter = func(v any, i int) any { switch v := v.(*CreateAlertResponse); i { case 0: return &v.state @@ -15841,7 +16583,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[157].Exporter = func(v any, i int) any { switch v := v.(*EditAlertRequest); i { case 0: return &v.state @@ -15853,7 +16595,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[158].Exporter = func(v any, i int) any { switch v := v.(*EditAlertResponse); i { case 0: return &v.state @@ -15865,7 +16607,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[159].Exporter = func(v any, i int) any { switch v := v.(*UnsubscribeAlertRequest); i { case 0: return &v.state @@ -15877,7 +16619,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[160].Exporter = func(v any, i int) any { switch v := v.(*UnsubscribeAlertResponse); i { case 0: return &v.state @@ -15889,7 +16631,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[161].Exporter = func(v any, i int) any { switch v := v.(*DeleteAlertRequest); i { case 0: return &v.state @@ -15901,7 +16643,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[162].Exporter = func(v any, i int) any { switch v := v.(*DeleteAlertResponse); i { case 0: return &v.state @@ -15913,7 +16655,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[163].Exporter = func(v any, i int) any { switch v := v.(*GenerateAlertYAMLRequest); i { case 0: return &v.state @@ -15925,7 +16667,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[164].Exporter = func(v any, i int) any { switch v := v.(*GenerateAlertYAMLResponse); i { case 0: return &v.state @@ -15937,7 +16679,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[165].Exporter = func(v any, i int) any { switch v := v.(*GetAlertYAMLRequest); i { case 0: return &v.state @@ -15949,7 +16691,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[166].Exporter = func(v any, i int) any { switch v := v.(*GetAlertYAMLResponse); i { case 0: return &v.state @@ -15961,7 +16703,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[167].Exporter = func(v any, i int) any { switch v := v.(*TelemetryRequest); i { case 0: return &v.state @@ -15973,7 +16715,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[168].Exporter = func(v any, i int) any { switch v := v.(*TelemetryResponse); i { case 0: return &v.state @@ -15985,7 +16727,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[169].Exporter = func(v any, i int) any { switch v := v.(*User); i { case 0: return &v.state @@ -15997,7 +16739,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[170].Exporter = func(v any, i int) any { switch v := v.(*Service); i { case 0: return &v.state @@ -16009,7 +16751,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[171].Exporter = func(v any, i int) any { switch v := v.(*Organization); i { case 0: return &v.state @@ -16021,7 +16763,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[172].Exporter = func(v any, i int) any { switch v := v.(*UserQuotas); i { case 0: return &v.state @@ -16033,7 +16775,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[173].Exporter = func(v any, i int) any { switch v := v.(*OrganizationQuotas); i { case 0: return &v.state @@ -16045,7 +16787,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[174].Exporter = func(v any, i int) any { switch v := v.(*Project); i { case 0: return &v.state @@ -16057,7 +16799,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[175].Exporter = func(v any, i int) any { switch v := v.(*Deployment); i { case 0: return &v.state @@ -16069,7 +16811,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[176].Exporter = func(v any, i int) any { switch v := v.(*OrganizationPermissions); i { case 0: return &v.state @@ -16081,7 +16823,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[177].Exporter = func(v any, i int) any { switch v := v.(*ProjectPermissions); i { case 0: return &v.state @@ -16093,7 +16835,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[178].Exporter = func(v any, i int) any { switch v := v.(*Member); i { case 0: return &v.state @@ -16105,7 +16847,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[179].Exporter = func(v any, i int) any { switch v := v.(*UserInvite); i { case 0: return &v.state @@ -16117,7 +16859,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[180].Exporter = func(v any, i int) any { switch v := v.(*WhitelistedDomain); i { case 0: return &v.state @@ -16129,7 +16871,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[181].Exporter = func(v any, i int) any { switch v := v.(*Bookmark); i { case 0: return &v.state @@ -16141,7 +16883,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[182].Exporter = func(v any, i int) any { switch v := v.(*ServiceToken); i { case 0: return &v.state @@ -16153,7 +16895,19 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[183].Exporter = func(v any, i int) any { + switch v := v.(*MagicAuthToken); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_admin_v1_api_proto_msgTypes[184].Exporter = func(v any, i int) any { switch v := v.(*VirtualFile); i { case 0: return &v.state @@ -16165,7 +16919,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[185].Exporter = func(v any, i int) any { switch v := v.(*ReportOptions); i { case 0: return &v.state @@ -16177,7 +16931,7 @@ func file_rill_admin_v1_api_proto_init() { return nil } } - file_rill_admin_v1_api_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_api_proto_msgTypes[186].Exporter = func(v any, i int) any { switch v := v.(*AlertOptions); i { case 0: return &v.state @@ -16190,37 +16944,37 @@ func file_rill_admin_v1_api_proto_init() { } } } - file_rill_admin_v1_api_proto_msgTypes[10].OneofWrappers = []interface{}{} - file_rill_admin_v1_api_proto_msgTypes[22].OneofWrappers = []interface{}{ + file_rill_admin_v1_api_proto_msgTypes[10].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[22].OneofWrappers = []any{ (*GetDeploymentCredentialsRequest_UserId)(nil), (*GetDeploymentCredentialsRequest_UserEmail)(nil), (*GetDeploymentCredentialsRequest_Attributes)(nil), } - file_rill_admin_v1_api_proto_msgTypes[24].OneofWrappers = []interface{}{ + file_rill_admin_v1_api_proto_msgTypes[24].OneofWrappers = []any{ (*GetIFrameRequest_UserId)(nil), (*GetIFrameRequest_UserEmail)(nil), (*GetIFrameRequest_Attributes)(nil), } - file_rill_admin_v1_api_proto_msgTypes[30].OneofWrappers = []interface{}{} - file_rill_admin_v1_api_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_rill_admin_v1_api_proto_msgTypes[64].OneofWrappers = []interface{}{ + file_rill_admin_v1_api_proto_msgTypes[30].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[38].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[64].OneofWrappers = []any{ (*SudoGetResourceRequest_UserId)(nil), (*SudoGetResourceRequest_OrgId)(nil), (*SudoGetResourceRequest_ProjectId)(nil), (*SudoGetResourceRequest_DeploymentId)(nil), (*SudoGetResourceRequest_InstanceId)(nil), } - file_rill_admin_v1_api_proto_msgTypes[65].OneofWrappers = []interface{}{ + file_rill_admin_v1_api_proto_msgTypes[65].OneofWrappers = []any{ (*SudoGetResourceResponse_User)(nil), (*SudoGetResourceResponse_Org)(nil), (*SudoGetResourceResponse_Project)(nil), (*SudoGetResourceResponse_Deployment)(nil), (*SudoGetResourceResponse_Instance)(nil), } - file_rill_admin_v1_api_proto_msgTypes[66].OneofWrappers = []interface{}{} - file_rill_admin_v1_api_proto_msgTypes[68].OneofWrappers = []interface{}{} - file_rill_admin_v1_api_proto_msgTypes[86].OneofWrappers = []interface{}{} - file_rill_admin_v1_api_proto_msgTypes[135].OneofWrappers = []interface{}{ + file_rill_admin_v1_api_proto_msgTypes[66].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[68].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[86].OneofWrappers = []any{} + file_rill_admin_v1_api_proto_msgTypes[141].OneofWrappers = []any{ (*GetAlertMetaRequest_QueryForUserId)(nil), (*GetAlertMetaRequest_QueryForUserEmail)(nil), } @@ -16230,7 +16984,7 @@ func file_rill_admin_v1_api_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rill_admin_v1_api_proto_rawDesc, NumEnums: 2, - NumMessages: 191, + NumMessages: 198, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gen/rill/admin/v1/api.pb.gw.go b/proto/gen/rill/admin/v1/api.pb.gw.go index c69a43da0c4..0eeb7de7050 100644 --- a/proto/gen/rill/admin/v1/api.pb.gw.go +++ b/proto/gen/rill/admin/v1/api.pb.gw.go @@ -3429,6 +3429,228 @@ func local_request_AdminService_RevokeServiceAuthToken_0(ctx context.Context, ma } +func request_AdminService_IssueMagicAuthToken_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq IssueMagicAuthTokenRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["organization"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "organization") + } + + protoReq.Organization, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + msg, err := client.IssueMagicAuthToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_IssueMagicAuthToken_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq IssueMagicAuthTokenRequest + var metadata runtime.ServerMetadata + + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["organization"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "organization") + } + + protoReq.Organization, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + msg, err := server.IssueMagicAuthToken(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_AdminService_ListMagicAuthTokens_0 = &utilities.DoubleArray{Encoding: map[string]int{"organization": 0, "project": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} +) + +func request_AdminService_ListMagicAuthTokens_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListMagicAuthTokensRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["organization"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "organization") + } + + protoReq.Organization, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMagicAuthTokens_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListMagicAuthTokens(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_ListMagicAuthTokens_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListMagicAuthTokensRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["organization"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "organization") + } + + protoReq.Organization, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "organization", err) + } + + val, ok = pathParams["project"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project") + } + + protoReq.Project, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AdminService_ListMagicAuthTokens_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListMagicAuthTokens(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AdminService_RevokeMagicAuthToken_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RevokeMagicAuthTokenRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["token_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "token_id") + } + + protoReq.TokenId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "token_id", err) + } + + msg, err := client.RevokeMagicAuthToken(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AdminService_RevokeMagicAuthToken_0(ctx context.Context, marshaler runtime.Marshaler, server AdminServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RevokeMagicAuthTokenRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["token_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "token_id") + } + + protoReq.TokenId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "token_id", err) + } + + msg, err := server.RevokeMagicAuthToken(ctx, &protoReq) + return msg, metadata, err + +} + func request_AdminService_UpdateUserPreferences_0(ctx context.Context, marshaler runtime.Marshaler, client AdminServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq UpdateUserPreferencesRequest var metadata runtime.ServerMetadata @@ -6459,6 +6681,81 @@ func RegisterAdminServiceHandlerServer(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_AdminService_IssueMagicAuthToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/IssueMagicAuthToken", runtime.WithHTTPPathPattern("/v1/organizations/{organization}/projects/{project}/tokens/magic")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_IssueMagicAuthToken_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_IssueMagicAuthToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_ListMagicAuthTokens_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/ListMagicAuthTokens", runtime.WithHTTPPathPattern("/v1/organizations/{organization}/projects/{project}/tokens/magic")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_ListMagicAuthTokens_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_ListMagicAuthTokens_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_AdminService_RevokeMagicAuthToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.admin.v1.AdminService/RevokeMagicAuthToken", runtime.WithHTTPPathPattern("/v1/magic-tokens/{token_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AdminService_RevokeMagicAuthToken_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_RevokeMagicAuthToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("PUT", pattern_AdminService_UpdateUserPreferences_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -8326,6 +8623,72 @@ func RegisterAdminServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_AdminService_IssueMagicAuthToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/IssueMagicAuthToken", runtime.WithHTTPPathPattern("/v1/organizations/{organization}/projects/{project}/tokens/magic")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_IssueMagicAuthToken_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_IssueMagicAuthToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_AdminService_ListMagicAuthTokens_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/ListMagicAuthTokens", runtime.WithHTTPPathPattern("/v1/organizations/{organization}/projects/{project}/tokens/magic")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_ListMagicAuthTokens_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_ListMagicAuthTokens_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_AdminService_RevokeMagicAuthToken_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.admin.v1.AdminService/RevokeMagicAuthToken", runtime.WithHTTPPathPattern("/v1/magic-tokens/{token_id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AdminService_RevokeMagicAuthToken_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_AdminService_RevokeMagicAuthToken_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("PUT", pattern_AdminService_UpdateUserPreferences_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -8930,6 +9293,12 @@ var ( pattern_AdminService_RevokeServiceAuthToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "services", "tokens", "token_id"}, "")) + pattern_AdminService_IssueMagicAuthToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"v1", "organizations", "organization", "projects", "project", "tokens", "magic"}, "")) + + pattern_AdminService_ListMagicAuthTokens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6}, []string{"v1", "organizations", "organization", "projects", "project", "tokens", "magic"}, "")) + + pattern_AdminService_RevokeMagicAuthToken_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "magic-tokens", "token_id"}, "")) + pattern_AdminService_UpdateUserPreferences_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "users", "preferences"}, "")) pattern_AdminService_ListBookmarks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "users", "bookmarks"}, "")) @@ -9092,6 +9461,12 @@ var ( forward_AdminService_RevokeServiceAuthToken_0 = runtime.ForwardResponseMessage + forward_AdminService_IssueMagicAuthToken_0 = runtime.ForwardResponseMessage + + forward_AdminService_ListMagicAuthTokens_0 = runtime.ForwardResponseMessage + + forward_AdminService_RevokeMagicAuthToken_0 = runtime.ForwardResponseMessage + forward_AdminService_UpdateUserPreferences_0 = runtime.ForwardResponseMessage forward_AdminService_ListBookmarks_0 = runtime.ForwardResponseMessage diff --git a/proto/gen/rill/admin/v1/api.pb.validate.go b/proto/gen/rill/admin/v1/api.pb.validate.go index bd1a38de1a0..358bdffe6d6 100644 --- a/proto/gen/rill/admin/v1/api.pb.validate.go +++ b/proto/gen/rill/admin/v1/api.pb.validate.go @@ -14434,6 +14434,758 @@ var _ interface { ErrorName() string } = ListServiceAuthTokensResponseValidationError{} +// Validate checks the field values on IssueMagicAuthTokenRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *IssueMagicAuthTokenRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on IssueMagicAuthTokenRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// IssueMagicAuthTokenRequestMultiError, or nil if none found. +func (m *IssueMagicAuthTokenRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *IssueMagicAuthTokenRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetOrganization()) < 1 { + err := IssueMagicAuthTokenRequestValidationError{ + field: "Organization", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetProject()) < 1 { + err := IssueMagicAuthTokenRequestValidationError{ + field: "Project", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for TtlMinutes + + // no validation rules for MetricsView + + if all { + switch v := interface{}(m.GetMetricsViewFilter()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, IssueMagicAuthTokenRequestValidationError{ + field: "MetricsViewFilter", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, IssueMagicAuthTokenRequestValidationError{ + field: "MetricsViewFilter", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMetricsViewFilter()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return IssueMagicAuthTokenRequestValidationError{ + field: "MetricsViewFilter", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return IssueMagicAuthTokenRequestMultiError(errors) + } + + return nil +} + +// IssueMagicAuthTokenRequestMultiError is an error wrapping multiple +// validation errors returned by IssueMagicAuthTokenRequest.ValidateAll() if +// the designated constraints aren't met. +type IssueMagicAuthTokenRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m IssueMagicAuthTokenRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m IssueMagicAuthTokenRequestMultiError) AllErrors() []error { return m } + +// IssueMagicAuthTokenRequestValidationError is the validation error returned +// by IssueMagicAuthTokenRequest.Validate if the designated constraints aren't met. +type IssueMagicAuthTokenRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e IssueMagicAuthTokenRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e IssueMagicAuthTokenRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e IssueMagicAuthTokenRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e IssueMagicAuthTokenRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e IssueMagicAuthTokenRequestValidationError) ErrorName() string { + return "IssueMagicAuthTokenRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e IssueMagicAuthTokenRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sIssueMagicAuthTokenRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = IssueMagicAuthTokenRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = IssueMagicAuthTokenRequestValidationError{} + +// Validate checks the field values on IssueMagicAuthTokenResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *IssueMagicAuthTokenResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on IssueMagicAuthTokenResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// IssueMagicAuthTokenResponseMultiError, or nil if none found. +func (m *IssueMagicAuthTokenResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *IssueMagicAuthTokenResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Token + + // no validation rules for Url + + if len(errors) > 0 { + return IssueMagicAuthTokenResponseMultiError(errors) + } + + return nil +} + +// IssueMagicAuthTokenResponseMultiError is an error wrapping multiple +// validation errors returned by IssueMagicAuthTokenResponse.ValidateAll() if +// the designated constraints aren't met. +type IssueMagicAuthTokenResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m IssueMagicAuthTokenResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m IssueMagicAuthTokenResponseMultiError) AllErrors() []error { return m } + +// IssueMagicAuthTokenResponseValidationError is the validation error returned +// by IssueMagicAuthTokenResponse.Validate if the designated constraints +// aren't met. +type IssueMagicAuthTokenResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e IssueMagicAuthTokenResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e IssueMagicAuthTokenResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e IssueMagicAuthTokenResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e IssueMagicAuthTokenResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e IssueMagicAuthTokenResponseValidationError) ErrorName() string { + return "IssueMagicAuthTokenResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e IssueMagicAuthTokenResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sIssueMagicAuthTokenResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = IssueMagicAuthTokenResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = IssueMagicAuthTokenResponseValidationError{} + +// Validate checks the field values on ListMagicAuthTokensRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListMagicAuthTokensRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListMagicAuthTokensRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListMagicAuthTokensRequestMultiError, or nil if none found. +func (m *ListMagicAuthTokensRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListMagicAuthTokensRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetOrganization()) < 1 { + err := ListMagicAuthTokensRequestValidationError{ + field: "Organization", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetProject()) < 1 { + err := ListMagicAuthTokensRequestValidationError{ + field: "Project", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if m.GetPageSize() != 0 { + + if m.GetPageSize() > 1000 { + err := ListMagicAuthTokensRequestValidationError{ + field: "PageSize", + reason: "value must be less than or equal to 1000", + } + if !all { + return err + } + errors = append(errors, err) + } + + } + + // no validation rules for PageToken + + if len(errors) > 0 { + return ListMagicAuthTokensRequestMultiError(errors) + } + + return nil +} + +// ListMagicAuthTokensRequestMultiError is an error wrapping multiple +// validation errors returned by ListMagicAuthTokensRequest.ValidateAll() if +// the designated constraints aren't met. +type ListMagicAuthTokensRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListMagicAuthTokensRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListMagicAuthTokensRequestMultiError) AllErrors() []error { return m } + +// ListMagicAuthTokensRequestValidationError is the validation error returned +// by ListMagicAuthTokensRequest.Validate if the designated constraints aren't met. +type ListMagicAuthTokensRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListMagicAuthTokensRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListMagicAuthTokensRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListMagicAuthTokensRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListMagicAuthTokensRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListMagicAuthTokensRequestValidationError) ErrorName() string { + return "ListMagicAuthTokensRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e ListMagicAuthTokensRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListMagicAuthTokensRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListMagicAuthTokensRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListMagicAuthTokensRequestValidationError{} + +// Validate checks the field values on ListMagicAuthTokensResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *ListMagicAuthTokensResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListMagicAuthTokensResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListMagicAuthTokensResponseMultiError, or nil if none found. +func (m *ListMagicAuthTokensResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListMagicAuthTokensResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetTokens() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListMagicAuthTokensResponseValidationError{ + field: fmt.Sprintf("Tokens[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListMagicAuthTokensResponseValidationError{ + field: fmt.Sprintf("Tokens[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListMagicAuthTokensResponseValidationError{ + field: fmt.Sprintf("Tokens[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for NextPageToken + + if len(errors) > 0 { + return ListMagicAuthTokensResponseMultiError(errors) + } + + return nil +} + +// ListMagicAuthTokensResponseMultiError is an error wrapping multiple +// validation errors returned by ListMagicAuthTokensResponse.ValidateAll() if +// the designated constraints aren't met. +type ListMagicAuthTokensResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListMagicAuthTokensResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListMagicAuthTokensResponseMultiError) AllErrors() []error { return m } + +// ListMagicAuthTokensResponseValidationError is the validation error returned +// by ListMagicAuthTokensResponse.Validate if the designated constraints +// aren't met. +type ListMagicAuthTokensResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListMagicAuthTokensResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListMagicAuthTokensResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListMagicAuthTokensResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListMagicAuthTokensResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListMagicAuthTokensResponseValidationError) ErrorName() string { + return "ListMagicAuthTokensResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e ListMagicAuthTokensResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListMagicAuthTokensResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListMagicAuthTokensResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListMagicAuthTokensResponseValidationError{} + +// Validate checks the field values on RevokeMagicAuthTokenRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RevokeMagicAuthTokenRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RevokeMagicAuthTokenRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RevokeMagicAuthTokenRequestMultiError, or nil if none found. +func (m *RevokeMagicAuthTokenRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RevokeMagicAuthTokenRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for TokenId + + if len(errors) > 0 { + return RevokeMagicAuthTokenRequestMultiError(errors) + } + + return nil +} + +// RevokeMagicAuthTokenRequestMultiError is an error wrapping multiple +// validation errors returned by RevokeMagicAuthTokenRequest.ValidateAll() if +// the designated constraints aren't met. +type RevokeMagicAuthTokenRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RevokeMagicAuthTokenRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RevokeMagicAuthTokenRequestMultiError) AllErrors() []error { return m } + +// RevokeMagicAuthTokenRequestValidationError is the validation error returned +// by RevokeMagicAuthTokenRequest.Validate if the designated constraints +// aren't met. +type RevokeMagicAuthTokenRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RevokeMagicAuthTokenRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RevokeMagicAuthTokenRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RevokeMagicAuthTokenRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RevokeMagicAuthTokenRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RevokeMagicAuthTokenRequestValidationError) ErrorName() string { + return "RevokeMagicAuthTokenRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e RevokeMagicAuthTokenRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRevokeMagicAuthTokenRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RevokeMagicAuthTokenRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RevokeMagicAuthTokenRequestValidationError{} + +// Validate checks the field values on RevokeMagicAuthTokenResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RevokeMagicAuthTokenResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RevokeMagicAuthTokenResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RevokeMagicAuthTokenResponseMultiError, or nil if none found. +func (m *RevokeMagicAuthTokenResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *RevokeMagicAuthTokenResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return RevokeMagicAuthTokenResponseMultiError(errors) + } + + return nil +} + +// RevokeMagicAuthTokenResponseMultiError is an error wrapping multiple +// validation errors returned by RevokeMagicAuthTokenResponse.ValidateAll() if +// the designated constraints aren't met. +type RevokeMagicAuthTokenResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RevokeMagicAuthTokenResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RevokeMagicAuthTokenResponseMultiError) AllErrors() []error { return m } + +// RevokeMagicAuthTokenResponseValidationError is the validation error returned +// by RevokeMagicAuthTokenResponse.Validate if the designated constraints +// aren't met. +type RevokeMagicAuthTokenResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RevokeMagicAuthTokenResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RevokeMagicAuthTokenResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RevokeMagicAuthTokenResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RevokeMagicAuthTokenResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RevokeMagicAuthTokenResponseValidationError) ErrorName() string { + return "RevokeMagicAuthTokenResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e RevokeMagicAuthTokenResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRevokeMagicAuthTokenResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RevokeMagicAuthTokenResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RevokeMagicAuthTokenResponseValidationError{} + // Validate checks the field values on GetGithubRepoStatusRequest with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -21888,6 +22640,10 @@ func (m *ProjectPermissions) validate(all bool) error { // no validation rules for ManageProjectMembers + // no validation rules for CreateMagicAuthTokens + + // no validation rules for ManageMagicAuthTokens + // no validation rules for CreateReports // no validation rules for ManageReports @@ -21896,6 +22652,10 @@ func (m *ProjectPermissions) validate(all bool) error { // no validation rules for ManageAlerts + // no validation rules for CreateBookmarks + + // no validation rules for ManageBookmarks + if len(errors) > 0 { return ProjectPermissionsMultiError(errors) } @@ -22687,6 +23447,261 @@ var _ interface { ErrorName() string } = ServiceTokenValidationError{} +// Validate checks the field values on MagicAuthToken with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *MagicAuthToken) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MagicAuthToken with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in MagicAuthTokenMultiError, +// or nil if none found. +func (m *MagicAuthToken) ValidateAll() error { + return m.validate(true) +} + +func (m *MagicAuthToken) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Id + + // no validation rules for ProjectId + + if all { + switch v := interface{}(m.GetCreatedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "CreatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "CreatedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreatedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MagicAuthTokenValidationError{ + field: "CreatedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetExpiresOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "ExpiresOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "ExpiresOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExpiresOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MagicAuthTokenValidationError{ + field: "ExpiresOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetUsedOn()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "UsedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "UsedOn", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUsedOn()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MagicAuthTokenValidationError{ + field: "UsedOn", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for CreatedByUserId + + // no validation rules for CreatedByUserEmail + + if all { + switch v := interface{}(m.GetAttributes()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "Attributes", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "Attributes", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAttributes()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MagicAuthTokenValidationError{ + field: "Attributes", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for MetricsView + + if all { + switch v := interface{}(m.GetMetricsViewFilter()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "MetricsViewFilter", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MagicAuthTokenValidationError{ + field: "MetricsViewFilter", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMetricsViewFilter()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MagicAuthTokenValidationError{ + field: "MetricsViewFilter", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return MagicAuthTokenMultiError(errors) + } + + return nil +} + +// MagicAuthTokenMultiError is an error wrapping multiple validation errors +// returned by MagicAuthToken.ValidateAll() if the designated constraints +// aren't met. +type MagicAuthTokenMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MagicAuthTokenMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MagicAuthTokenMultiError) AllErrors() []error { return m } + +// MagicAuthTokenValidationError is the validation error returned by +// MagicAuthToken.Validate if the designated constraints aren't met. +type MagicAuthTokenValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e MagicAuthTokenValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e MagicAuthTokenValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e MagicAuthTokenValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e MagicAuthTokenValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e MagicAuthTokenValidationError) ErrorName() string { return "MagicAuthTokenValidationError" } + +// Error satisfies the builtin error interface +func (e MagicAuthTokenValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sMagicAuthToken.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = MagicAuthTokenValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = MagicAuthTokenValidationError{} + // Validate checks the field values on VirtualFile with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/proto/gen/rill/admin/v1/api_grpc.pb.go b/proto/gen/rill/admin/v1/api_grpc.pb.go index 4b72cd72884..b7364d5df40 100644 --- a/proto/gen/rill/admin/v1/api_grpc.pb.go +++ b/proto/gen/rill/admin/v1/api_grpc.pb.go @@ -77,6 +77,9 @@ const ( AdminService_ListServiceAuthTokens_FullMethodName = "/rill.admin.v1.AdminService/ListServiceAuthTokens" AdminService_IssueServiceAuthToken_FullMethodName = "/rill.admin.v1.AdminService/IssueServiceAuthToken" AdminService_RevokeServiceAuthToken_FullMethodName = "/rill.admin.v1.AdminService/RevokeServiceAuthToken" + AdminService_IssueMagicAuthToken_FullMethodName = "/rill.admin.v1.AdminService/IssueMagicAuthToken" + AdminService_ListMagicAuthTokens_FullMethodName = "/rill.admin.v1.AdminService/ListMagicAuthTokens" + AdminService_RevokeMagicAuthToken_FullMethodName = "/rill.admin.v1.AdminService/RevokeMagicAuthToken" AdminService_UpdateUserPreferences_FullMethodName = "/rill.admin.v1.AdminService/UpdateUserPreferences" AdminService_ListBookmarks_FullMethodName = "/rill.admin.v1.AdminService/ListBookmarks" AdminService_GetBookmark_FullMethodName = "/rill.admin.v1.AdminService/GetBookmark" @@ -223,6 +226,12 @@ type AdminServiceClient interface { IssueServiceAuthToken(ctx context.Context, in *IssueServiceAuthTokenRequest, opts ...grpc.CallOption) (*IssueServiceAuthTokenResponse, error) // RevokeServiceAuthToken revoke the service auth token RevokeServiceAuthToken(ctx context.Context, in *RevokeServiceAuthTokenRequest, opts ...grpc.CallOption) (*RevokeServiceAuthTokenResponse, error) + // IssueMagicAuthToken creates a "magic" auth token that provides limited access to a specific filtered dashboard in a specific project. + IssueMagicAuthToken(ctx context.Context, in *IssueMagicAuthTokenRequest, opts ...grpc.CallOption) (*IssueMagicAuthTokenResponse, error) + // ListMagicAuthTokens lists all the magic auth tokens for a specific project. + ListMagicAuthTokens(ctx context.Context, in *ListMagicAuthTokensRequest, opts ...grpc.CallOption) (*ListMagicAuthTokensResponse, error) + // RevokeMagicAuthToken revokes a magic auth token. + RevokeMagicAuthToken(ctx context.Context, in *RevokeMagicAuthTokenRequest, opts ...grpc.CallOption) (*RevokeMagicAuthTokenResponse, error) // UpdateUserPreferences updates the preferences for the user UpdateUserPreferences(ctx context.Context, in *UpdateUserPreferencesRequest, opts ...grpc.CallOption) (*UpdateUserPreferencesResponse, error) // ListBookmarks lists all the bookmarks for the user and global ones for dashboard @@ -857,6 +866,36 @@ func (c *adminServiceClient) RevokeServiceAuthToken(ctx context.Context, in *Rev return out, nil } +func (c *adminServiceClient) IssueMagicAuthToken(ctx context.Context, in *IssueMagicAuthTokenRequest, opts ...grpc.CallOption) (*IssueMagicAuthTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(IssueMagicAuthTokenResponse) + err := c.cc.Invoke(ctx, AdminService_IssueMagicAuthToken_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) ListMagicAuthTokens(ctx context.Context, in *ListMagicAuthTokensRequest, opts ...grpc.CallOption) (*ListMagicAuthTokensResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListMagicAuthTokensResponse) + err := c.cc.Invoke(ctx, AdminService_ListMagicAuthTokens_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminServiceClient) RevokeMagicAuthToken(ctx context.Context, in *RevokeMagicAuthTokenRequest, opts ...grpc.CallOption) (*RevokeMagicAuthTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(RevokeMagicAuthTokenResponse) + err := c.cc.Invoke(ctx, AdminService_RevokeMagicAuthToken_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *adminServiceClient) UpdateUserPreferences(ctx context.Context, in *UpdateUserPreferencesRequest, opts ...grpc.CallOption) (*UpdateUserPreferencesResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateUserPreferencesResponse) @@ -1199,6 +1238,12 @@ type AdminServiceServer interface { IssueServiceAuthToken(context.Context, *IssueServiceAuthTokenRequest) (*IssueServiceAuthTokenResponse, error) // RevokeServiceAuthToken revoke the service auth token RevokeServiceAuthToken(context.Context, *RevokeServiceAuthTokenRequest) (*RevokeServiceAuthTokenResponse, error) + // IssueMagicAuthToken creates a "magic" auth token that provides limited access to a specific filtered dashboard in a specific project. + IssueMagicAuthToken(context.Context, *IssueMagicAuthTokenRequest) (*IssueMagicAuthTokenResponse, error) + // ListMagicAuthTokens lists all the magic auth tokens for a specific project. + ListMagicAuthTokens(context.Context, *ListMagicAuthTokensRequest) (*ListMagicAuthTokensResponse, error) + // RevokeMagicAuthToken revokes a magic auth token. + RevokeMagicAuthToken(context.Context, *RevokeMagicAuthTokenRequest) (*RevokeMagicAuthTokenResponse, error) // UpdateUserPreferences updates the preferences for the user UpdateUserPreferences(context.Context, *UpdateUserPreferencesRequest) (*UpdateUserPreferencesResponse, error) // ListBookmarks lists all the bookmarks for the user and global ones for dashboard @@ -1424,6 +1469,15 @@ func (UnimplementedAdminServiceServer) IssueServiceAuthToken(context.Context, *I func (UnimplementedAdminServiceServer) RevokeServiceAuthToken(context.Context, *RevokeServiceAuthTokenRequest) (*RevokeServiceAuthTokenResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RevokeServiceAuthToken not implemented") } +func (UnimplementedAdminServiceServer) IssueMagicAuthToken(context.Context, *IssueMagicAuthTokenRequest) (*IssueMagicAuthTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method IssueMagicAuthToken not implemented") +} +func (UnimplementedAdminServiceServer) ListMagicAuthTokens(context.Context, *ListMagicAuthTokensRequest) (*ListMagicAuthTokensResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListMagicAuthTokens not implemented") +} +func (UnimplementedAdminServiceServer) RevokeMagicAuthToken(context.Context, *RevokeMagicAuthTokenRequest) (*RevokeMagicAuthTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RevokeMagicAuthToken not implemented") +} func (UnimplementedAdminServiceServer) UpdateUserPreferences(context.Context, *UpdateUserPreferencesRequest) (*UpdateUserPreferencesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateUserPreferences not implemented") } @@ -2547,6 +2601,60 @@ func _AdminService_RevokeServiceAuthToken_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _AdminService_IssueMagicAuthToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IssueMagicAuthTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).IssueMagicAuthToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_IssueMagicAuthToken_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).IssueMagicAuthToken(ctx, req.(*IssueMagicAuthTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_ListMagicAuthTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListMagicAuthTokensRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).ListMagicAuthTokens(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_ListMagicAuthTokens_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).ListMagicAuthTokens(ctx, req.(*ListMagicAuthTokensRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AdminService_RevokeMagicAuthToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RevokeMagicAuthTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServiceServer).RevokeMagicAuthToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: AdminService_RevokeMagicAuthToken_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServiceServer).RevokeMagicAuthToken(ctx, req.(*RevokeMagicAuthTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AdminService_UpdateUserPreferences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateUserPreferencesRequest) if err := dec(in); err != nil { @@ -3182,6 +3290,18 @@ var AdminService_ServiceDesc = grpc.ServiceDesc{ MethodName: "RevokeServiceAuthToken", Handler: _AdminService_RevokeServiceAuthToken_Handler, }, + { + MethodName: "IssueMagicAuthToken", + Handler: _AdminService_IssueMagicAuthToken_Handler, + }, + { + MethodName: "ListMagicAuthTokens", + Handler: _AdminService_ListMagicAuthTokens_Handler, + }, + { + MethodName: "RevokeMagicAuthToken", + Handler: _AdminService_RevokeMagicAuthToken_Handler, + }, { MethodName: "UpdateUserPreferences", Handler: _AdminService_UpdateUserPreferences_Handler, diff --git a/proto/gen/rill/admin/v1/internal.pb.go b/proto/gen/rill/admin/v1/internal.pb.go index 93ab99fd854..01ac4bed5c7 100644 --- a/proto/gen/rill/admin/v1/internal.pb.go +++ b/proto/gen/rill/admin/v1/internal.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/admin/v1/internal.proto @@ -166,7 +166,7 @@ func file_rill_admin_v1_internal_proto_rawDescGZIP() []byte { } var file_rill_admin_v1_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_rill_admin_v1_internal_proto_goTypes = []interface{}{ +var file_rill_admin_v1_internal_proto_goTypes = []any{ (*StringPageToken)(nil), // 0: rill.admin.v1.StringPageToken (*StringTimestampPageToken)(nil), // 1: rill.admin.v1.StringTimestampPageToken (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp @@ -186,7 +186,7 @@ func file_rill_admin_v1_internal_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_admin_v1_internal_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_internal_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*StringPageToken); i { case 0: return &v.state @@ -198,7 +198,7 @@ func file_rill_admin_v1_internal_proto_init() { return nil } } - file_rill_admin_v1_internal_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_internal_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*StringTimestampPageToken); i { case 0: return &v.state diff --git a/proto/gen/rill/admin/v1/telemetry.pb.go b/proto/gen/rill/admin/v1/telemetry.pb.go index a138977d898..89c79b32108 100644 --- a/proto/gen/rill/admin/v1/telemetry.pb.go +++ b/proto/gen/rill/admin/v1/telemetry.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/admin/v1/telemetry.proto @@ -159,7 +159,7 @@ func file_rill_admin_v1_telemetry_proto_rawDescGZIP() []byte { } var file_rill_admin_v1_telemetry_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_rill_admin_v1_telemetry_proto_goTypes = []interface{}{ +var file_rill_admin_v1_telemetry_proto_goTypes = []any{ (*RecordEventsRequest)(nil), // 0: rill.admin.v1.RecordEventsRequest (*RecordEventsResponse)(nil), // 1: rill.admin.v1.RecordEventsResponse (*structpb.Struct)(nil), // 2: google.protobuf.Struct @@ -181,7 +181,7 @@ func file_rill_admin_v1_telemetry_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_admin_v1_telemetry_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_telemetry_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*RecordEventsRequest); i { case 0: return &v.state @@ -193,7 +193,7 @@ func file_rill_admin_v1_telemetry_proto_init() { return nil } } - file_rill_admin_v1_telemetry_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_admin_v1_telemetry_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*RecordEventsResponse); i { case 0: return &v.state diff --git a/proto/gen/rill/local/v1/api.pb.go b/proto/gen/rill/local/v1/api.pb.go index 61c60b4e1d0..523bbd3783e 100644 --- a/proto/gen/rill/local/v1/api.pb.go +++ b/proto/gen/rill/local/v1/api.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/local/v1/api.proto @@ -999,7 +999,7 @@ func file_rill_local_v1_api_proto_rawDescGZIP() []byte { } var file_rill_local_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 13) -var file_rill_local_v1_api_proto_goTypes = []interface{}{ +var file_rill_local_v1_api_proto_goTypes = []any{ (*PingRequest)(nil), // 0: rill.local.v1.PingRequest (*PingResponse)(nil), // 1: rill.local.v1.PingResponse (*GetMetadataRequest)(nil), // 2: rill.local.v1.GetMetadataRequest @@ -1046,7 +1046,7 @@ func file_rill_local_v1_api_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_local_v1_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*PingRequest); i { case 0: return &v.state @@ -1058,7 +1058,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*PingResponse); i { case 0: return &v.state @@ -1070,7 +1070,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*GetMetadataRequest); i { case 0: return &v.state @@ -1082,7 +1082,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*GetMetadataResponse); i { case 0: return &v.state @@ -1094,7 +1094,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*GetVersionRequest); i { case 0: return &v.state @@ -1106,7 +1106,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*GetVersionResponse); i { case 0: return &v.state @@ -1118,7 +1118,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*DeployValidationRequest); i { case 0: return &v.state @@ -1130,7 +1130,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*DeployValidationResponse); i { case 0: return &v.state @@ -1142,7 +1142,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*PushToGithubRequest); i { case 0: return &v.state @@ -1154,7 +1154,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*PushToGithubResponse); i { case 0: return &v.state @@ -1166,7 +1166,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*DeployRequest); i { case 0: return &v.state @@ -1178,7 +1178,7 @@ func file_rill_local_v1_api_proto_init() { return nil } } - file_rill_local_v1_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_local_v1_api_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*DeployResponse); i { case 0: return &v.state @@ -1191,7 +1191,7 @@ func file_rill_local_v1_api_proto_init() { } } } - file_rill_local_v1_api_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_rill_local_v1_api_proto_msgTypes[7].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/proto/gen/rill/runtime/v1/api.pb.go b/proto/gen/rill/runtime/v1/api.pb.go index 2b0aa030372..026baf6a3e6 100644 --- a/proto/gen/rill/runtime/v1/api.pb.go +++ b/proto/gen/rill/runtime/v1/api.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/api.proto @@ -5431,7 +5431,7 @@ func file_rill_runtime_v1_api_proto_rawDescGZIP() []byte { var file_rill_runtime_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_rill_runtime_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 80) -var file_rill_runtime_v1_api_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_api_proto_goTypes = []any{ (FileEvent)(0), // 0: rill.runtime.v1.FileEvent (LogLevel)(0), // 1: rill.runtime.v1.LogLevel (ResourceEvent)(0), // 2: rill.runtime.v1.ResourceEvent @@ -5650,7 +5650,7 @@ func file_rill_runtime_v1_api_proto_init() { } file_rill_runtime_v1_resources_proto_init() if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*PingRequest); i { case 0: return &v.state @@ -5662,7 +5662,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*PingResponse); i { case 0: return &v.state @@ -5674,7 +5674,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Instance); i { case 0: return &v.state @@ -5686,7 +5686,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*Connector); i { case 0: return &v.state @@ -5698,7 +5698,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ListInstancesRequest); i { case 0: return &v.state @@ -5710,7 +5710,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ListInstancesResponse); i { case 0: return &v.state @@ -5722,7 +5722,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*GetInstanceRequest); i { case 0: return &v.state @@ -5734,7 +5734,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*GetInstanceResponse); i { case 0: return &v.state @@ -5746,7 +5746,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*CreateInstanceRequest); i { case 0: return &v.state @@ -5758,7 +5758,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*CreateInstanceResponse); i { case 0: return &v.state @@ -5770,7 +5770,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*DeleteInstanceRequest); i { case 0: return &v.state @@ -5782,7 +5782,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*DeleteInstanceResponse); i { case 0: return &v.state @@ -5794,7 +5794,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*EditInstanceRequest); i { case 0: return &v.state @@ -5806,7 +5806,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*EditInstanceResponse); i { case 0: return &v.state @@ -5818,7 +5818,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*ListFilesRequest); i { case 0: return &v.state @@ -5830,7 +5830,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*ListFilesResponse); i { case 0: return &v.state @@ -5842,7 +5842,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*DirEntry); i { case 0: return &v.state @@ -5854,7 +5854,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*WatchFilesRequest); i { case 0: return &v.state @@ -5866,7 +5866,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*WatchFilesResponse); i { case 0: return &v.state @@ -5878,7 +5878,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*GetFileRequest); i { case 0: return &v.state @@ -5890,7 +5890,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*GetFileResponse); i { case 0: return &v.state @@ -5902,7 +5902,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*PutFileRequest); i { case 0: return &v.state @@ -5914,7 +5914,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*PutFileResponse); i { case 0: return &v.state @@ -5926,7 +5926,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*CreateDirectoryRequest); i { case 0: return &v.state @@ -5938,7 +5938,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*CreateDirectoryResponse); i { case 0: return &v.state @@ -5950,7 +5950,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*DeleteFileRequest); i { case 0: return &v.state @@ -5962,7 +5962,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*DeleteFileResponse); i { case 0: return &v.state @@ -5974,7 +5974,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*RenameFileRequest); i { case 0: return &v.state @@ -5986,7 +5986,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*RenameFileResponse); i { case 0: return &v.state @@ -5998,7 +5998,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*Example); i { case 0: return &v.state @@ -6010,7 +6010,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*ListExamplesRequest); i { case 0: return &v.state @@ -6022,7 +6022,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*ListExamplesResponse); i { case 0: return &v.state @@ -6034,7 +6034,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*UnpackExampleRequest); i { case 0: return &v.state @@ -6046,7 +6046,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*UnpackExampleResponse); i { case 0: return &v.state @@ -6058,7 +6058,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*UnpackEmptyRequest); i { case 0: return &v.state @@ -6070,7 +6070,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*UnpackEmptyResponse); i { case 0: return &v.state @@ -6082,7 +6082,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*GenerateMetricsViewFileRequest); i { case 0: return &v.state @@ -6094,7 +6094,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*GenerateMetricsViewFileResponse); i { case 0: return &v.state @@ -6106,7 +6106,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*GenerateResolverRequest); i { case 0: return &v.state @@ -6118,7 +6118,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*GenerateResolverResponse); i { case 0: return &v.state @@ -6130,7 +6130,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*GenerateRendererRequest); i { case 0: return &v.state @@ -6142,7 +6142,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*GenerateRendererResponse); i { case 0: return &v.state @@ -6154,7 +6154,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*Log); i { case 0: return &v.state @@ -6166,7 +6166,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*GetLogsRequest); i { case 0: return &v.state @@ -6178,7 +6178,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*GetLogsResponse); i { case 0: return &v.state @@ -6190,7 +6190,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*WatchLogsRequest); i { case 0: return &v.state @@ -6202,7 +6202,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*WatchLogsResponse); i { case 0: return &v.state @@ -6214,7 +6214,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*ListResourcesRequest); i { case 0: return &v.state @@ -6226,7 +6226,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*ListResourcesResponse); i { case 0: return &v.state @@ -6238,7 +6238,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*WatchResourcesRequest); i { case 0: return &v.state @@ -6250,7 +6250,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*WatchResourcesResponse); i { case 0: return &v.state @@ -6262,7 +6262,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*GetResourceRequest); i { case 0: return &v.state @@ -6274,7 +6274,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*GetResourceResponse); i { case 0: return &v.state @@ -6286,7 +6286,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*CreateTriggerRequest); i { case 0: return &v.state @@ -6298,7 +6298,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*CreateTriggerResponse); i { case 0: return &v.state @@ -6310,7 +6310,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*ConnectorDriver); i { case 0: return &v.state @@ -6322,7 +6322,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*AnalyzedConnector); i { case 0: return &v.state @@ -6334,7 +6334,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*ListConnectorDriversRequest); i { case 0: return &v.state @@ -6346,7 +6346,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*ListConnectorDriversResponse); i { case 0: return &v.state @@ -6358,7 +6358,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*AnalyzeConnectorsRequest); i { case 0: return &v.state @@ -6370,7 +6370,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*AnalyzeConnectorsResponse); i { case 0: return &v.state @@ -6382,7 +6382,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*ListNotifierConnectorsRequest); i { case 0: return &v.state @@ -6394,7 +6394,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*ListNotifierConnectorsResponse); i { case 0: return &v.state @@ -6406,7 +6406,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*IssueDevJWTRequest); i { case 0: return &v.state @@ -6418,7 +6418,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*IssueDevJWTResponse); i { case 0: return &v.state @@ -6430,7 +6430,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*ConnectorDriver_Property); i { case 0: return &v.state @@ -6443,8 +6443,8 @@ func file_rill_runtime_v1_api_proto_init() { } } } - file_rill_runtime_v1_api_proto_msgTypes[12].OneofWrappers = []interface{}{} - file_rill_runtime_v1_api_proto_msgTypes[53].OneofWrappers = []interface{}{ + file_rill_runtime_v1_api_proto_msgTypes[12].OneofWrappers = []any{} + file_rill_runtime_v1_api_proto_msgTypes[53].OneofWrappers = []any{ (*CreateTriggerRequest_PullTriggerSpec)(nil), (*CreateTriggerRequest_RefreshTriggerSpec)(nil), } diff --git a/proto/gen/rill/runtime/v1/colors.pb.go b/proto/gen/rill/runtime/v1/colors.pb.go index bdef4c462e9..1a943107999 100644 --- a/proto/gen/rill/runtime/v1/colors.pb.go +++ b/proto/gen/rill/runtime/v1/colors.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/colors.proto @@ -131,7 +131,7 @@ func file_rill_runtime_v1_colors_proto_rawDescGZIP() []byte { } var file_rill_runtime_v1_colors_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_rill_runtime_v1_colors_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_colors_proto_goTypes = []any{ (*Color)(nil), // 0: rill.runtime.v1.Color } var file_rill_runtime_v1_colors_proto_depIdxs = []int32{ @@ -148,7 +148,7 @@ func file_rill_runtime_v1_colors_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_colors_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_colors_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Color); i { case 0: return &v.state diff --git a/proto/gen/rill/runtime/v1/connectors.pb.go b/proto/gen/rill/runtime/v1/connectors.pb.go index 3ca79187733..5a131af6879 100644 --- a/proto/gen/rill/runtime/v1/connectors.pb.go +++ b/proto/gen/rill/runtime/v1/connectors.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/connectors.proto @@ -2035,7 +2035,7 @@ func file_rill_runtime_v1_connectors_proto_rawDescGZIP() []byte { } var file_rill_runtime_v1_connectors_proto_msgTypes = make([]protoimpl.MessageInfo, 26) -var file_rill_runtime_v1_connectors_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_connectors_proto_goTypes = []any{ (*S3Object)(nil), // 0: rill.runtime.v1.S3Object (*S3ListBucketsRequest)(nil), // 1: rill.runtime.v1.S3ListBucketsRequest (*S3ListBucketsResponse)(nil), // 2: rill.runtime.v1.S3ListBucketsResponse @@ -2109,7 +2109,7 @@ func file_rill_runtime_v1_connectors_proto_init() { } file_rill_runtime_v1_schema_proto_init() if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_connectors_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*S3Object); i { case 0: return &v.state @@ -2121,7 +2121,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*S3ListBucketsRequest); i { case 0: return &v.state @@ -2133,7 +2133,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*S3ListBucketsResponse); i { case 0: return &v.state @@ -2145,7 +2145,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*S3ListObjectsRequest); i { case 0: return &v.state @@ -2157,7 +2157,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*S3ListObjectsResponse); i { case 0: return &v.state @@ -2169,7 +2169,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*S3GetBucketMetadataRequest); i { case 0: return &v.state @@ -2181,7 +2181,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*S3GetBucketMetadataResponse); i { case 0: return &v.state @@ -2193,7 +2193,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*S3GetCredentialsInfoRequest); i { case 0: return &v.state @@ -2205,7 +2205,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*S3GetCredentialsInfoResponse); i { case 0: return &v.state @@ -2217,7 +2217,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*GCSObject); i { case 0: return &v.state @@ -2229,7 +2229,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*GCSListBucketsRequest); i { case 0: return &v.state @@ -2241,7 +2241,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*GCSListBucketsResponse); i { case 0: return &v.state @@ -2253,7 +2253,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*GCSListObjectsRequest); i { case 0: return &v.state @@ -2265,7 +2265,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*GCSListObjectsResponse); i { case 0: return &v.state @@ -2277,7 +2277,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*GCSGetCredentialsInfoRequest); i { case 0: return &v.state @@ -2289,7 +2289,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*GCSGetCredentialsInfoResponse); i { case 0: return &v.state @@ -2301,7 +2301,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*OLAPListTablesRequest); i { case 0: return &v.state @@ -2313,7 +2313,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*OLAPListTablesResponse); i { case 0: return &v.state @@ -2325,7 +2325,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*TableInfo); i { case 0: return &v.state @@ -2337,7 +2337,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*OLAPGetTableRequest); i { case 0: return &v.state @@ -2349,7 +2349,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*OLAPGetTableResponse); i { case 0: return &v.state @@ -2361,7 +2361,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*BigQueryListDatasetsRequest); i { case 0: return &v.state @@ -2373,7 +2373,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*BigQueryListDatasetsResponse); i { case 0: return &v.state @@ -2385,7 +2385,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*BigQueryListTablesRequest); i { case 0: return &v.state @@ -2397,7 +2397,7 @@ func file_rill_runtime_v1_connectors_proto_init() { return nil } } - file_rill_runtime_v1_connectors_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_connectors_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*BigQueryListTablesResponse); i { case 0: return &v.state diff --git a/proto/gen/rill/runtime/v1/export_format.pb.go b/proto/gen/rill/runtime/v1/export_format.pb.go index 3860da12a7f..e9196716c56 100644 --- a/proto/gen/rill/runtime/v1/export_format.pb.go +++ b/proto/gen/rill/runtime/v1/export_format.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/export_format.proto @@ -114,7 +114,7 @@ func file_rill_runtime_v1_export_format_proto_rawDescGZIP() []byte { } var file_rill_runtime_v1_export_format_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_rill_runtime_v1_export_format_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_export_format_proto_goTypes = []any{ (ExportFormat)(0), // 0: rill.runtime.v1.ExportFormat } var file_rill_runtime_v1_export_format_proto_depIdxs = []int32{ diff --git a/proto/gen/rill/runtime/v1/expression.pb.go b/proto/gen/rill/runtime/v1/expression.pb.go index f686ff99a64..85226ebbe48 100644 --- a/proto/gen/rill/runtime/v1/expression.pb.go +++ b/proto/gen/rill/runtime/v1/expression.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/expression.proto @@ -423,7 +423,7 @@ func file_rill_runtime_v1_expression_proto_rawDescGZIP() []byte { var file_rill_runtime_v1_expression_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_rill_runtime_v1_expression_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_rill_runtime_v1_expression_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_expression_proto_goTypes = []any{ (Operation)(0), // 0: rill.runtime.v1.Operation (*Expression)(nil), // 1: rill.runtime.v1.Expression (*Condition)(nil), // 2: rill.runtime.v1.Condition @@ -451,7 +451,7 @@ func file_rill_runtime_v1_expression_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_expression_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_expression_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Expression); i { case 0: return &v.state @@ -463,7 +463,7 @@ func file_rill_runtime_v1_expression_proto_init() { return nil } } - file_rill_runtime_v1_expression_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_expression_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Condition); i { case 0: return &v.state @@ -475,7 +475,7 @@ func file_rill_runtime_v1_expression_proto_init() { return nil } } - file_rill_runtime_v1_expression_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_expression_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Subquery); i { case 0: return &v.state @@ -488,7 +488,7 @@ func file_rill_runtime_v1_expression_proto_init() { } } } - file_rill_runtime_v1_expression_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_rill_runtime_v1_expression_proto_msgTypes[0].OneofWrappers = []any{ (*Expression_Ident)(nil), (*Expression_Val)(nil), (*Expression_Cond)(nil), diff --git a/proto/gen/rill/runtime/v1/queries.pb.go b/proto/gen/rill/runtime/v1/queries.pb.go index 2f42d19d075..ceb5ec3d62e 100644 --- a/proto/gen/rill/runtime/v1/queries.pb.go +++ b/proto/gen/rill/runtime/v1/queries.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/queries.proto @@ -8936,7 +8936,7 @@ func file_rill_runtime_v1_queries_proto_rawDescGZIP() []byte { var file_rill_runtime_v1_queries_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_rill_runtime_v1_queries_proto_msgTypes = make([]protoimpl.MessageInfo, 88) -var file_rill_runtime_v1_queries_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_queries_proto_goTypes = []any{ (BuiltinMeasure)(0), // 0: rill.runtime.v1.BuiltinMeasure (MetricsViewComparisonSortType)(0), // 1: rill.runtime.v1.MetricsViewComparisonSortType (MetricsViewComparisonMeasureType)(0), // 2: rill.runtime.v1.MetricsViewComparisonMeasureType @@ -9272,7 +9272,7 @@ func file_rill_runtime_v1_queries_proto_init() { file_rill_runtime_v1_schema_proto_init() file_rill_runtime_v1_time_grain_proto_init() if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_queries_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*QueryRequest); i { case 0: return &v.state @@ -9284,7 +9284,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*QueryResponse); i { case 0: return &v.state @@ -9296,7 +9296,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*QueryBatchRequest); i { case 0: return &v.state @@ -9308,7 +9308,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*QueryBatchResponse); i { case 0: return &v.state @@ -9320,7 +9320,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ExportRequest); i { case 0: return &v.state @@ -9332,7 +9332,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ExportResponse); i { case 0: return &v.state @@ -9344,7 +9344,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*Query); i { case 0: return &v.state @@ -9356,7 +9356,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*QueryResult); i { case 0: return &v.state @@ -9368,7 +9368,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationRequest); i { case 0: return &v.state @@ -9380,7 +9380,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationResponse); i { case 0: return &v.state @@ -9392,7 +9392,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationDimension); i { case 0: return &v.state @@ -9404,7 +9404,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationMeasure); i { case 0: return &v.state @@ -9416,7 +9416,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationMeasureComputeCount); i { case 0: return &v.state @@ -9428,7 +9428,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationMeasureComputeCountDistinct); i { case 0: return &v.state @@ -9440,7 +9440,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationMeasureComputeComparisonValue); i { case 0: return &v.state @@ -9452,7 +9452,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationMeasureComputeComparisonDelta); i { case 0: return &v.state @@ -9464,7 +9464,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationMeasureComputeComparisonRatio); i { case 0: return &v.state @@ -9476,7 +9476,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewAggregationSort); i { case 0: return &v.state @@ -9488,7 +9488,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewToplistRequest); i { case 0: return &v.state @@ -9500,7 +9500,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewToplistResponse); i { case 0: return &v.state @@ -9512,7 +9512,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewComparisonRequest); i { case 0: return &v.state @@ -9524,7 +9524,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewComparisonResponse); i { case 0: return &v.state @@ -9536,7 +9536,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*TimeRange); i { case 0: return &v.state @@ -9548,7 +9548,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewComparisonSort); i { case 0: return &v.state @@ -9560,7 +9560,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewComparisonRow); i { case 0: return &v.state @@ -9572,7 +9572,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewComparisonValue); i { case 0: return &v.state @@ -9584,7 +9584,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewComparisonMeasureAlias); i { case 0: return &v.state @@ -9596,7 +9596,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewTimeSeriesRequest); i { case 0: return &v.state @@ -9608,7 +9608,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewTimeSeriesResponse); i { case 0: return &v.state @@ -9620,7 +9620,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewTotalsRequest); i { case 0: return &v.state @@ -9632,7 +9632,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewTotalsResponse); i { case 0: return &v.state @@ -9644,7 +9644,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewRowsRequest); i { case 0: return &v.state @@ -9656,7 +9656,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewRowsResponse); i { case 0: return &v.state @@ -9668,7 +9668,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSort); i { case 0: return &v.state @@ -9680,7 +9680,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewFilter); i { case 0: return &v.state @@ -9692,7 +9692,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewColumn); i { case 0: return &v.state @@ -9704,7 +9704,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*InlineMeasure); i { case 0: return &v.state @@ -9716,7 +9716,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewTimeRangeRequest); i { case 0: return &v.state @@ -9728,7 +9728,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewTimeRangeResponse); i { case 0: return &v.state @@ -9740,7 +9740,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSchemaRequest); i { case 0: return &v.state @@ -9752,7 +9752,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSchemaResponse); i { case 0: return &v.state @@ -9764,7 +9764,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSearchRequest); i { case 0: return &v.state @@ -9776,7 +9776,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSearchResponse); i { case 0: return &v.state @@ -9788,7 +9788,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*ColumnRollupIntervalRequest); i { case 0: return &v.state @@ -9800,7 +9800,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*ColumnRollupIntervalResponse); i { case 0: return &v.state @@ -9812,7 +9812,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*ColumnTopKRequest); i { case 0: return &v.state @@ -9824,7 +9824,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*ColumnTopKResponse); i { case 0: return &v.state @@ -9836,7 +9836,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*CategoricalSummary); i { case 0: return &v.state @@ -9848,7 +9848,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*TopK); i { case 0: return &v.state @@ -9860,7 +9860,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*ColumnNullCountRequest); i { case 0: return &v.state @@ -9872,7 +9872,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*ColumnNullCountResponse); i { case 0: return &v.state @@ -9884,7 +9884,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*ColumnDescriptiveStatisticsRequest); i { case 0: return &v.state @@ -9896,7 +9896,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*ColumnDescriptiveStatisticsResponse); i { case 0: return &v.state @@ -9908,7 +9908,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*NumericSummary); i { case 0: return &v.state @@ -9920,7 +9920,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*NumericHistogramBins); i { case 0: return &v.state @@ -9932,7 +9932,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*NumericStatistics); i { case 0: return &v.state @@ -9944,7 +9944,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*NumericOutliers); i { case 0: return &v.state @@ -9956,7 +9956,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeGrainRequest); i { case 0: return &v.state @@ -9968,7 +9968,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeGrainResponse); i { case 0: return &v.state @@ -9980,7 +9980,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*ColumnNumericHistogramRequest); i { case 0: return &v.state @@ -9992,7 +9992,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*ColumnNumericHistogramResponse); i { case 0: return &v.state @@ -10004,7 +10004,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*ColumnRugHistogramRequest); i { case 0: return &v.state @@ -10016,7 +10016,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*ColumnRugHistogramResponse); i { case 0: return &v.state @@ -10028,7 +10028,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeRangeRequest); i { case 0: return &v.state @@ -10040,7 +10040,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeRangeResponse); i { case 0: return &v.state @@ -10052,7 +10052,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*TimeRangeSummary); i { case 0: return &v.state @@ -10064,7 +10064,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*ColumnCardinalityRequest); i { case 0: return &v.state @@ -10076,7 +10076,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*ColumnCardinalityResponse); i { case 0: return &v.state @@ -10088,7 +10088,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeSeriesRequest); i { case 0: return &v.state @@ -10100,7 +10100,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeSeriesResponse); i { case 0: return &v.state @@ -10112,7 +10112,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*TimeSeriesTimeRange); i { case 0: return &v.state @@ -10124,7 +10124,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[71].Exporter = func(v any, i int) any { switch v := v.(*TimeSeriesResponse); i { case 0: return &v.state @@ -10136,7 +10136,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*TimeSeriesValue); i { case 0: return &v.state @@ -10148,7 +10148,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[73].Exporter = func(v any, i int) any { switch v := v.(*TableCardinalityRequest); i { case 0: return &v.state @@ -10160,7 +10160,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[74].Exporter = func(v any, i int) any { switch v := v.(*TableCardinalityResponse); i { case 0: return &v.state @@ -10172,7 +10172,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*TableColumnsRequest); i { case 0: return &v.state @@ -10184,7 +10184,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*TableColumnsResponse); i { case 0: return &v.state @@ -10196,7 +10196,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[77].Exporter = func(v any, i int) any { switch v := v.(*ProfileColumn); i { case 0: return &v.state @@ -10208,7 +10208,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[78].Exporter = func(v any, i int) any { switch v := v.(*TableRowsRequest); i { case 0: return &v.state @@ -10220,7 +10220,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[79].Exporter = func(v any, i int) any { switch v := v.(*TableRowsResponse); i { case 0: return &v.state @@ -10232,7 +10232,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewFilter_Cond); i { case 0: return &v.state @@ -10244,7 +10244,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[81].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSearchResponse_SearchResult); i { case 0: return &v.state @@ -10256,7 +10256,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[82].Exporter = func(v any, i int) any { switch v := v.(*TopK_Entry); i { case 0: return &v.state @@ -10268,7 +10268,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[83].Exporter = func(v any, i int) any { switch v := v.(*NumericHistogramBins_Bin); i { case 0: return &v.state @@ -10280,7 +10280,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[84].Exporter = func(v any, i int) any { switch v := v.(*NumericOutliers_Outlier); i { case 0: return &v.state @@ -10292,7 +10292,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[85].Exporter = func(v any, i int) any { switch v := v.(*TimeRangeSummary_Interval); i { case 0: return &v.state @@ -10304,7 +10304,7 @@ func file_rill_runtime_v1_queries_proto_init() { return nil } } - file_rill_runtime_v1_queries_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_queries_proto_msgTypes[86].Exporter = func(v any, i int) any { switch v := v.(*ColumnTimeSeriesRequest_BasicMeasure); i { case 0: return &v.state @@ -10317,7 +10317,7 @@ func file_rill_runtime_v1_queries_proto_init() { } } } - file_rill_runtime_v1_queries_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_rill_runtime_v1_queries_proto_msgTypes[6].OneofWrappers = []any{ (*Query_MetricsViewAggregationRequest)(nil), (*Query_MetricsViewToplistRequest)(nil), (*Query_MetricsViewComparisonRequest)(nil), @@ -10338,7 +10338,7 @@ func file_rill_runtime_v1_queries_proto_init() { (*Query_TableColumnsRequest)(nil), (*Query_TableRowsRequest)(nil), } - file_rill_runtime_v1_queries_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_rill_runtime_v1_queries_proto_msgTypes[7].OneofWrappers = []any{ (*QueryResult_MetricsViewAggregationResponse)(nil), (*QueryResult_MetricsViewToplistResponse)(nil), (*QueryResult_MetricsViewComparisonResponse)(nil), @@ -10359,18 +10359,18 @@ func file_rill_runtime_v1_queries_proto_init() { (*QueryResult_TableColumnsResponse)(nil), (*QueryResult_TableRowsResponse)(nil), } - file_rill_runtime_v1_queries_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_rill_runtime_v1_queries_proto_msgTypes[11].OneofWrappers = []any{ (*MetricsViewAggregationMeasure_Count)(nil), (*MetricsViewAggregationMeasure_CountDistinct)(nil), (*MetricsViewAggregationMeasure_ComparisonValue)(nil), (*MetricsViewAggregationMeasure_ComparisonDelta)(nil), (*MetricsViewAggregationMeasure_ComparisonRatio)(nil), } - file_rill_runtime_v1_queries_proto_msgTypes[47].OneofWrappers = []interface{}{ + file_rill_runtime_v1_queries_proto_msgTypes[47].OneofWrappers = []any{ (*CategoricalSummary_TopK)(nil), (*CategoricalSummary_Cardinality)(nil), } - file_rill_runtime_v1_queries_proto_msgTypes[53].OneofWrappers = []interface{}{ + file_rill_runtime_v1_queries_proto_msgTypes[53].OneofWrappers = []any{ (*NumericSummary_NumericHistogramBins)(nil), (*NumericSummary_NumericStatistics)(nil), (*NumericSummary_NumericOutliers)(nil), diff --git a/proto/gen/rill/runtime/v1/resources.pb.go b/proto/gen/rill/runtime/v1/resources.pb.go index dde07e67167..8eaf9364f61 100644 --- a/proto/gen/rill/runtime/v1/resources.pb.go +++ b/proto/gen/rill/runtime/v1/resources.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/resources.proto @@ -5013,8 +5013,11 @@ type MetricsViewSpec_SecurityV2 struct { // Dashboard level access condition Access string `protobuf:"bytes,1,opt,name=access,proto3" json:"access,omitempty"` - // row level access condition + // SQL expression to apply in a WHERE clause against the underlying table RowFilter string `protobuf:"bytes,2,opt,name=row_filter,json=rowFilter,proto3" json:"row_filter,omitempty"` + // Dimension filter to apply to queries against the metrics view. + // Unlike row_filter, the query_filter filters on dimension names and is independent of the SQL dialect. + QueryFilter *Expression `protobuf:"bytes,5,opt,name=query_filter,json=queryFilter,proto3" json:"query_filter,omitempty"` // either one of include or exclude will be specified Include []*MetricsViewSpec_SecurityV2_FieldConditionV2 `protobuf:"bytes,3,rep,name=include,proto3" json:"include,omitempty"` Exclude []*MetricsViewSpec_SecurityV2_FieldConditionV2 `protobuf:"bytes,4,rep,name=exclude,proto3" json:"exclude,omitempty"` @@ -5066,6 +5069,13 @@ func (x *MetricsViewSpec_SecurityV2) GetRowFilter() string { return "" } +func (x *MetricsViewSpec_SecurityV2) GetQueryFilter() *Expression { + if x != nil { + return x.QueryFilter + } + return nil +} + func (x *MetricsViewSpec_SecurityV2) GetInclude() []*MetricsViewSpec_SecurityV2_FieldConditionV2 { if x != nil { return x.Include @@ -5262,964 +5272,970 @@ var file_rill_runtime_v1_resources_proto_rawDesc = []byte{ 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x20, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, - 0x6d, 0x65, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x12, 0x33, 0x0a, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x32, 0x48, 0x00, 0x52, 0x05, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, - 0x76, 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x3a, 0x0a, 0x09, 0x6d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, - 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x48, - 0x00, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x75, 0x6c, 0x6c, - 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, - 0x70, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x0f, 0x72, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, - 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, - 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, - 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, 0x09, 0x64, - 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x48, 0x00, 0x52, 0x03, 0x61, - 0x70, 0x69, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf2, 0x06, 0x0a, - 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x31, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x31, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x72, - 0x65, 0x66, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, - 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, - 0x64, 0x64, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 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, 0x4f, - 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 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, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0b, 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, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3e, 0x0a, 0x0a, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0c, 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, 0x48, 0x01, 0x52, 0x09, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x10, 0x72, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, - 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x5f, 0x6f, - 0x6e, 0x18, 0x11, 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, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x4f, 0x6e, - 0x12, 0x45, 0x0a, 0x0c, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x02, 0x52, 0x0b, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x22, 0x36, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0d, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x13, - 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x53, - 0x70, 0x65, 0x63, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, - 0x61, 0x72, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x70, 0x61, - 0x72, 0x73, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x70, - 0x61, 0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x61, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x22, 0x6f, 0x0a, 0x08, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, - 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x12, + 0x33, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x32, 0x48, 0x00, 0x52, + 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x56, 0x32, 0x48, 0x00, 0x52, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x3a, 0x0a, 0x09, 0x6d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, + 0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x75, + 0x6c, 0x6c, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xf0, 0x02, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x6e, - 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x6c, 0x0a, 0x07, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x56, 0x32, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x0b, 0x70, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x4a, 0x0a, + 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0e, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, + 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x68, 0x65, + 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x3a, + 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x48, 0x00, 0x52, + 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x03, 0x61, 0x70, + 0x69, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x48, 0x00, 0x52, + 0x03, 0x61, 0x70, 0x69, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x56, 0x32, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf2, + 0x06, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x12, + 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x04, 0x72, 0x65, 0x66, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, + 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 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, 0x4f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 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, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0b, 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, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3e, 0x0a, + 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0c, 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, 0x48, 0x01, 0x52, + 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, + 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, + 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x5f, 0x6f, 0x6e, 0x18, 0x11, 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, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, + 0x4f, 0x6e, 0x12, 0x45, 0x0a, 0x0c, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x02, 0x52, 0x0b, 0x72, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, + 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x22, 0x36, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0d, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x12, 0x36, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, + 0x72, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x22, 0x13, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0c, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xdc, 0x04, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x25, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x22, 0x69, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, + 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x77, 0x61, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x22, 0x6f, 0x0a, 0x08, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x56, 0x32, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xf0, 0x02, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x6b, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, + 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3d, 0x0a, 0x0c, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x6c, 0x0a, 0x07, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x56, 0x32, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xdc, 0x04, 0x0a, 0x09, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x10, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0f, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, - 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, - 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0xe5, 0x03, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, - 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x44, - 0x0a, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x73, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, - 0x12, 0x44, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x25, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x22, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x10, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x29, + 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x44, 0x0a, 0x11, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, + 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, + 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0xe5, 0x03, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x44, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x7e, 0x0a, - 0x0d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x56, 0x32, 0x12, 0x34, - 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xf9, 0x17, - 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x16, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, - 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x77, 0x61, 0x74, - 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, - 0x72, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0a, - 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, - 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x0a, - 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, - 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x6d, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, - 0x61, 0x73, 0x75, 0x72, 0x65, 0x56, 0x32, 0x52, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x13, - 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, - 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x11, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x29, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x6f, - 0x66, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x66, 0x69, - 0x72, 0x73, 0x74, 0x44, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2d, 0x0a, 0x13, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x5f, 0x6f, 0x66, 0x5f, 0x79, - 0x65, 0x61, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, - 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4f, 0x66, 0x59, 0x65, 0x61, 0x72, 0x12, 0x67, 0x0a, 0x17, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x15, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x44, 0x69, 0x6d, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, - 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, + 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, + 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x73, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, + 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, + 0x4f, 0x6e, 0x12, 0x44, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, + 0x7e, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x56, 0x32, + 0x12, 0x34, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, + 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x65, 0x6d, 0x65, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, - 0x68, 0x65, 0x6d, 0x65, 0x1a, 0xa9, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x6e, 0x65, - 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x6e, 0x65, 0x73, 0x74, - 0x1a, 0x76, 0x0a, 0x11, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x47, - 0x72, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x1a, 0xa7, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x07, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x1a, 0xe9, 0x04, 0x0a, 0x09, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x56, 0x32, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, + 0xb9, 0x18, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, + 0x6d, 0x65, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x14, 0x77, + 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x61, 0x74, 0x65, 0x72, + 0x6d, 0x61, 0x72, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, + 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x59, - 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x44, - 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x63, 0x0a, 0x13, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, - 0x0a, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x64, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x44, 0x33, 0x12, 0x33, 0x0a, 0x16, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x1a, 0xbb, - 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x77, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x56, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x56, 0x32, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x56, 0x0a, 0x07, - 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, + 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x12, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x07, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x1a, 0x46, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x49, 0x0a, 0x19, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, - 0x73, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x95, 0x01, 0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x69, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, - 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, - 0x65, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x11, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x22, - 0x80, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, - 0x13, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, - 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45, 0x44, 0x10, 0x02, - 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, - 0x10, 0x03, 0x22, 0x84, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, - 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, - 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, - 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, - 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, - 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0x71, 0x0a, 0x10, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, - 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x76, 0x0a, 0x09, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x56, 0x32, 0x52, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x12, 0x4a, + 0x0a, 0x13, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x67, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x11, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x08, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x79, + 0x5f, 0x6f, 0x66, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x44, 0x61, 0x79, 0x4f, 0x66, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2d, + 0x0a, 0x13, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x5f, 0x6f, 0x66, + 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4f, 0x66, 0x59, 0x65, 0x61, 0x72, 0x12, 0x67, 0x0a, + 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, + 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x44, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x13, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x68, 0x65, + 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x1a, 0xa9, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, + 0x6e, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x6e, 0x65, + 0x73, 0x74, 0x1a, 0x76, 0x0a, 0x11, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x1a, 0xa7, 0x01, 0x0a, 0x0d, 0x4d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x08, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x22, 0x59, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x2a, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6d, 0x0a, 0x06, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xe8, 0x05, 0x0a, 0x0a, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, - 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, - 0x4e, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x2b, 0x0a, 0x11, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x68, - 0x65, 0x72, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x77, 0x61, 0x74, 0x65, - 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x16, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x69, 0x73, 0x6f, 0x5f, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x49, 0x73, 0x6f, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, - 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x6e, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xe9, 0x04, 0x0a, 0x09, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, + 0x56, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, + 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x12, 0x59, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x70, 0x65, + 0x72, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x63, 0x0a, 0x13, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x12, 0x72, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x64, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x44, 0x33, 0x12, 0x33, 0x0a, 0x16, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x66, 0x5f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x1a, 0xfb, 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x77, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x56, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x56, + 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x56, 0x32, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x07, 0x65, + 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x1a, 0x46, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x49, + 0x0a, 0x19, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x95, 0x01, 0x0a, 0x12, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x69, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, + 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x11, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x73, 0x22, 0x80, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x17, 0x0a, 0x13, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x45, 0x41, 0x53, + 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x52, 0x49, 0x56, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x45, 0x41, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, + 0x4f, 0x4e, 0x10, 0x03, 0x22, 0x84, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4d, 0x50, 0x41, + 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, + 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, + 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x44, 0x49, 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0x71, 0x0a, 0x10, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x3f, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, + 0x77, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x76, + 0x0a, 0x09, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, + 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x59, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x2a, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6d, 0x0a, + 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xe8, 0x05, 0x0a, + 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x0f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, 0x6f, + 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, + 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x77, 0x61, + 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x12, 0x34, + 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x69, 0x73, 0x6f, 0x5f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x49, 0x73, 0x6f, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, + 0x18, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x75, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, + 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x72, 0x75, 0x6e, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 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, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, + 0x6e, 0x4f, 0x6e, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x61, 0x64, 0x68, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, + 0x64, 0x68, 0x6f, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 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, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x4f, + 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, + 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, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x6a, + 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x85, 0x08, 0x0a, 0x09, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x2b, + 0x0a, 0x11, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x68, 0x65, + 0x72, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x77, 0x61, 0x74, 0x65, 0x72, + 0x6d, 0x61, 0x72, 0x6b, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x69, 0x73, 0x6f, 0x5f, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x49, 0x73, 0x6f, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x6e, + 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x6e, 0x63, 0x6c, + 0x6f, 0x73, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, + 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, + 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x31, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, + 0x72, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x12, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x24, 0x0a, + 0x0e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, + 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, + 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x37, 0x0a, + 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, - 0x6e, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 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, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x4f, - 0x6e, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x4d, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x61, 0x64, 0x68, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x68, - 0x6f, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 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, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, + 0x6f, 0x72, 0x22, 0x61, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc7, 0x02, 0x0a, 0x0a, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, + 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 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, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x6e, 0x12, 0x4c, 0x0a, 0x11, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xca, 0x02, 0x0a, 0x0e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x68, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x61, 0x64, 0x68, 0x6f, 0x63, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x72, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, + 0x73, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x6f, 0x6e, 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, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, - 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x05, + 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x6a, 0x0a, 0x05, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x85, 0x08, 0x0a, 0x09, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x11, - 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x68, 0x65, 0x72, 0x69, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, - 0x72, 0x6b, 0x49, 0x6e, 0x68, 0x65, 0x72, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x69, 0x73, 0x6f, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x73, 0x49, 0x73, 0x6f, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x63, 0x6c, - 0x6f, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x6e, 0x63, 0x6c, 0x6f, 0x73, - 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x73, 0x4a, 0x73, - 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x31, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x5f, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x12, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x46, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x4f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x46, 0x61, 0x69, - 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x79, 0x4f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, - 0x66, 0x74, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, - 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x66, 0x6f, 0x72, - 0x22, 0x61, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x22, 0xc7, 0x02, 0x0a, 0x0a, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x0b, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6f, 0x6e, 0x18, 0x03, 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, 0x6e, - 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x4f, 0x6e, 0x12, 0x4c, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xca, 0x02, - 0x0a, 0x0e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x68, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x61, 0x64, 0x68, 0x6f, 0x63, 0x12, 0x38, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x65, - 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x41, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, - 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, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3b, 0x0a, - 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 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, 0x0a, - 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x0f, 0x41, - 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x38, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, - 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x6f, 0x77, 0x12, 0x23, 0x0a, 0x0d, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x7c, 0x0a, 0x0b, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x12, 0x34, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x11, 0x0a, 0x0f, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, - 0x65, 0x63, 0x22, 0x12, 0x0a, 0x10, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x52, - 0x0a, 0x12, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6f, 0x6e, 0x6c, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0d, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x60, - 0x0a, 0x11, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, + 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, + 0x0f, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x38, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x66, 0x61, + 0x69, 0x6c, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x6f, 0x77, 0x12, 0x23, + 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x0b, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x12, 0x34, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x22, 0x12, 0x0a, 0x10, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x22, 0x52, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3c, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6f, 0x6e, 0x6c, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0d, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x36, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x22, 0x2c, 0x0a, 0x12, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xd6, - 0x02, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, + 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x22, 0x60, 0x0a, 0x11, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0c, 0x72, 0x6f, - 0x77, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x6f, - 0x77, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0d, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x4a, 0x0a, 0x08, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, 0x41, 0x54, - 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x48, 0x45, - 0x41, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, - 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x02, 0x22, 0x6a, 0x0a, 0x05, 0x54, 0x68, 0x65, 0x6d, 0x65, - 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x69, 0x63, 0x79, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x22, 0x2c, 0x0a, 0x12, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x22, 0xd6, 0x02, 0x0a, 0x13, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x6f, 0x77, 0x73, + 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0c, + 0x72, 0x6f, 0x77, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x28, 0x0a, 0x10, + 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0d, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1f, 0x0a, 0x0b, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x4a, 0x0a, + 0x08, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, + 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, + 0x48, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, + 0x47, 0x59, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x02, 0x22, 0x6a, 0x0a, 0x05, 0x54, 0x68, 0x65, + 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x09, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x12, 0x31, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x09, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x40, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, + 0x2e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x22, 0x0c, 0x0a, 0x0a, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, + 0x76, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xbf, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, + 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x72, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x12, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x49, 0x6e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x76, 0x0a, 0x09, 0x44, + 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, + 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x03, 0x67, 0x61, 0x70, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x10, 0x0a, + 0x0e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, + 0xfb, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, + 0x30, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x61, + 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x49, 0x6e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x12, 0x11, 0x0a, 0x01, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x01, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x11, 0x0a, 0x01, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x01, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x04, 0x0a, 0x02, + 0x5f, 0x78, 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x64, 0x0a, + 0x03, 0x41, 0x50, 0x49, 0x12, 0x2c, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, + 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, + 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x22, 0x9b, 0x01, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x65, 0x66, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x72, 0x65, 0x66, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, + 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x22, 0xa5, + 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x44, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, - 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, - 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, - 0x0c, 0x0a, 0x0a, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x76, 0x0a, - 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x35, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xbf, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x72, 0x12, - 0x48, 0x0a, 0x13, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x12, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, - 0x49, 0x6e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x76, 0x0a, 0x09, 0x44, 0x61, 0x73, - 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x22, 0x87, 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x03, 0x67, 0x61, 0x70, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x44, - 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xfb, 0x01, - 0x0a, 0x0d, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, - 0x14, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x73, 0x68, - 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x65, 0x64, 0x49, 0x6e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, - 0x11, 0x0a, 0x01, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x01, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x11, 0x0a, 0x01, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x01, 0x79, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x78, - 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x64, 0x0a, 0x03, 0x41, - 0x50, 0x49, 0x12, 0x2c, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x50, 0x49, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x12, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x22, 0x0a, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x9b, - 0x01, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, - 0x65, 0x66, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x72, 0x65, 0x66, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x63, 0x72, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x63, 0x6b, - 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x22, 0xa5, 0x01, 0x0a, - 0x0a, 0x50, 0x61, 0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x50, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x50, 0x61, 0x74, 0x68, 0x22, 0x4b, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x65, + 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, - 0x74, 0x68, 0x12, 0x44, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, - 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x22, 0x50, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x2a, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x50, 0x61, 0x74, 0x68, 0x22, 0x4b, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, - 0x65, 0x6e, 0x63, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x6e, 0x63, 0x79, 0x22, 0x2a, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, - 0x69, 0x6e, 0x65, 0x22, 0xfb, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x4e, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x77, 0x0a, - 0x19, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, - 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x1c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x2d, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, 0x73, 0x68, - 0x22, 0x78, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x12, - 0x32, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2a, 0x8a, 0x01, 0x0a, 0x0f, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, - 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x52, + 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0xfb, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, + 0x4e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x77, 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, + 0x6d, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x17, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x1c, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x2d, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x63, 0x48, 0x61, + 0x73, 0x68, 0x22, 0x78, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, + 0x32, 0x12, 0x32, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2a, 0x8a, 0x01, 0x0a, + 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, + 0x18, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x43, - 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, - 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x41, 0x73, 0x73, 0x65, - 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x1c, 0x41, - 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, - 0x15, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x53, 0x53, 0x45, - 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, - 0xc1, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, - 0x69, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x69, - 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, - 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1b, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x11, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x41, 0x73, + 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, + 0x1c, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x19, 0x0a, 0x15, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x53, + 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x03, 0x42, 0xc1, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, + 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x11, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6236,7 +6252,7 @@ func file_rill_runtime_v1_resources_proto_rawDescGZIP() []byte { var file_rill_runtime_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 5) var file_rill_runtime_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 72) -var file_rill_runtime_v1_resources_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_resources_proto_goTypes = []any{ (ReconcileStatus)(0), // 0: rill.runtime.v1.ReconcileStatus (AssertionStatus)(0), // 1: rill.runtime.v1.AssertionStatus (MetricsViewSpec_MeasureType)(0), // 2: rill.runtime.v1.MetricsViewSpec.MeasureType @@ -6320,6 +6336,7 @@ var file_rill_runtime_v1_resources_proto_goTypes = []interface{}{ (TimeGrain)(0), // 80: rill.runtime.v1.TimeGrain (ExportFormat)(0), // 81: rill.runtime.v1.ExportFormat (*Color)(nil), // 82: rill.runtime.v1.Color + (*Expression)(nil), // 83: rill.runtime.v1.Expression } var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 6, // 0: rill.runtime.v1.Resource.meta:type_name -> rill.runtime.v1.ResourceMeta @@ -6440,14 +6457,15 @@ var file_rill_runtime_v1_resources_proto_depIdxs = []int32{ 67, // 115: rill.runtime.v1.MetricsViewSpec.MeasureV2.window:type_name -> rill.runtime.v1.MetricsViewSpec.MeasureWindow 66, // 116: rill.runtime.v1.MetricsViewSpec.MeasureV2.per_dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector 66, // 117: rill.runtime.v1.MetricsViewSpec.MeasureV2.required_dimensions:type_name -> rill.runtime.v1.MetricsViewSpec.DimensionSelector - 72, // 118: rill.runtime.v1.MetricsViewSpec.SecurityV2.include:type_name -> rill.runtime.v1.MetricsViewSpec.SecurityV2.FieldConditionV2 - 72, // 119: rill.runtime.v1.MetricsViewSpec.SecurityV2.exclude:type_name -> rill.runtime.v1.MetricsViewSpec.SecurityV2.FieldConditionV2 - 70, // 120: rill.runtime.v1.MetricsViewSpec.AvailableTimeRange.comparison_offsets:type_name -> rill.runtime.v1.MetricsViewSpec.AvailableComparisonOffset - 121, // [121:121] is the sub-list for method output_type - 121, // [121:121] is the sub-list for method input_type - 121, // [121:121] is the sub-list for extension type_name - 121, // [121:121] is the sub-list for extension extendee - 0, // [0:121] is the sub-list for field type_name + 83, // 118: rill.runtime.v1.MetricsViewSpec.SecurityV2.query_filter:type_name -> rill.runtime.v1.Expression + 72, // 119: rill.runtime.v1.MetricsViewSpec.SecurityV2.include:type_name -> rill.runtime.v1.MetricsViewSpec.SecurityV2.FieldConditionV2 + 72, // 120: rill.runtime.v1.MetricsViewSpec.SecurityV2.exclude:type_name -> rill.runtime.v1.MetricsViewSpec.SecurityV2.FieldConditionV2 + 70, // 121: rill.runtime.v1.MetricsViewSpec.AvailableTimeRange.comparison_offsets:type_name -> rill.runtime.v1.MetricsViewSpec.AvailableComparisonOffset + 122, // [122:122] is the sub-list for method output_type + 122, // [122:122] is the sub-list for method input_type + 122, // [122:122] is the sub-list for extension type_name + 122, // [122:122] is the sub-list for extension extendee + 0, // [0:122] is the sub-list for field type_name } func init() { file_rill_runtime_v1_resources_proto_init() } @@ -6457,10 +6475,11 @@ func file_rill_runtime_v1_resources_proto_init() { } file_rill_runtime_v1_colors_proto_init() file_rill_runtime_v1_export_format_proto_init() + file_rill_runtime_v1_expression_proto_init() file_rill_runtime_v1_schema_proto_init() file_rill_runtime_v1_time_grain_proto_init() if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Resource); i { case 0: return &v.state @@ -6472,7 +6491,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ResourceMeta); i { case 0: return &v.state @@ -6484,7 +6503,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ResourceName); i { case 0: return &v.state @@ -6496,7 +6515,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*ProjectParser); i { case 0: return &v.state @@ -6508,7 +6527,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ProjectParserSpec); i { case 0: return &v.state @@ -6520,7 +6539,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ProjectParserState); i { case 0: return &v.state @@ -6532,7 +6551,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*SourceV2); i { case 0: return &v.state @@ -6544,7 +6563,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*SourceSpec); i { case 0: return &v.state @@ -6556,7 +6575,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*SourceState); i { case 0: return &v.state @@ -6568,7 +6587,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*ModelV2); i { case 0: return &v.state @@ -6580,7 +6599,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*ModelSpec); i { case 0: return &v.state @@ -6592,7 +6611,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*ModelState); i { case 0: return &v.state @@ -6604,7 +6623,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewV2); i { case 0: return &v.state @@ -6616,7 +6635,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec); i { case 0: return &v.state @@ -6628,7 +6647,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewState); i { case 0: return &v.state @@ -6640,7 +6659,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*Migration); i { case 0: return &v.state @@ -6652,7 +6671,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*MigrationSpec); i { case 0: return &v.state @@ -6664,7 +6683,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*MigrationState); i { case 0: return &v.state @@ -6676,7 +6695,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*Report); i { case 0: return &v.state @@ -6688,7 +6707,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*ReportSpec); i { case 0: return &v.state @@ -6700,7 +6719,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*ReportState); i { case 0: return &v.state @@ -6712,7 +6731,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*ReportExecution); i { case 0: return &v.state @@ -6724,7 +6743,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*Alert); i { case 0: return &v.state @@ -6736,7 +6755,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*AlertSpec); i { case 0: return &v.state @@ -6748,7 +6767,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*Notifier); i { case 0: return &v.state @@ -6760,7 +6779,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*AlertState); i { case 0: return &v.state @@ -6772,7 +6791,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*AlertExecution); i { case 0: return &v.state @@ -6784,7 +6803,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*AssertionResult); i { case 0: return &v.state @@ -6796,7 +6815,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*PullTrigger); i { case 0: return &v.state @@ -6808,7 +6827,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*PullTriggerSpec); i { case 0: return &v.state @@ -6820,7 +6839,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*PullTriggerState); i { case 0: return &v.state @@ -6832,7 +6851,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*RefreshTrigger); i { case 0: return &v.state @@ -6844,7 +6863,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*RefreshTriggerSpec); i { case 0: return &v.state @@ -6856,7 +6875,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*RefreshTriggerState); i { case 0: return &v.state @@ -6868,7 +6887,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*BucketPlanner); i { case 0: return &v.state @@ -6880,7 +6899,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*BucketPlannerSpec); i { case 0: return &v.state @@ -6892,7 +6911,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*BucketPlannerState); i { case 0: return &v.state @@ -6904,7 +6923,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*BucketExtractPolicy); i { case 0: return &v.state @@ -6916,7 +6935,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*Theme); i { case 0: return &v.state @@ -6928,7 +6947,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*ThemeSpec); i { case 0: return &v.state @@ -6940,7 +6959,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*ThemeState); i { case 0: return &v.state @@ -6952,7 +6971,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*Component); i { case 0: return &v.state @@ -6964,7 +6983,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*ComponentSpec); i { case 0: return &v.state @@ -6976,7 +6995,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*ComponentState); i { case 0: return &v.state @@ -6988,7 +7007,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*Dashboard); i { case 0: return &v.state @@ -7000,7 +7019,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*DashboardSpec); i { case 0: return &v.state @@ -7012,7 +7031,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*DashboardState); i { case 0: return &v.state @@ -7024,7 +7043,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*DashboardItem); i { case 0: return &v.state @@ -7036,7 +7055,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*API); i { case 0: return &v.state @@ -7048,7 +7067,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*APISpec); i { case 0: return &v.state @@ -7060,7 +7079,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*APIState); i { case 0: return &v.state @@ -7072,7 +7091,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*Schedule); i { case 0: return &v.state @@ -7084,7 +7103,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*ParseError); i { case 0: return &v.state @@ -7096,7 +7115,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*ValidationError); i { case 0: return &v.state @@ -7108,7 +7127,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*DependencyError); i { case 0: return &v.state @@ -7120,7 +7139,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*ExecutionError); i { case 0: return &v.state @@ -7132,7 +7151,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*CharLocation); i { case 0: return &v.state @@ -7144,7 +7163,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*ConnectorSpec); i { case 0: return &v.state @@ -7156,7 +7175,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*ConnectorState); i { case 0: return &v.state @@ -7168,7 +7187,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*ConnectorV2); i { case 0: return &v.state @@ -7180,7 +7199,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_DimensionV2); i { case 0: return &v.state @@ -7192,7 +7211,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_DimensionSelector); i { case 0: return &v.state @@ -7204,7 +7223,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_MeasureWindow); i { case 0: return &v.state @@ -7216,7 +7235,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_MeasureV2); i { case 0: return &v.state @@ -7228,7 +7247,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_SecurityV2); i { case 0: return &v.state @@ -7240,7 +7259,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_AvailableComparisonOffset); i { case 0: return &v.state @@ -7252,7 +7271,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_AvailableTimeRange); i { case 0: return &v.state @@ -7264,7 +7283,7 @@ func file_rill_runtime_v1_resources_proto_init() { return nil } } - file_rill_runtime_v1_resources_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_resources_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*MetricsViewSpec_SecurityV2_FieldConditionV2); i { case 0: return &v.state @@ -7277,7 +7296,7 @@ func file_rill_runtime_v1_resources_proto_init() { } } } - file_rill_runtime_v1_resources_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_rill_runtime_v1_resources_proto_msgTypes[0].OneofWrappers = []any{ (*Resource_ProjectParser)(nil), (*Resource_Source)(nil), (*Resource_Model)(nil), @@ -7294,14 +7313,14 @@ func file_rill_runtime_v1_resources_proto_init() { (*Resource_Api)(nil), (*Resource_Connector)(nil), } - file_rill_runtime_v1_resources_proto_msgTypes[1].OneofWrappers = []interface{}{} - file_rill_runtime_v1_resources_proto_msgTypes[23].OneofWrappers = []interface{}{ + file_rill_runtime_v1_resources_proto_msgTypes[1].OneofWrappers = []any{} + file_rill_runtime_v1_resources_proto_msgTypes[23].OneofWrappers = []any{ (*AlertSpec_QueryForUserId)(nil), (*AlertSpec_QueryForUserEmail)(nil), (*AlertSpec_QueryForAttributes)(nil), } - file_rill_runtime_v1_resources_proto_msgTypes[39].OneofWrappers = []interface{}{} - file_rill_runtime_v1_resources_proto_msgTypes[47].OneofWrappers = []interface{}{} + file_rill_runtime_v1_resources_proto_msgTypes[39].OneofWrappers = []any{} + file_rill_runtime_v1_resources_proto_msgTypes[47].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/proto/gen/rill/runtime/v1/resources.pb.validate.go b/proto/gen/rill/runtime/v1/resources.pb.validate.go index be037b5694b..ff1d0ac6cab 100644 --- a/proto/gen/rill/runtime/v1/resources.pb.validate.go +++ b/proto/gen/rill/runtime/v1/resources.pb.validate.go @@ -10111,6 +10111,35 @@ func (m *MetricsViewSpec_SecurityV2) validate(all bool) error { // no validation rules for RowFilter + if all { + switch v := interface{}(m.GetQueryFilter()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MetricsViewSpec_SecurityV2ValidationError{ + field: "QueryFilter", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MetricsViewSpec_SecurityV2ValidationError{ + field: "QueryFilter", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetQueryFilter()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return MetricsViewSpec_SecurityV2ValidationError{ + field: "QueryFilter", + reason: "embedded message failed validation", + cause: err, + } + } + } + for idx, item := range m.GetInclude() { _, _ = idx, item diff --git a/proto/gen/rill/runtime/v1/runtime.swagger.yaml b/proto/gen/rill/runtime/v1/runtime.swagger.yaml index 05a2c92649d..fe244f6e1dc 100644 --- a/proto/gen/rill/runtime/v1/runtime.swagger.yaml +++ b/proto/gen/rill/runtime/v1/runtime.swagger.yaml @@ -2793,7 +2793,12 @@ definitions: title: Dashboard level access condition rowFilter: type: string - title: row level access condition + title: SQL expression to apply in a WHERE clause against the underlying table + queryFilter: + $ref: '#/definitions/v1Expression' + description: |- + Dimension filter to apply to queries against the metrics view. + Unlike row_filter, the query_filter filters on dimension names and is independent of the SQL dialect. include: type: array items: diff --git a/proto/gen/rill/runtime/v1/schema.pb.go b/proto/gen/rill/runtime/v1/schema.pb.go index 5fdad087ae8..449b7fa0926 100644 --- a/proto/gen/rill/runtime/v1/schema.pb.go +++ b/proto/gen/rill/runtime/v1/schema.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/schema.proto @@ -483,7 +483,7 @@ func file_rill_runtime_v1_schema_proto_rawDescGZIP() []byte { var file_rill_runtime_v1_schema_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_rill_runtime_v1_schema_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_rill_runtime_v1_schema_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_schema_proto_goTypes = []any{ (Type_Code)(0), // 0: rill.runtime.v1.Type.Code (*Type)(nil), // 1: rill.runtime.v1.Type (*StructType)(nil), // 2: rill.runtime.v1.StructType @@ -512,7 +512,7 @@ func file_rill_runtime_v1_schema_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_rill_runtime_v1_schema_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_schema_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Type); i { case 0: return &v.state @@ -524,7 +524,7 @@ func file_rill_runtime_v1_schema_proto_init() { return nil } } - file_rill_runtime_v1_schema_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_schema_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*StructType); i { case 0: return &v.state @@ -536,7 +536,7 @@ func file_rill_runtime_v1_schema_proto_init() { return nil } } - file_rill_runtime_v1_schema_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_schema_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*MapType); i { case 0: return &v.state @@ -548,7 +548,7 @@ func file_rill_runtime_v1_schema_proto_init() { return nil } } - file_rill_runtime_v1_schema_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_schema_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*StructType_Field); i { case 0: return &v.state diff --git a/proto/gen/rill/runtime/v1/time_grain.pb.go b/proto/gen/rill/runtime/v1/time_grain.pb.go index 33eaaf4fe72..82a9ba04c7b 100644 --- a/proto/gen/rill/runtime/v1/time_grain.pb.go +++ b/proto/gen/rill/runtime/v1/time_grain.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 +// protoc-gen-go v1.34.2 // protoc (unknown) // source: rill/runtime/v1/time_grain.proto @@ -140,7 +140,7 @@ func file_rill_runtime_v1_time_grain_proto_rawDescGZIP() []byte { } var file_rill_runtime_v1_time_grain_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_rill_runtime_v1_time_grain_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_time_grain_proto_goTypes = []any{ (TimeGrain)(0), // 0: rill.runtime.v1.TimeGrain } var file_rill_runtime_v1_time_grain_proto_depIdxs = []int32{ diff --git a/proto/rill/admin/v1/api.proto b/proto/rill/admin/v1/api.proto index 2204c269197..ed1e3aaf9d7 100644 --- a/proto/rill/admin/v1/api.proto +++ b/proto/rill/admin/v1/api.proto @@ -5,6 +5,7 @@ import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/struct.proto"; import "rill/runtime/v1/export_format.proto"; +import "rill/runtime/v1/expression.proto"; import "validate/validate.proto"; service AdminService { @@ -373,6 +374,24 @@ service AdminService { option (google.api.http) = {delete: "/v1/services/tokens/{token_id}"}; } + // IssueMagicAuthToken creates a "magic" auth token that provides limited access to a specific filtered dashboard in a specific project. + rpc IssueMagicAuthToken(IssueMagicAuthTokenRequest) returns (IssueMagicAuthTokenResponse) { + option (google.api.http) = { + post: "/v1/organizations/{organization}/projects/{project}/tokens/magic", + body: "*" + }; + } + + // ListMagicAuthTokens lists all the magic auth tokens for a specific project. + rpc ListMagicAuthTokens(ListMagicAuthTokensRequest) returns (ListMagicAuthTokensResponse) { + option (google.api.http) = {get: "/v1/organizations/{organization}/projects/{project}/tokens/magic"}; + } + + // RevokeMagicAuthToken revokes a magic auth token. + rpc RevokeMagicAuthToken(RevokeMagicAuthTokenRequest) returns (RevokeMagicAuthTokenResponse) { + option (google.api.http) = {delete: "/v1/magic-tokens/{token_id}"}; + } + // UpdateUserPreferences updates the preferences for the user rpc UpdateUserPreferences(UpdateUserPreferencesRequest) returns (UpdateUserPreferencesResponse) { option (google.api.http) = { @@ -1109,6 +1128,46 @@ message ListServiceAuthTokensResponse { repeated ServiceToken tokens = 1; } + +message IssueMagicAuthTokenRequest { + // Organization that owns the project. + string organization = 1 [(validate.rules).string.min_len = 1]; + // Project to create the magic auth token in. + string project = 2 [(validate.rules).string.min_len = 1]; + // TTL for the token in minutes. Set to 0 for no expiry. Defaults to no expiry. + int64 ttl_minutes = 3; + // Metrics view the token will provide access to. + string metrics_view = 4; + // Optional filter to apply to all queries to the metrics view. + rill.runtime.v1.Expression metrics_view_filter = 5; + // Optional list of names of dimensions and measures to limit access to. + // If empty, all dimensions and measures are accessible. + repeated string metrics_view_fields = 6; +} + +message IssueMagicAuthTokenResponse { + string token = 1; + string url = 2; +} + +message ListMagicAuthTokensRequest { + string organization = 1 [(validate.rules).string.min_len = 1]; + string project = 2 [(validate.rules).string.min_len = 1]; + uint32 page_size = 3 [(validate.rules).uint32 = {ignore_empty: true, lte: 1000}]; + string page_token = 4; +} + +message ListMagicAuthTokensResponse { + repeated MagicAuthToken tokens = 1; + string next_page_token = 2; +} + +message RevokeMagicAuthTokenRequest { + string token_id = 1; +} + +message RevokeMagicAuthTokenResponse {} + message GetGithubRepoStatusRequest { string github_url = 1; } @@ -1482,10 +1541,14 @@ message ProjectPermissions { bool manage_dev = 8; bool read_project_members = 9; bool manage_project_members = 10; + bool create_magic_auth_tokens = 15; + bool manage_magic_auth_tokens = 16; bool create_reports = 11; bool manage_reports = 12; bool create_alerts = 13; bool manage_alerts = 14; + bool create_bookmarks = 17; + bool manage_bookmarks = 18; } message Member { @@ -1529,6 +1592,20 @@ message ServiceToken { google.protobuf.Timestamp expires_on = 3; } +message MagicAuthToken { + string id = 1; + string project_id = 2; + google.protobuf.Timestamp created_on = 3; + google.protobuf.Timestamp expires_on = 4; + google.protobuf.Timestamp used_on = 5; + string created_by_user_id = 6; + string created_by_user_email = 7; + google.protobuf.Struct attributes = 8; + string metrics_view = 9; + rill.runtime.v1.Expression metrics_view_filter = 10; + repeated string metrics_view_fields = 11; +} + message VirtualFile { string path = 1; bytes data = 2; diff --git a/proto/rill/runtime/v1/resources.proto b/proto/rill/runtime/v1/resources.proto index c3262dc2747..ae86afa6d17 100644 --- a/proto/rill/runtime/v1/resources.proto +++ b/proto/rill/runtime/v1/resources.proto @@ -5,6 +5,7 @@ import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "rill/runtime/v1/colors.proto"; import "rill/runtime/v1/export_format.proto"; +import "rill/runtime/v1/expression.proto"; import "rill/runtime/v1/schema.proto"; import "rill/runtime/v1/time_grain.proto"; @@ -185,8 +186,11 @@ message MetricsViewSpec { message SecurityV2 { // Dashboard level access condition string access = 1; - // row level access condition + // SQL expression to apply in a WHERE clause against the underlying table string row_filter = 2; + // Dimension filter to apply to queries against the metrics view. + // Unlike row_filter, the query_filter filters on dimension names and is independent of the SQL dialect. + Expression query_filter = 5; // Dimension/measure level access condition message FieldConditionV2 { string condition = 1; diff --git a/runtime/compilers/rillv1/template.go b/runtime/compilers/rillv1/template.go index c657ab62ce6..7ced8830c8f 100644 --- a/runtime/compilers/rillv1/template.go +++ b/runtime/compilers/rillv1/template.go @@ -226,16 +226,21 @@ func ResolveTemplate(tmpl string, data TemplateData) (string, error) { } // Build template data + var self map[string]any + if data.Self.Meta != nil { + self = map[string]any{ + "kind": data.Self.Meta.Name.Kind, + "name": data.Self.Meta.Name.Name, + "spec": data.Self.Spec, + "state": data.Self.State, + } + } dataMap := map[string]interface{}{ "env": data.Environment, "user": data.User, "vars": data.Variables, "state": data.State, - "self": map[string]any{ - "meta": data.Self.Meta, - "spec": data.Self.Spec, - "state": data.Self.State, - }, + "self": self, } // Add extra props diff --git a/runtime/drivers/olap.go b/runtime/drivers/olap.go index 3c94fee6ed9..65d67f8876d 100644 --- a/runtime/drivers/olap.go +++ b/runtime/drivers/olap.go @@ -204,6 +204,10 @@ func (d Dialect) EscapeIdentifier(ident string) string { return fmt.Sprintf("\"%s\"", strings.ReplaceAll(ident, "\"", "\"\"")) } +func (d Dialect) EscapeStringValue(s string) string { + return fmt.Sprintf("'%s'", strings.ReplaceAll(s, "'", "''")) +} + func (d Dialect) ConvertToDateTruncSpecifier(grain runtimev1.TimeGrain) string { var str string switch grain { diff --git a/runtime/metricsview/ast.go b/runtime/metricsview/ast.go index d5ae40a0e24..fb0589fb153 100644 --- a/runtime/metricsview/ast.go +++ b/runtime/metricsview/ast.go @@ -163,7 +163,7 @@ func NewAST(mv *runtimev1.MetricsViewSpec, sec *runtime.ResolvedMetricsViewSecur // This also enables us to template the field name instead of the field expression into the expression. ast.wrapSelect(ast.Root, ast.generateIdentifier()) - expr, args, err := ast.sqlForExpression(ast.query.Having, ast.Root, true) + expr, args, err := ast.sqlForExpression(ast.query.Having, ast.Root, true, true) if err != nil { return nil, fmt.Errorf("failed to compile 'having': %w", err) } @@ -479,16 +479,39 @@ func (a *AST) checkRequiredDimensionsPresentInQuery(m *runtimev1.MetricsViewSpec // buildUnderlyingWhere constructs the base WHERE clause for the query. func (a *AST) buildUnderlyingWhere() (*ExprNode, error) { - expr, args, err := a.sqlForExpression(a.query.Where, nil, false) + expr, args, err := a.sqlForExpression(a.query.Where, nil, false, true) if err != nil { return nil, fmt.Errorf("failed to compile 'where': %w", err) } - if a.security != nil && a.security.RowFilter != "" { - if expr == "" { - expr = a.security.RowFilter - } else { - expr = fmt.Sprintf("(%s) AND (%s)", a.security.RowFilter, expr) + if a.security != nil { + var secExpr string + var secArgs []any + + if a.security.QueryFilter != nil { + e := NewExpressionFromProto(a.security.QueryFilter) + secExpr, secArgs, err = a.sqlForExpression(e, nil, false, false) + if err != nil { + return nil, fmt.Errorf("failed to compile the security policy's query filter: %w", err) + } + } + + if a.security.RowFilter != "" { + if secExpr == "" { + secExpr = a.security.RowFilter + } else { + secExpr = fmt.Sprintf("(%s) AND (%s)", secExpr, a.security.RowFilter) + } + } + + if secExpr != "" { + if expr == "" { + expr = secExpr + args = secArgs + } else { + expr = fmt.Sprintf("(%s) AND (%s)", expr, secExpr) + args = append(args, secArgs...) + } } } diff --git a/runtime/metricsview/astexpr.go b/runtime/metricsview/astexpr.go index 4047c195917..9e03271fe00 100644 --- a/runtime/metricsview/astexpr.go +++ b/runtime/metricsview/astexpr.go @@ -3,16 +3,19 @@ package metricsview import ( "errors" "fmt" + "reflect" "strings" ) // sqlForExpression generates a SQL expression for a query expression. // pseudoHaving is true if the expression is allowed to reference measure expressions. -func (ast *AST) sqlForExpression(e *Expression, n *SelectNode, pseudoHaving bool) (string, []any, error) { +// visible is true if the expression is only allowed to reference dimensions and measures that are exposed by the security policy. +func (ast *AST) sqlForExpression(e *Expression, n *SelectNode, pseudoHaving, visible bool) (string, []any, error) { b := &sqlExprBuilder{ ast: ast, node: n, pseudoHaving: pseudoHaving, + visible: visible, out: &strings.Builder{}, } @@ -28,6 +31,7 @@ type sqlExprBuilder struct { ast *AST node *SelectNode pseudoHaving bool + visible bool out *strings.Builder args []any } @@ -152,7 +156,8 @@ func (b *sqlExprBuilder) writeBinaryCondition(exprs []*Expression, op Operator) if op == OperatorIn || op == OperatorNin { if len(exprs) == 2 { rhs := exprs[1] - _, isListVal := rhs.Value.([]any) + typ := reflect.TypeOf(rhs.Value) + isListVal := typ != nil && typ.Kind() == reflect.Slice if rhs.Name == "" && !isListVal && rhs.Condition == nil && rhs.Subquery == nil { // Convert the right hand side to a list exprs[1] = &Expression{Value: []any{rhs.Value}} @@ -527,7 +532,7 @@ func (b *sqlExprBuilder) sqlForName(name string) (expr string, unnest bool, err } // Second, search for the dimension in the metrics view's dimensions (since expressions are allowed to reference dimensions not included in the query) - dim, err := b.ast.lookupDimension(name, true) + dim, err := b.ast.lookupDimension(name, b.visible) if err != nil { return "", false, fmt.Errorf("invalid dimension reference %q: %w", name, err) } diff --git a/runtime/metricsview/query_expression.go b/runtime/metricsview/query_expression.go new file mode 100644 index 00000000000..00d295609e7 --- /dev/null +++ b/runtime/metricsview/query_expression.go @@ -0,0 +1,194 @@ +package metricsview + +import ( + "encoding/json" + "errors" + "fmt" + "reflect" + "strings" +) + +func ExpressionToString(e *Expression) (string, error) { + b := exprStrBuilder{Builder: &strings.Builder{}} + err := b.writeExpression(e) + if err != nil { + return "", err + } + return b.String(), nil +} + +type exprStrBuilder struct { + *strings.Builder +} + +func (b exprStrBuilder) writeExpression(e *Expression) error { + if e == nil { + return nil + } + if e.Name != "" { + return b.writeName(e.Name) + } + if e.Value != nil { + return b.writeValue(e.Value) + } + if e.Subquery != nil { + return b.writeSubquery(e.Subquery) + } + if e.Condition != nil { + return b.writeCondition(e.Condition) + } + return errors.New("invalid expression") +} + +func (b exprStrBuilder) writeName(name string) error { + if strings.Contains(name, `"`) { + _, err := strings.NewReplacer(`"`, `""`).WriteString(b.Builder, name) + return err + } + b.writeString(name) + return nil +} + +func (b exprStrBuilder) writeValue(val any) error { + res, err := json.Marshal(val) + if err != nil { + return err + } + if len(res) > 0 && res[len(res)-1] == '\n' { + res = res[:len(res)-1] + } + _, err = b.WriteString(string(res)) + return err +} + +func (b exprStrBuilder) writeSubquery(_ *Subquery) error { + _, err := b.WriteString("") + return err +} + +func (b exprStrBuilder) writeCondition(cond *Condition) error { + switch cond.Operator { + case OperatorOr: + return b.writeJoinedExpressions(cond.Expressions, " OR ") + case OperatorAnd: + return b.writeJoinedExpressions(cond.Expressions, " AND ") + default: + if !cond.Operator.Valid() { + return fmt.Errorf("invalid expression operator %q", cond.Operator) + } + return b.writeBinaryCondition(cond.Expressions, cond.Operator) + } +} + +func (b exprStrBuilder) writeJoinedExpressions(exprs []*Expression, joiner string) error { + if len(exprs) == 0 { + return nil + } + + for i, e := range exprs { + if i > 0 { + b.writeString(joiner) + } + err := b.writeWrappedExpression(e) + if err != nil { + return err + } + } + + return nil +} + +func (b exprStrBuilder) writeBinaryCondition(exprs []*Expression, op Operator) error { + // Backwards compatibility: For IN and NIN, the right hand side may be a flattened list of values, not a single list. + if op == OperatorIn || op == OperatorNin { + if len(exprs) == 2 { + rhs := exprs[1] + typ := reflect.TypeOf(rhs.Value) + isListVal := typ != nil && typ.Kind() == reflect.Slice + if rhs.Name == "" && !isListVal && rhs.Condition == nil && rhs.Subquery == nil { + // Convert the right hand side to a list + exprs[1] = &Expression{Value: []any{rhs.Value}} + } + } + if len(exprs) > 2 { + vals := make([]any, 0, len(exprs)-1) + for _, e := range exprs[1:] { + vals = append(vals, e.Value) + } + exprs = []*Expression{exprs[0], {Value: vals}} + } + } + + if len(exprs) != 2 { + return fmt.Errorf("binary condition must have exactly 2 expressions") + } + + left := exprs[0] + if left == nil { + return fmt.Errorf("left expression is nil") + } + + right := exprs[1] + if right == nil { + return fmt.Errorf("right expression is nil") + } + + err := b.writeWrappedExpression(left) + if err != nil { + return err + } + + switch op { + case OperatorEq: + b.writeString("=") + case OperatorNeq: + b.writeString("!=") + case OperatorLt: + b.writeString("<") + case OperatorLte: + b.writeString("<=") + case OperatorGt: + b.writeString(">") + case OperatorGte: + b.writeString(">=") + case OperatorIn: + b.writeString(" IN ") + case OperatorNin: + b.writeString(" NOT IN ") + case OperatorIlike: + b.writeString(" ILIKE ") + case OperatorNilike: + b.writeString(" NOT ILIKE ") + default: + return fmt.Errorf("invalid binary condition operator %q", op) + } + + err = b.writeWrappedExpression(right) + if err != nil { + return err + } + + return nil +} + +func (b exprStrBuilder) writeWrappedExpression(e *Expression) error { + if e.Condition != nil { + b.writeByte('(') + } + err := b.writeExpression(e) + if err != nil { + return err + } + if e.Condition != nil { + b.writeByte(')') + } + return nil +} + +func (b exprStrBuilder) writeByte(v byte) { + _ = b.WriteByte(v) +} + +func (b exprStrBuilder) writeString(s string) { + _, _ = b.WriteString(s) +} diff --git a/runtime/metricsview/query_expression_pb.go b/runtime/metricsview/query_expression_pb.go new file mode 100644 index 00000000000..ff49e604c54 --- /dev/null +++ b/runtime/metricsview/query_expression_pb.go @@ -0,0 +1,72 @@ +package metricsview + +import runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + +func NewExpressionFromProto(expr *runtimev1.Expression) *Expression { + if expr == nil { + return nil + } + + res := &Expression{} + + switch e := expr.Expression.(type) { + case *runtimev1.Expression_Ident: + res.Name = e.Ident + case *runtimev1.Expression_Val: + res.Value = e.Val.AsInterface() + case *runtimev1.Expression_Cond: + var op Operator + switch e.Cond.Op { + case runtimev1.Operation_OPERATION_UNSPECIFIED: + op = OperatorUnspecified + case runtimev1.Operation_OPERATION_EQ: + op = OperatorEq + case runtimev1.Operation_OPERATION_NEQ: + op = OperatorNeq + case runtimev1.Operation_OPERATION_LT: + op = OperatorLt + case runtimev1.Operation_OPERATION_LTE: + op = OperatorLte + case runtimev1.Operation_OPERATION_GT: + op = OperatorGt + case runtimev1.Operation_OPERATION_GTE: + op = OperatorGte + case runtimev1.Operation_OPERATION_OR: + op = OperatorOr + case runtimev1.Operation_OPERATION_AND: + op = OperatorAnd + case runtimev1.Operation_OPERATION_IN: + op = OperatorIn + case runtimev1.Operation_OPERATION_NIN: + op = OperatorNin + case runtimev1.Operation_OPERATION_LIKE: + op = OperatorIlike + case runtimev1.Operation_OPERATION_NLIKE: + op = OperatorNilike + } + + exprs := make([]*Expression, 0, len(e.Cond.Exprs)) + for _, e := range e.Cond.Exprs { + exprs = append(exprs, NewExpressionFromProto(e)) + } + + res.Condition = &Condition{ + Operator: op, + Expressions: exprs, + } + case *runtimev1.Expression_Subquery: + measures := make([]Measure, 0, len(e.Subquery.Measures)) + for _, m := range e.Subquery.Measures { + measures = append(measures, Measure{Name: m}) + } + + res.Subquery = &Subquery{ + Dimension: Dimension{Name: e.Subquery.Dimension}, + Measures: measures, + Where: NewExpressionFromProto(e.Subquery.Where), + Having: NewExpressionFromProto(e.Subquery.Having), + } + } + + return res +} diff --git a/runtime/metricsview/query_expression_sql.go.txt b/runtime/metricsview/query_expression_sql.go.txt new file mode 100644 index 00000000000..4ab82423432 --- /dev/null +++ b/runtime/metricsview/query_expression_sql.go.txt @@ -0,0 +1,152 @@ +// nolint: govet +package metricsview + +import ( + "github.com/alecthomas/kong" + "github.com/alecthomas/participle/v2" + "github.com/alecthomas/participle/v2/lexer" + "github.com/alecthomas/repr" +) + +// func NewExpressionFromString(s string) (*Expression, error) { + +// } + +type Expression struct { + Or []*OrCondition `@@ ( "OR" @@ )*` +} + +type OrCondition struct { + And []*Condition `@@ ( "AND" @@ )*` +} + +type Condition struct { + Operand *ConditionOperand ` @@` + Not *Condition `| "NOT" @@` + Exists *Select `| "EXISTS" "(" @@ ")"` +} + +type ConditionOperand struct { + Operand *Operand `@@` + ConditionRHS *ConditionRHS `@@?` +} + +type ConditionRHS struct { + Compare *Compare ` @@` + Is *Is `| "IS" @@` + Between *Between `| "BETWEEN" @@` + In *In `| "IN" "(" @@ ")"` + Like *Like `| "LIKE" @@` +} + +type Compare struct { + Operator string `@( "<>" | "<=" | ">=" | "=" | "<" | ">" | "!=" )` + Operand *Operand `( @@` + Select *CompareSelect ` | @@ )` +} + +type CompareSelect struct { + All bool `( @"ALL"` + Any bool ` | @"ANY"` + Some bool ` | @"SOME" )` + Select *Select `"(" @@ ")"` +} + +type Like struct { + Not bool `[ @"NOT" ]` + Operand *Operand `@@` +} + +type Is struct { + Not bool `[ @"NOT" ]` + Null bool `( @"NULL"` + DistinctFrom *Operand ` | "DISTINCT" "FROM" @@ )` +} + +type Between struct { + Start *Operand `@@` + End *Operand `"AND" @@` +} + +type In struct { + Select *Select ` @@` + Expressions []*Expression `| @@ ( "," @@ )*` +} + +type Operand struct { + Summand []*Summand `@@ ( "|" "|" @@ )*` +} + +type Summand struct { + LHS *Factor `@@` + Op string `[ @("+" | "-")` + RHS *Factor ` @@ ]` +} + +type Factor struct { + LHS *Term `@@` + Op string `( @("*" | "/" | "%")` + RHS *Term ` @@ )?` +} + +type Term struct { + Select *Select ` @@` + Value *Value `| @@` + SymbolRef *SymbolRef `| @@` + SubExpression *Expression `| "(" @@ ")"` +} + +type SymbolRef struct { + Symbol string `@Ident @( "." Ident )*` + Parameters []*Expression `( "(" @@ ( "," @@ )* ")" )?` +} + +type Value struct { + Wildcard bool `( @"*"` + Number *float64 ` | @Number` + String *string ` | @String` + Boolean *Boolean ` | @("TRUE" | "FALSE")` + Null bool ` | @"NULL"` + Array *Array ` | @@ )` +} + +type Boolean bool + +func (b *Boolean) Capture(values []string) error { + *b = values[0] == "TRUE" + return nil +} + +type Array struct { + Expressions []*Expression `"(" @@ ( "," @@ )* ")"` +} + +var ( + cli struct { + SQL string `arg:"" required:"" help:"SQL to parse."` + } + + sqlLexer = lexer.MustSimple([]lexer.SimpleRule{ + {`Keyword`, `(?i)\b(SELECT|FROM|TOP|DISTINCT|ALL|WHERE|GROUP|BY|HAVING|UNION|MINUS|EXCEPT|INTERSECT|ORDER|LIMIT|OFFSET|TRUE|FALSE|NULL|IS|NOT|ANY|SOME|BETWEEN|AND|OR|LIKE|AS|IN)\b`}, + {`Ident`, `[a-zA-Z_][a-zA-Z0-9_]*`}, + {`Number`, `[-+]?\d*\.?\d+([eE][-+]?\d+)?`}, + {`String`, `'[^']*'|"[^"]*"`}, + {`Operators`, `<>|!=|<=|>=|[-+*/%,.()=<>]`}, + {"whitespace", `\s+`}, + }) + parser = participle.MustBuild[Select]( + participle.Lexer(sqlLexer), + participle.Unquote("String"), + participle.CaseInsensitive("Keyword"), + // participle.Elide("Comment"), + // Need to solve left recursion detection first, if possible. + // participle.UseLookahead(), + ) +) + +func main() { + ctx := kong.Parse(&cli) + sql, err := parser.ParseString("", cli.SQL) + repr.Println(sql, repr.Indent(" "), repr.OmitEmpty(true)) + ctx.FatalIfErrorf(err) +} diff --git a/runtime/metricsview/query_expression_test.go b/runtime/metricsview/query_expression_test.go new file mode 100644 index 00000000000..ebfbe15cb95 --- /dev/null +++ b/runtime/metricsview/query_expression_test.go @@ -0,0 +1,105 @@ +package metricsview + +import "testing" + +func TestExpressionToString(t *testing.T) { + tests := []struct { + name string + e *Expression + want string + wantErr bool + }{ + { + name: "empty expression", + e: nil, + want: "", + }, + { + name: "name expression", + e: &Expression{Name: "foo"}, + want: "foo", + }, + { + name: "value expression", + e: &Expression{Value: 42}, + want: "42", + }, + { + name: "subquery expression", + e: &Expression{Subquery: &Subquery{}}, + want: "", + }, + { + name: "condition expression", + e: &Expression{ + Condition: &Condition{ + Operator: OperatorEq, + Expressions: []*Expression{ + {Name: "foo"}, + {Value: 42}, + }, + }, + }, + want: "foo=42", + }, + { + name: "and expression", + e: &Expression{ + Condition: &Condition{ + Operator: OperatorAnd, + Expressions: []*Expression{ + {Name: "foo"}, + {Name: "bar"}, + }, + }, + }, + want: "foo AND bar", + }, + { + name: "and or expression", + e: &Expression{ + Condition: &Condition{ + Operator: OperatorAnd, + Expressions: []*Expression{ + {Name: "foo"}, + { + Condition: &Condition{ + Operator: OperatorOr, + Expressions: []*Expression{ + {Name: "bar"}, + {Name: "baz"}, + }, + }, + }, + }, + }, + }, + want: "foo AND (bar OR baz)", + }, + { + name: "in expression", + e: &Expression{ + Condition: &Condition{ + Operator: OperatorIn, + Expressions: []*Expression{ + {Name: "foo"}, + {Value: []int{1, 2, 3}}, + }, + }, + }, + want: "foo IN [1,2,3]", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := ExpressionToString(tt.e) + if err != nil { + t.Errorf("ExpressionToString: got error: %v, want nil", err) + return + } + if got != tt.want { + t.Errorf("ExpressionToString: got %q, want %q", got, tt.want) + } + }) + } +} diff --git a/runtime/pkg/duckdbsql/expression.go b/runtime/pkg/duckdbsql/expression.go index 218d4ec60d6..528e0a7e8d0 100644 --- a/runtime/pkg/duckdbsql/expression.go +++ b/runtime/pkg/duckdbsql/expression.go @@ -3,8 +3,14 @@ package duckdbsql import ( "errors" "fmt" + "strings" ) +// EscapeStringValue escapes a string value for use in an expression passed to EvaluateBool. +func EscapeStringValue(s string) string { + return fmt.Sprintf("'%s'", strings.ReplaceAll(s, "'", "''")) +} + // EvaluateBool uses DuckDB to evaluate the given expression as a boolean value. func EvaluateBool(expr string) (bool, error) { // NOTE: Doing type check in SQL instead of in Go to protect against expressions that return huge values. diff --git a/runtime/pkg/metricssql/parser.go b/runtime/pkg/metricssql/parser.go index 9c6764eba26..7eac884827d 100644 --- a/runtime/pkg/metricssql/parser.go +++ b/runtime/pkg/metricssql/parser.go @@ -33,6 +33,7 @@ type Compiler struct { controller *runtime.Controller instanceID string userAttributes map[string]any + securityPolicy *runtimev1.MetricsViewSpec_SecurityV2 // Optional additional security policy to apply priority int } @@ -76,6 +77,7 @@ func (c *Compiler) Compile(ctx context.Context, sql string) (string, string, []* controller: c.controller, instanceID: c.instanceID, userAttributes: c.userAttributes, + securityPolicy: c.securityPolicy, priority: c.priority, } compiledSQL, err := t.transformSelectStmt(ctx, stmt) @@ -90,6 +92,7 @@ type transformer struct { controller *runtime.Controller instanceID string userAttributes map[string]any + securityPolicy *runtimev1.MetricsViewSpec_SecurityV2 metricsView *runtimev1.MetricsViewV2 refs []*runtimev1.ResourceName @@ -699,7 +702,7 @@ func (t *transformer) fromQueryForMetricsView(ctx context.Context, mv *runtimev1 defer release() dialect := olap.Dialect() - security, err := t.controller.Runtime.ResolveMetricsViewSecurity(t.userAttributes, t.instanceID, spec, mv.Meta.StateUpdatedOn.AsTime()) + security, err := t.controller.Runtime.ResolveMetricsViewSecurity(t.instanceID, t.userAttributes, mv, spec.Security, t.securityPolicy) if err != nil { return "", err } diff --git a/runtime/queries/metricsview.go b/runtime/queries/metricsview.go index 1424836322f..1f475e22a3f 100644 --- a/runtime/queries/metricsview.go +++ b/runtime/queries/metricsview.go @@ -9,7 +9,6 @@ import ( "os" "path/filepath" "strings" - "time" "github.com/apache/arrow/go/v14/arrow" "github.com/apache/arrow/go/v14/arrow/array" @@ -19,7 +18,6 @@ import ( runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime" "github.com/rilldata/rill/runtime/drivers" - "github.com/rilldata/rill/runtime/metricsview" "github.com/rilldata/rill/runtime/pkg/expressionpb" "github.com/rilldata/rill/runtime/pkg/pbutil" "github.com/xuri/excelize/v2" @@ -32,13 +30,13 @@ import ( var ErrForbidden = errors.New("action not allowed") // resolveMVAndSecurityFromAttributes resolves the metrics view and security policy from the attributes -func resolveMVAndSecurityFromAttributes(ctx context.Context, rt *runtime.Runtime, instanceID, metricsViewName string, attrs map[string]any, dims []*runtimev1.MetricsViewAggregationDimension, measures []*runtimev1.MetricsViewAggregationMeasure) (*runtimev1.MetricsViewSpec, *runtime.ResolvedMetricsViewSecurity, error) { - mv, lastUpdatedOn, err := lookupMetricsView(ctx, rt, instanceID, metricsViewName) +func resolveMVAndSecurityFromAttributes(ctx context.Context, rt *runtime.Runtime, instanceID, metricsViewName string, attrs map[string]any, policy *runtimev1.MetricsViewSpec_SecurityV2, dims []*runtimev1.MetricsViewAggregationDimension, measures []*runtimev1.MetricsViewAggregationMeasure) (*runtimev1.MetricsViewSpec, *runtime.ResolvedMetricsViewSecurity, error) { + res, mv, err := lookupMetricsView(ctx, rt, instanceID, metricsViewName) if err != nil { return nil, nil, err } - resolvedSecurity, err := rt.ResolveMetricsViewSecurity(attrs, instanceID, mv, lastUpdatedOn) + resolvedSecurity, err := rt.ResolveMetricsViewSecurity(instanceID, attrs, res, mv.Security, policy) if err != nil { return nil, nil, err } @@ -70,24 +68,24 @@ func resolveMVAndSecurityFromAttributes(ctx context.Context, rt *runtime.Runtime } // returns the metrics view and the time the catalog was last updated -func lookupMetricsView(ctx context.Context, rt *runtime.Runtime, instanceID, name string) (*runtimev1.MetricsViewSpec, time.Time, error) { +func lookupMetricsView(ctx context.Context, rt *runtime.Runtime, instanceID, name string) (*runtimev1.Resource, *runtimev1.MetricsViewSpec, error) { ctrl, err := rt.Controller(ctx, instanceID) if err != nil { - return nil, time.Time{}, status.Error(codes.InvalidArgument, err.Error()) + return nil, nil, status.Error(codes.InvalidArgument, err.Error()) } res, err := ctrl.Get(ctx, &runtimev1.ResourceName{Kind: runtime.ResourceKindMetricsView, Name: name}, false) if err != nil { - return nil, time.Time{}, status.Error(codes.InvalidArgument, err.Error()) + return nil, nil, status.Error(codes.InvalidArgument, err.Error()) } mv := res.GetMetricsView() spec := mv.State.ValidSpec if spec == nil { - return nil, time.Time{}, status.Errorf(codes.InvalidArgument, "metrics view %q is invalid", name) + return nil, nil, status.Errorf(codes.InvalidArgument, "metrics view %q is invalid", name) } - return spec, res.Meta.StateUpdatedOn.AsTime(), nil + return res, spec, nil } func checkFieldAccess(field string, policy *runtime.ResolvedMetricsViewSecurity) bool { @@ -892,72 +890,3 @@ func (q *MetricsViewRows) generateFilename(mv *runtimev1.MetricsViewSpec) string } return filename } - -func rewriteToMetricsResolverExpression(expr *runtimev1.Expression) *metricsview.Expression { - if expr == nil { - return nil - } - - res := &metricsview.Expression{} - - switch e := expr.Expression.(type) { - case *runtimev1.Expression_Ident: - res.Name = e.Ident - case *runtimev1.Expression_Val: - res.Value = e.Val.AsInterface() - case *runtimev1.Expression_Cond: - var op metricsview.Operator - switch e.Cond.Op { - case runtimev1.Operation_OPERATION_UNSPECIFIED: - op = metricsview.OperatorUnspecified - case runtimev1.Operation_OPERATION_EQ: - op = metricsview.OperatorEq - case runtimev1.Operation_OPERATION_NEQ: - op = metricsview.OperatorNeq - case runtimev1.Operation_OPERATION_LT: - op = metricsview.OperatorLt - case runtimev1.Operation_OPERATION_LTE: - op = metricsview.OperatorLte - case runtimev1.Operation_OPERATION_GT: - op = metricsview.OperatorGt - case runtimev1.Operation_OPERATION_GTE: - op = metricsview.OperatorGte - case runtimev1.Operation_OPERATION_OR: - op = metricsview.OperatorOr - case runtimev1.Operation_OPERATION_AND: - op = metricsview.OperatorAnd - case runtimev1.Operation_OPERATION_IN: - op = metricsview.OperatorIn - case runtimev1.Operation_OPERATION_NIN: - op = metricsview.OperatorNin - case runtimev1.Operation_OPERATION_LIKE: - op = metricsview.OperatorIlike - case runtimev1.Operation_OPERATION_NLIKE: - op = metricsview.OperatorNilike - } - - exprs := make([]*metricsview.Expression, 0, len(e.Cond.Exprs)) - for _, e := range e.Cond.Exprs { - exprs = append(exprs, rewriteToMetricsResolverExpression(e)) - } - - res.Condition = &metricsview.Condition{ - Operator: op, - Expressions: exprs, - } - case *runtimev1.Expression_Subquery: - measures := make([]metricsview.Measure, 0, len(e.Subquery.Measures)) - for _, m := range e.Subquery.Measures { - measures = append(measures, metricsview.Measure{Name: m}) - } - - res.Subquery = &metricsview.Subquery{ - Dimension: metricsview.Dimension{Name: e.Subquery.Dimension}, - Measures: measures, - Where: rewriteToMetricsResolverExpression(e.Subquery.Where), - Having: rewriteToMetricsResolverExpression(e.Subquery.Having), - } - } - - return res -} diff --git a/runtime/queries/metricsview_aggregation.go b/runtime/queries/metricsview_aggregation.go index caecf75e3f7..447fa346b2e 100644 --- a/runtime/queries/metricsview_aggregation.go +++ b/runtime/queries/metricsview_aggregation.go @@ -40,6 +40,7 @@ type MetricsViewAggregation struct { Offset int64 `json:"offset,omitempty"` PivotOn []string `json:"pivot_on,omitempty"` SecurityAttributes map[string]any `json:"security_attributes,omitempty"` + SecurityPolicy *runtimev1.MetricsViewSpec_SecurityV2 `json:"security_policy,omitempty"` Aliases []*runtimev1.MetricsViewComparisonMeasureAlias `json:"aliases,omitempty"` Exact bool `json:"exact,omitempty"` @@ -82,7 +83,7 @@ func (q *MetricsViewAggregation) UnmarshalResult(v any) error { func (q *MetricsViewAggregation) Resolve(ctx context.Context, rt *runtime.Runtime, instanceID string, priority int) error { // Resolve metrics view - mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.Dimensions, q.Measures) + mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.SecurityPolicy, q.Dimensions, q.Measures) if err != nil { return err } @@ -814,7 +815,7 @@ func (q *MetricsViewAggregation) Export(ctx context.Context, rt *runtime.Runtime } // Resolve metrics view - mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.Dimensions, q.Measures) + mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.SecurityPolicy, q.Dimensions, q.Measures) if err != nil { return err } @@ -3076,11 +3077,11 @@ func (q *MetricsViewAggregation) rewriteToMetricsViewQuery(mv *runtimev1.Metrics } if q.Where != nil { - qry.Where = rewriteToMetricsResolverExpression(q.Where) + qry.Where = metricsview.NewExpressionFromProto(q.Where) } if q.Having != nil { - qry.Having = rewriteToMetricsResolverExpression(q.Having) + qry.Having = metricsview.NewExpressionFromProto(q.Having) } if q.Limit != nil { diff --git a/runtime/queries/metricsview_comparison_toplist.go b/runtime/queries/metricsview_comparison_toplist.go index f6a3639d4d7..4858e6a650d 100644 --- a/runtime/queries/metricsview_comparison_toplist.go +++ b/runtime/queries/metricsview_comparison_toplist.go @@ -34,6 +34,7 @@ type MetricsViewComparison struct { Aliases []*runtimev1.MetricsViewComparisonMeasureAlias `json:"aliases,omitempty"` Exact bool `json:"exact"` SecurityAttributes map[string]any `json:"security_attributes,omitempty"` + SecurityPolicy *runtimev1.MetricsViewSpec_SecurityV2 `json:"security_policy,omitempty"` Result *runtimev1.MetricsViewComparisonResponse `json:"-"` @@ -81,7 +82,7 @@ func (q *MetricsViewComparison) UnmarshalResult(v any) error { func (q *MetricsViewComparison) Resolve(ctx context.Context, rt *runtime.Runtime, instanceID string, priority int) error { // Resolve metrics view - mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, []*runtimev1.MetricsViewAggregationDimension{{Name: q.DimensionName}}, q.Measures) + mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.SecurityPolicy, []*runtimev1.MetricsViewAggregationDimension{{Name: q.DimensionName}}, q.Measures) if err != nil { return err } @@ -1078,7 +1079,7 @@ func (q *MetricsViewComparison) buildMetricsComparisonTopListSQL(mv *runtimev1.M func (q *MetricsViewComparison) Export(ctx context.Context, rt *runtime.Runtime, instanceID string, w io.Writer, opts *runtime.ExportOptions) error { // Resolve metrics view - mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, []*runtimev1.MetricsViewAggregationDimension{{Name: q.DimensionName}}, q.Measures) + mv, security, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.SecurityPolicy, []*runtimev1.MetricsViewAggregationDimension{{Name: q.DimensionName}}, q.Measures) if err != nil { return err } diff --git a/runtime/queries/metricsview_schema.go b/runtime/queries/metricsview_schema.go index 656d0da966e..ffcd726643d 100644 --- a/runtime/queries/metricsview_schema.go +++ b/runtime/queries/metricsview_schema.go @@ -2,6 +2,7 @@ package queries import ( "context" + "encoding/json" "fmt" "io" @@ -11,8 +12,9 @@ import ( ) type MetricsViewSchema struct { - MetricsViewName string `json:"metrics_view_name,omitempty"` - SecurityAttributes map[string]any `json:"security_attributes,omitempty"` + MetricsViewName string `json:"metrics_view_name,omitempty"` + SecurityAttributes map[string]any `json:"security_attributes,omitempty"` + SecurityPolicy *runtimev1.MetricsViewSpec_SecurityV2 `json:"security_policy,omitempty"` Result *runtimev1.MetricsViewSchemaResponse `json:"-"` } @@ -20,7 +22,11 @@ type MetricsViewSchema struct { var _ runtime.Query = &MetricsViewSchema{} func (q *MetricsViewSchema) Key() string { - return fmt.Sprintf("MetricsViewSchema:%s", q.MetricsViewName) + r, err := json.Marshal(q) + if err != nil { + panic(err) + } + return fmt.Sprintf("MetricsViewSchema:%s", string(r)) } func (q *MetricsViewSchema) Deps() []*runtimev1.ResourceName { @@ -47,7 +53,7 @@ func (q *MetricsViewSchema) UnmarshalResult(v any) error { func (q *MetricsViewSchema) Resolve(ctx context.Context, rt *runtime.Runtime, instanceID string, priority int) error { // Resolve metrics view - mv, _, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, nil, nil) + mv, _, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.SecurityPolicy, nil, nil) if err != nil { return err } diff --git a/runtime/queries/metricsview_search.go b/runtime/queries/metricsview_search.go index e027695cffb..6fd933d9164 100644 --- a/runtime/queries/metricsview_search.go +++ b/runtime/queries/metricsview_search.go @@ -19,15 +19,16 @@ import ( ) type MetricsViewSearch struct { - MetricsViewName string `json:"metrics_view_name,omitempty"` - Dimensions []string `json:"dimensions,omitempty"` - Search string `json:"search,omitempty"` - TimeRange *runtimev1.TimeRange `json:"time_range,omitempty"` - Where *runtimev1.Expression `json:"where,omitempty"` - Having *runtimev1.Expression `json:"having,omitempty"` - Priority int32 `json:"priority,omitempty"` - Limit *int64 `json:"limit,omitempty"` - SecurityAttributes map[string]any `json:"security_attributes,omitempty"` + MetricsViewName string `json:"metrics_view_name,omitempty"` + Dimensions []string `json:"dimensions,omitempty"` + Search string `json:"search,omitempty"` + TimeRange *runtimev1.TimeRange `json:"time_range,omitempty"` + Where *runtimev1.Expression `json:"where,omitempty"` + Having *runtimev1.Expression `json:"having,omitempty"` + Priority int32 `json:"priority,omitempty"` + Limit *int64 `json:"limit,omitempty"` + SecurityAttributes map[string]any `json:"security_attributes,omitempty"` + SecurityPolicy *runtimev1.MetricsViewSpec_SecurityV2 `json:"security_policy,omitempty"` Result *runtimev1.MetricsViewSearchResponse } @@ -63,19 +64,12 @@ func (q *MetricsViewSearch) UnmarshalResult(v any) error { } func (q *MetricsViewSearch) Resolve(ctx context.Context, rt *runtime.Runtime, instanceID string, priority int) error { - mv, lastUpdatedOn, err := lookupMetricsView(ctx, rt, instanceID, q.MetricsViewName) + mv, sec, err := resolveMVAndSecurityFromAttributes(ctx, rt, instanceID, q.MetricsViewName, q.SecurityAttributes, q.SecurityPolicy, nil, nil) if err != nil { return err } - resolvedSecurity, err := rt.ResolveMetricsViewSecurity(q.SecurityAttributes, instanceID, mv, lastUpdatedOn) - if err != nil { - return err - } - if resolvedSecurity != nil && !resolvedSecurity.Access { - return ErrForbidden - } for _, d := range q.Dimensions { - if !checkFieldAccess(d, resolvedSecurity) { + if !checkFieldAccess(d, sec) { return ErrForbidden } } @@ -106,13 +100,13 @@ func (q *MetricsViewSearch) Resolve(ctx context.Context, rt *runtime.Runtime, in } if olap.Dialect() == drivers.DialectDruid { - ok, err := q.executeSearchInDruid(ctx, rt, olap, instanceID, mv.Table, resolvedSecurity) + ok, err := q.executeSearchInDruid(ctx, rt, olap, instanceID, mv.Table, sec) if err != nil || ok { return err } } - sql, args, err := q.buildSearchQuerySQL(mv, olap.Dialect(), resolvedSecurity) + sql, args, err := q.buildSearchQuerySQL(mv, olap.Dialect(), sec) if err != nil { return err } diff --git a/runtime/queries/metricsview_timeseries.go b/runtime/queries/metricsview_timeseries.go index d6b3b121c1e..86896071a49 100644 --- a/runtime/queries/metricsview_timeseries.go +++ b/runtime/queries/metricsview_timeseries.go @@ -660,11 +660,11 @@ func (q *MetricsViewTimeSeries) rewriteToMetricsViewQuery() (*metricsview.Query, } if q.Where != nil { - qry.Where = rewriteToMetricsResolverExpression(q.Where) + qry.Where = metricsview.NewExpressionFromProto(q.Where) } if q.Having != nil { - qry.Having = rewriteToMetricsResolverExpression(q.Having) + qry.Having = metricsview.NewExpressionFromProto(q.Having) } qry.Dimensions = append(qry.Dimensions, metricsview.Dimension{ diff --git a/runtime/resolver.go b/runtime/resolver.go index 539274ca22b..138bdc997dc 100644 --- a/runtime/resolver.go +++ b/runtime/resolver.go @@ -61,6 +61,7 @@ type ResolverOptions struct { Properties map[string]any Args map[string]any UserAttributes map[string]any + Security *runtimev1.MetricsViewSpec_SecurityV2 ForExport bool } diff --git a/runtime/resolvers/metrics.go b/runtime/resolvers/metrics.go index ec6f8d03fe2..b54ab632319 100644 --- a/runtime/resolvers/metrics.go +++ b/runtime/resolvers/metrics.go @@ -59,7 +59,7 @@ func newMetrics(ctx context.Context, opts *runtime.ResolverOptions) (runtime.Res return nil, fmt.Errorf("metrics view %q is invalid", res.Meta.Name.Name) } - security, err := opts.Runtime.ResolveMetricsViewSecurity(opts.UserAttributes, opts.InstanceID, mv, res.Meta.StateUpdatedOn.AsTime()) + security, err := opts.Runtime.ResolveMetricsViewSecurity(opts.InstanceID, opts.UserAttributes, res, mv.Security, opts.Security) if err != nil { return nil, err } diff --git a/runtime/runtime.go b/runtime/runtime.go index d092fa4bdb8..2538e5680fc 100644 --- a/runtime/runtime.go +++ b/runtime/runtime.go @@ -91,12 +91,12 @@ func (r *Runtime) Close() error { return errors.Join(err1, err2) } -func (r *Runtime) ResolveMetricsViewSecurity(attributes map[string]any, instanceID string, mv *runtimev1.MetricsViewSpec, lastUpdatedOn time.Time) (*ResolvedMetricsViewSecurity, error) { +func (r *Runtime) ResolveMetricsViewSecurity(instanceID string, attributes map[string]any, mv *runtimev1.Resource, policies ...*runtimev1.MetricsViewSpec_SecurityV2) (*ResolvedMetricsViewSecurity, error) { inst, err := r.Instance(context.Background(), instanceID) if err != nil { return nil, err } - return r.securityEngine.resolveMetricsViewSecurity(instanceID, inst.Environment, mv, lastUpdatedOn, attributes) + return r.securityEngine.resolveMetricsViewSecurity(instanceID, inst.Environment, attributes, mv, policies...) } // GetInstanceAttributes fetches an instance and converts its annotations to attributes diff --git a/runtime/security.go b/runtime/security.go index 1493c2dfa35..2fa3236870a 100644 --- a/runtime/security.go +++ b/runtime/security.go @@ -7,12 +7,13 @@ import ( "errors" "fmt" "sync" - "time" "github.com/hashicorp/golang-lru/simplelru" runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/compilers/rillv1" + "github.com/rilldata/rill/runtime/pkg/expressionpb" "go.uber.org/zap" + "google.golang.org/protobuf/encoding/protojson" ) var ErrForbidden = errors.New("action not allowed") @@ -32,18 +33,20 @@ func newSecurityEngine(cacheSize int, logger *zap.Logger) *securityEngine { } var openAccess = &ResolvedMetricsViewSecurity{ - Access: true, - RowFilter: "", - Include: nil, - Exclude: nil, + Access: true, + RowFilter: "", + QueryFilter: nil, + Include: nil, + Exclude: nil, } type ResolvedMetricsViewSecurity struct { - Access bool - RowFilter string - Include []string - Exclude []string - ExcludeAll bool + Access bool + RowFilter string + QueryFilter *runtimev1.Expression + Include []string + Exclude []string + ExcludeAll bool } func (r *ResolvedMetricsViewSecurity) CanAccessField(field string) bool { @@ -80,17 +83,17 @@ func (r *ResolvedMetricsViewSecurity) CanAccessField(field string) bool { return true } -func computeCacheKey(instanceID string, mv *runtimev1.MetricsViewSpec, lastUpdatedOn time.Time, attributes map[string]any) (string, error) { +func computeCacheKey(instanceID string, r *runtimev1.Resource, attributes map[string]any, policies ...*runtimev1.MetricsViewSpec_SecurityV2) (string, error) { hash := md5.New() _, err := hash.Write([]byte(instanceID)) if err != nil { return "", err } - _, err = hash.Write([]byte(mv.Table)) + _, err = hash.Write([]byte(r.Meta.Name.Name)) if err != nil { return "", err } - _, err = hash.Write([]byte(lastUpdatedOn.String())) + _, err = hash.Write([]byte(r.Meta.StateUpdatedOn.AsTime().String())) if err != nil { return "", err } @@ -115,11 +118,32 @@ func computeCacheKey(instanceID string, mv *runtimev1.MetricsViewSpec, lastUpdat } } } + for _, p := range policies { + if p == nil { + continue + } + res, err := protojson.Marshal(p) + if err != nil { + return "", err + } + _, err = hash.Write(res) + if err != nil { + return "", err + } + } return hex.EncodeToString(hash.Sum(nil)), nil } -func (p *securityEngine) resolveMetricsViewSecurity(instanceID, environment string, mv *runtimev1.MetricsViewSpec, lastUpdatedOn time.Time, attributes map[string]any) (*ResolvedMetricsViewSecurity, error) { - if mv.Security == nil { +func (p *securityEngine) resolveMetricsViewSecurity(instanceID, environment string, attributes map[string]any, mv *runtimev1.Resource, policies ...*runtimev1.MetricsViewSpec_SecurityV2) (*ResolvedMetricsViewSecurity, error) { + // Exit early if all policies are nil + var validPolicy bool + for _, policy := range policies { + if policy != nil { + validPolicy = true + break + } + } + if !validPolicy { return nil, nil } @@ -129,7 +153,7 @@ func (p *securityEngine) resolveMetricsViewSecurity(instanceID, environment stri return openAccess, nil } - cacheKey, err := computeCacheKey(instanceID, mv, lastUpdatedOn, attributes) + cacheKey, err := computeCacheKey(instanceID, mv, attributes, policies...) if err != nil { return nil, fmt.Errorf("failed to compute cache key: %w", err) } @@ -142,78 +166,172 @@ func (p *securityEngine) resolveMetricsViewSecurity(instanceID, environment stri return cached.(*ResolvedMetricsViewSecurity), nil } - resolved := &ResolvedMetricsViewSecurity{} + resolved := &ResolvedMetricsViewSecurity{Access: true} templateData := rillv1.TemplateData{ Environment: environment, User: attributes, + Self: rillv1.TemplateResource{Meta: mv.Meta}, } - if mv.Security.Access != "" { - access, err := rillv1.ResolveTemplate(mv.Security.Access, templateData) - if err != nil { - return nil, err + for _, policy := range policies { + if policy == nil { + continue } - resolved.Access, err = rillv1.EvaluateBoolExpression(access) - if err != nil { - return nil, err + + if policy.Access != "" { + accessExpr, err := rillv1.ResolveTemplate(policy.Access, templateData) + if err != nil { + return nil, err + } + access, err := rillv1.EvaluateBoolExpression(accessExpr) + if err != nil { + return nil, err + } + + resolved.Access = resolved.Access && access + } else { + resolved.Access = false } - } - if mv.Security.RowFilter != "" { - filter, err := rillv1.ResolveTemplate(mv.Security.RowFilter, templateData) - if err != nil { - return nil, err + if policy.RowFilter != "" { + filter, err := rillv1.ResolveTemplate(policy.RowFilter, templateData) + if err != nil { + return nil, err + } + + if resolved.RowFilter == "" { + resolved.RowFilter = filter + } else { + resolved.RowFilter = fmt.Sprintf("(%s) AND (%s)", resolved.RowFilter, filter) + } } - resolved.RowFilter = filter - } - seen := map[string]bool{} + if policy.QueryFilter != nil { + if resolved.QueryFilter == nil { + resolved.QueryFilter = policy.QueryFilter + } else { + resolved.QueryFilter = expressionpb.And([]*runtimev1.Expression{resolved.QueryFilter, policy.QueryFilter}) + } + } - for _, inc := range mv.Security.Include { - cond, err := rillv1.ResolveTemplate(inc.Condition, templateData) - if err != nil { - return nil, err + var include, exclude []string + var excludeAll bool + seen := map[string]bool{} + + for _, inc := range policy.Include { + cond, err := rillv1.ResolveTemplate(inc.Condition, templateData) + if err != nil { + return nil, err + } + incCond, err := rillv1.EvaluateBoolExpression(cond) + if err != nil { + return nil, err + } + if incCond { + for _, name := range inc.Names { + if seen[name] { + continue + } + seen[name] = true + include = append(include, name) + } + } } - incCond, err := rillv1.EvaluateBoolExpression(cond) - if err != nil { - return nil, err + + // this is to handle the case where include filter was present but none of them evaluted to true + if len(policy.Include) > 0 && len(include) == 0 { + excludeAll = true } - if incCond { - for _, name := range inc.Names { - if seen[name] { - continue + + for _, exc := range policy.Exclude { + cond, err := rillv1.ResolveTemplate(exc.Condition, templateData) + if err != nil { + return nil, err + } + excCond, err := rillv1.EvaluateBoolExpression(cond) + if err != nil { + return nil, err + } + if excCond { + for _, name := range exc.Names { + if seen[name] { + continue + } + seen[name] = true + exclude = append(exclude, name) } - seen[name] = true - resolved.Include = append(resolved.Include, name) } } + + // Merge into resolved + mergeIncludeExcludes(resolved, include, exclude, excludeAll) + } + + p.cache.Add(cacheKey, resolved) + return resolved, nil +} + +func mergeIncludeExcludes(resolved *ResolvedMetricsViewSecurity, include, exclude []string, excludeAll bool) { + if resolved.ExcludeAll { + return } - // this is to handle the case where include filter was present but none of them evaluted to true - if len(mv.Security.Include) > 0 && len(resolved.Include) == 0 { + if excludeAll { + resolved.Include = nil + resolved.Exclude = nil resolved.ExcludeAll = true + return } - for _, exc := range mv.Security.Exclude { - cond, err := rillv1.ResolveTemplate(exc.Condition, templateData) - if err != nil { - return nil, err + if len(resolved.Include) == 0 && len(resolved.Exclude) == 0 { + resolved.Include = include + resolved.Exclude = exclude + return + } + + if len(resolved.Include) == 0 && len(include) == 0 { + resolved.Exclude = append(resolved.Exclude, exclude...) + return + } + + // Build a new include list that is the intersection of resolved.Include and include, minus any fields in exclude. + var newInclude []string + for _, f := range include { + // Check it's also in resolved.Include + found := false + for _, f2 := range resolved.Include { + if f == f2 { + found = true + break + } } - excCond, err := rillv1.EvaluateBoolExpression(cond) - if err != nil { - return nil, err + if !found { + continue } - if excCond { - for _, name := range exc.Names { - if seen[name] { - continue - } - seen[name] = true - resolved.Exclude = append(resolved.Exclude, name) + + // Check it's not in resolved.Exclude + found = false + for _, f2 := range resolved.Exclude { + if f == f2 { + found = true + break } } + if found { + continue + } + + // Can add to newInclude + newInclude = append(newInclude, f) } - p.cache.Add(cacheKey, resolved) - return resolved, nil + // If newInclude is empty, exclude all fields + if len(newInclude) == 0 { + resolved.Include = nil + resolved.Exclude = nil + resolved.ExcludeAll = true + } else { + resolved.Include = newInclude + resolved.Exclude = nil + } } diff --git a/runtime/security_test.go b/runtime/security_test.go index 9acf5dee529..46fe0da21e9 100644 --- a/runtime/security_test.go +++ b/runtime/security_test.go @@ -4,10 +4,10 @@ import ( "reflect" "strings" "testing" - "time" runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "go.uber.org/zap" + "google.golang.org/protobuf/types/known/timestamppb" ) func TestResolveMetricsView(t *testing.T) { @@ -537,8 +537,16 @@ func TestResolveMetricsView(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + r := &runtimev1.Resource{Meta: &runtimev1.ResourceMeta{ + Name: &runtimev1.ResourceName{ + Kind: ResourceKindMetricsView, + Name: "test", + }, + StateUpdatedOn: timestamppb.Now(), + }} + p := newSecurityEngine(1, zap.NewNop()) - got, err := p.resolveMetricsViewSecurity("", "test", tt.args.mv, time.Now(), tt.args.attr) + got, err := p.resolveMetricsViewSecurity("", "test", tt.args.attr, r, tt.args.mv.Security) if tt.wantErr { if err == nil || !strings.Contains(err.Error(), tt.errMsgContains) { t.Errorf("ResolveMetricsViewSecurity() error = %v, wantErr %v", err, tt.wantErr) diff --git a/runtime/server/auth/claims.go b/runtime/server/auth/claims.go index 630bd36f084..0571ef6ed11 100644 --- a/runtime/server/auth/claims.go +++ b/runtime/server/auth/claims.go @@ -1,7 +1,11 @@ package auth import ( + "encoding/json" + "github.com/golang-jwt/jwt/v4" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "google.golang.org/protobuf/encoding/protojson" ) // Claims resolves permissions for a requester. @@ -14,6 +18,10 @@ type Claims interface { CanInstance(instanceID string, p Permission) bool // Attributes returns the token attributes used in template rendering. Attributes() map[string]any + // SecurityPolicy is an optional security policy to apply *in addition* to the security policies defined in the requested resources themselves. + // This provides a way to embed/inline additional security restrictions for a specific token. + // This option is currently leveraged by the admin service to enforce restrictions for magic auth tokens. + SecurityPolicy() *runtimev1.MetricsViewSpec_SecurityV2 } // jwtClaims implements Claims and resolve permissions based on a JWT payload. @@ -22,8 +30,11 @@ type jwtClaims struct { System []Permission `json:"sys,omitempty"` Instances map[string][]Permission `json:"ins,omitempty"` Attrs map[string]any `json:"attr,omitempty"` + Security json.RawMessage `json:"sec,omitempty"` // *runtimev1.MetricsViewSpec_SecurityV2 serialized with protojson } +var _ Claims = (*jwtClaims)(nil) + func (c *jwtClaims) Subject() string { return c.RegisteredClaims.Subject } @@ -50,10 +61,26 @@ func (c *jwtClaims) Attributes() map[string]any { return c.Attrs } +func (c jwtClaims) SecurityPolicy() *runtimev1.MetricsViewSpec_SecurityV2 { + if len(c.Security) == 0 { + return nil + } + + sec := &runtimev1.MetricsViewSpec_SecurityV2{} + err := protojson.Unmarshal(c.Security, sec) + if err != nil { + panic(err) + } + + return sec +} + // openClaims implements Claims and allows all actions. // It is used for servers with auth disabled. type openClaims struct{} +var _ Claims = (*openClaims)(nil) + func (c openClaims) Subject() string { return "" } @@ -70,10 +97,16 @@ func (c openClaims) Attributes() map[string]any { return nil } +func (c openClaims) SecurityPolicy() *runtimev1.MetricsViewSpec_SecurityV2 { + return nil +} + // anonClaims implements Claims with no permissions. // It is used for unauthorized requests when auth is enabled. type anonClaims struct{} +var _ Claims = (*anonClaims)(nil) + func (c anonClaims) Subject() string { return "" } @@ -90,6 +123,10 @@ func (c anonClaims) Attributes() map[string]any { return nil } +func (c anonClaims) SecurityPolicy() *runtimev1.MetricsViewSpec_SecurityV2 { + return nil +} + // devJWTClaims implements Claims and allows all actions but have user attributes for access policies. // It is used for mimicking user attributes on local when auth is disabled. type devJWTClaims struct { @@ -97,6 +134,8 @@ type devJWTClaims struct { Attrs map[string]any `json:"attr,omitempty"` } +var _ Claims = (*devJWTClaims)(nil) + func (c devJWTClaims) Subject() string { return "" } @@ -112,3 +151,7 @@ func (c devJWTClaims) CanInstance(instanceID string, p Permission) bool { func (c devJWTClaims) Attributes() map[string]any { return c.Attrs } + +func (c devJWTClaims) SecurityPolicy() *runtimev1.MetricsViewSpec_SecurityV2 { + return nil +} diff --git a/runtime/server/auth/jwt.go b/runtime/server/auth/jwt.go index 6a9a26e9bb5..4ff3d9b0706 100644 --- a/runtime/server/auth/jwt.go +++ b/runtime/server/auth/jwt.go @@ -15,7 +15,9 @@ import ( "github.com/MicahParks/keyfunc" "github.com/go-jose/go-jose/v3" "github.com/golang-jwt/jwt/v4" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "go.uber.org/zap" + "google.golang.org/protobuf/encoding/protojson" ) // Issuer creates JWTs with claims for an Audience. @@ -112,10 +114,22 @@ type TokenOptions struct { SystemPermissions []Permission InstancePermissions map[string][]Permission Attributes map[string]any + Security *runtimev1.MetricsViewSpec_SecurityV2 } // NewToken issues a new JWT based on the provided options. func (i *Issuer) NewToken(opts TokenOptions) (string, error) { + // Since the security policy is a proto message, we need to serialize it using protojson instead of json.Marshal. + var sec json.RawMessage + if opts.Security != nil { + var err error + sec, err = protojson.Marshal(opts.Security) + if err != nil { + return "", err + } + } + + // Create claims now := time.Now() claims := &jwtClaims{ RegisteredClaims: jwt.RegisteredClaims{ @@ -129,8 +143,10 @@ func (i *Issuer) NewToken(opts TokenOptions) (string, error) { System: opts.SystemPermissions, Instances: opts.InstancePermissions, Attrs: opts.Attributes, + Security: sec, } + // Create token token := jwt.NewWithClaims(jwt.GetSigningMethod(i.signingKey.Algorithm), claims) token.Header["kid"] = i.signingKey.KeyID res, err := token.SignedString(i.signingKey.Key) @@ -182,7 +198,7 @@ func OpenAudience(ctx context.Context, logger *zap.Logger, issuerURL, audienceUR // Setup keyfunc that refreshes the JWKS in the background. // It returns an error if the initial fetch fails. So we wrap it with a retry in case the admin server is not ready. var jwks *keyfunc.JWKS - for i := 0; i < 5; i++ { + for i := 0; i < 20; i++ { jwks, err = keyfunc.Get(jwksURL, keyfunc.Options{ Ctx: ctx, RefreshErrorHandler: func(err error) { diff --git a/runtime/server/auth/permissions.go b/runtime/server/auth/permissions.go index c90c7b6643b..8fbe1b353fe 100644 --- a/runtime/server/auth/permissions.go +++ b/runtime/server/auth/permissions.go @@ -16,5 +16,5 @@ const ( ReadOLAP Permission = 0x16 ReadMetrics Permission = 0x17 ReadProfiling Permission = 0x18 - ReadAPI Permission = 0x18 + ReadAPI Permission = 0x19 ) diff --git a/runtime/server/controller.go b/runtime/server/controller.go index f6d403ad52a..d1f6b5f8fcb 100644 --- a/runtime/server/controller.go +++ b/runtime/server/controller.go @@ -243,12 +243,19 @@ func (s *Server) applySecurityPolicyMetricsView(ctx context.Context, instID stri defer span.End() mv := r.GetMetricsView() - if mv.State.ValidSpec == nil || mv.State.ValidSpec.Security == nil { - // Allow if it doesn't have a valid security policy + attrs := auth.GetClaims(ctx).Attributes() + claimsPolicy := auth.GetClaims(ctx).SecurityPolicy() + var mvPolicy *runtimev1.MetricsViewSpec_SecurityV2 + if mv.State.ValidSpec != nil { + mvPolicy = mv.State.ValidSpec.Security + } + + if claimsPolicy == nil && mvPolicy == nil { + // Allow if there is no security policy to apply return r, true, nil } - security, err := s.runtime.ResolveMetricsViewSecurity(auth.GetClaims(ctx).Attributes(), instID, mv.State.ValidSpec, r.Meta.StateUpdatedOn.AsTime()) + security, err := s.runtime.ResolveMetricsViewSecurity(instID, attrs, r, mvPolicy, claimsPolicy) if err != nil { return nil, false, err } diff --git a/runtime/server/downloads.go b/runtime/server/downloads.go index 22c7155e179..040b98e48e9 100644 --- a/runtime/server/downloads.go +++ b/runtime/server/downloads.go @@ -87,7 +87,7 @@ func (s *Server) Export(ctx context.Context, req *runtimev1.ExportRequest) (*run req.BakedQuery = "" } - tkn, err := s.generateDownloadToken(req, auth.GetClaims(ctx).Attributes()) + tkn, err := s.generateDownloadToken(req, auth.GetClaims(ctx).Attributes(), auth.GetClaims(ctx).SecurityPolicy()) if err != nil { return nil, status.Errorf(codes.Internal, "failed to generate download token: %s", err.Error()) } @@ -101,7 +101,7 @@ func (s *Server) Export(ctx context.Context, req *runtimev1.ExportRequest) (*run func (s *Server) downloadHandler(w http.ResponseWriter, req *http.Request) { rawTkn := req.URL.Query().Get("token") - request, attrs, err := s.parseDownloadToken(rawTkn) + request, attrs, policy, err := s.parseDownloadToken(rawTkn) if err != nil { http.Error(w, fmt.Sprintf("failed to parse download token: %s", err.Error()), http.StatusBadRequest) return @@ -146,13 +146,14 @@ func (s *Server) downloadHandler(w http.ResponseWriter, req *http.Request) { Offset: r.Offset, PivotOn: r.PivotOn, SecurityAttributes: attrs, + SecurityPolicy: policy, Aliases: r.Aliases, Exact: r.Exact, } case *runtimev1.Query_MetricsViewToplistRequest: r := v.MetricsViewToplistRequest - mv, security, err := resolveMVAndSecurityFromAttributes(req.Context(), s.runtime, request.InstanceId, r.MetricsViewName, attrs) + mv, security, err := resolveMVAndSecurityFromAttributes(req.Context(), s.runtime, request.InstanceId, r.MetricsViewName, attrs, policy) if err != nil { if errors.Is(err, ErrForbidden) { http.Error(w, "action not allowed", http.StatusUnauthorized) @@ -202,7 +203,7 @@ func (s *Server) downloadHandler(w http.ResponseWriter, req *http.Request) { } case *runtimev1.Query_MetricsViewRowsRequest: r := v.MetricsViewRowsRequest - mv, security, err := resolveMVAndSecurityFromAttributes(req.Context(), s.runtime, request.InstanceId, r.MetricsViewName, attrs) + mv, security, err := resolveMVAndSecurityFromAttributes(req.Context(), s.runtime, request.InstanceId, r.MetricsViewName, attrs, policy) if err != nil { if errors.Is(err, ErrForbidden) { http.Error(w, "action not allowed", http.StatusUnauthorized) @@ -233,7 +234,7 @@ func (s *Server) downloadHandler(w http.ResponseWriter, req *http.Request) { case *runtimev1.Query_MetricsViewTimeSeriesRequest: r := v.MetricsViewTimeSeriesRequest - mv, security, err := resolveMVAndSecurityFromAttributes(req.Context(), s.runtime, request.InstanceId, r.MetricsViewName, attrs) + mv, security, err := resolveMVAndSecurityFromAttributes(req.Context(), s.runtime, request.InstanceId, r.MetricsViewName, attrs, policy) if err != nil { if errors.Is(err, ErrForbidden) { http.Error(w, "action not allowed", http.StatusUnauthorized) @@ -278,6 +279,7 @@ func (s *Server) downloadHandler(w http.ResponseWriter, req *http.Request) { Where: r.Where, Having: r.Having, SecurityAttributes: attrs, + SecurityPolicy: policy, } case *runtimev1.Query_TableRowsRequest: r := v.TableRowsRequest @@ -346,6 +348,7 @@ const downloadTokenTTL = 1 * time.Hour type downloadToken struct { Request []byte `json:"req"` Attributes map[string]any `json:"attrs"` + Security []byte `json:"sec"` // Proto encoded *runtimev1.MetricsViewSpec_SecurityV2 ExpiresOn time.Time `json:"exp"` } @@ -355,7 +358,7 @@ func init() { } // generateDownloadToken generates and encrypts a download token for the given request and attributes. -func (s *Server) generateDownloadToken(req *runtimev1.ExportRequest, attrs map[string]any) (string, error) { +func (s *Server) generateDownloadToken(req *runtimev1.ExportRequest, attrs map[string]any, sec *runtimev1.MetricsViewSpec_SecurityV2) (string, error) { r, err := proto.Marshal(req) if err != nil { return "", err @@ -366,9 +369,15 @@ func (s *Server) generateDownloadToken(req *runtimev1.ExportRequest, attrs map[s return "", err } + secData, err := proto.Marshal(sec) + if err != nil { + return "", err + } + tkn := downloadToken{ Request: r, Attributes: attrs, + Security: secData, ExpiresOn: time.Now().Add(downloadTokenTTL), } @@ -381,29 +390,38 @@ func (s *Server) generateDownloadToken(req *runtimev1.ExportRequest, attrs map[s } // parseDownloadToken decrypts and parses a download token and returns the request and attributes. -func (s *Server) parseDownloadToken(tknStr string) (*runtimev1.ExportRequest, map[string]any, error) { +func (s *Server) parseDownloadToken(tknStr string) (*runtimev1.ExportRequest, map[string]any, *runtimev1.MetricsViewSpec_SecurityV2, error) { tkn := downloadToken{} err := s.codec.Decode(tknStr, &tkn) if err != nil { - return nil, nil, err + return nil, nil, nil, err } if tkn.ExpiresOn.Before(time.Now()) { - return nil, nil, fmt.Errorf("download token expired") + return nil, nil, nil, fmt.Errorf("download token expired") + } + + var sec *runtimev1.MetricsViewSpec_SecurityV2 + if len(tkn.Security) > 0 { + sec = &runtimev1.MetricsViewSpec_SecurityV2{} + err = proto.Unmarshal(tkn.Security, sec) + if err != nil { + return nil, nil, nil, err + } } r, err := gzipDecompress(tkn.Request) if err != nil { - return nil, nil, err + return nil, nil, nil, err } req := &runtimev1.ExportRequest{} err = proto.Unmarshal(r, req) if err != nil { - return nil, nil, err + return nil, nil, nil, err } - return req, tkn.Attributes, nil + return req, tkn.Attributes, sec, nil } // gzipCompress compress the input bytes using gzip. diff --git a/runtime/server/queries_metrics.go b/runtime/server/queries_metrics.go index 52d57839cc7..95ef121cfef 100644 --- a/runtime/server/queries_metrics.go +++ b/runtime/server/queries_metrics.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "regexp" - "time" runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime" @@ -59,6 +58,7 @@ func (s *Server) MetricsViewAggregation(ctx context.Context, req *runtimev1.Metr Offset: req.Offset, PivotOn: req.PivotOn, SecurityAttributes: auth.GetClaims(ctx).Attributes(), + SecurityPolicy: auth.GetClaims(ctx).SecurityPolicy(), Exact: req.Exact, Aliases: req.Aliases, } @@ -195,6 +195,7 @@ func (s *Server) MetricsViewComparison(ctx context.Context, req *runtimev1.Metri Exact: req.Exact, Filter: req.Filter, SecurityAttributes: auth.GetClaims(ctx).Attributes(), + SecurityPolicy: auth.GetClaims(ctx).SecurityPolicy(), } err := s.runtime.Query(ctx, req.InstanceId, q, int(req.Priority)) if err != nil { @@ -414,6 +415,7 @@ func (s *Server) MetricsViewSchema(ctx context.Context, req *runtimev1.MetricsVi q := &queries.MetricsViewSchema{ MetricsViewName: req.MetricsViewName, SecurityAttributes: auth.GetClaims(ctx).Attributes(), + SecurityPolicy: auth.GetClaims(ctx).SecurityPolicy(), } err := s.runtime.Query(ctx, req.InstanceId, q, int(req.Priority)) if err != nil { @@ -450,6 +452,7 @@ func (s *Server) MetricsViewSearch(ctx context.Context, req *runtimev1.MetricsVi Priority: req.Priority, Limit: &limit, SecurityAttributes: auth.GetClaims(ctx).Attributes(), + SecurityPolicy: auth.GetClaims(ctx).SecurityPolicy(), } err := s.runtime.Query(ctx, req.InstanceId, q, int(req.Priority)) if err != nil { @@ -476,12 +479,12 @@ func validateInlineMeasures(ms []*runtimev1.InlineMeasure) error { } func resolveMVAndSecurity(ctx context.Context, rt *runtime.Runtime, instanceID, metricsViewName string) (*runtimev1.MetricsViewSpec, *runtime.ResolvedMetricsViewSecurity, error) { - mv, lastUpdatedOn, err := lookupMetricsView(ctx, rt, instanceID, metricsViewName) + res, mv, err := lookupMetricsView(ctx, rt, instanceID, metricsViewName) if err != nil { return nil, nil, err } - resolvedSecurity, err := rt.ResolveMetricsViewSecurity(auth.GetClaims(ctx).Attributes(), instanceID, mv, lastUpdatedOn) + resolvedSecurity, err := rt.ResolveMetricsViewSecurity(instanceID, auth.GetClaims(ctx).Attributes(), res, mv.Security, auth.GetClaims(ctx).SecurityPolicy()) if err != nil { return nil, nil, err } @@ -492,13 +495,13 @@ func resolveMVAndSecurity(ctx context.Context, rt *runtime.Runtime, instanceID, return mv, resolvedSecurity, nil } -func resolveMVAndSecurityFromAttributes(ctx context.Context, rt *runtime.Runtime, instanceID, metricsViewName string, attrs map[string]any) (*runtimev1.MetricsViewSpec, *runtime.ResolvedMetricsViewSecurity, error) { - mv, lastUpdatedOn, err := lookupMetricsView(ctx, rt, instanceID, metricsViewName) +func resolveMVAndSecurityFromAttributes(ctx context.Context, rt *runtime.Runtime, instanceID, metricsViewName string, attrs map[string]any, policy *runtimev1.MetricsViewSpec_SecurityV2) (*runtimev1.MetricsViewSpec, *runtime.ResolvedMetricsViewSecurity, error) { + res, mv, err := lookupMetricsView(ctx, rt, instanceID, metricsViewName) if err != nil { return nil, nil, err } - resolvedSecurity, err := rt.ResolveMetricsViewSecurity(attrs, instanceID, mv, lastUpdatedOn) + resolvedSecurity, err := rt.ResolveMetricsViewSecurity(instanceID, attrs, res, mv.Security, policy) if err != nil { return nil, nil, err } @@ -511,24 +514,24 @@ func resolveMVAndSecurityFromAttributes(ctx context.Context, rt *runtime.Runtime } // returns the metrics view and the time the catalog was last updated -func lookupMetricsView(ctx context.Context, rt *runtime.Runtime, instanceID, name string) (*runtimev1.MetricsViewSpec, time.Time, error) { +func lookupMetricsView(ctx context.Context, rt *runtime.Runtime, instanceID, name string) (*runtimev1.Resource, *runtimev1.MetricsViewSpec, error) { ctrl, err := rt.Controller(ctx, instanceID) if err != nil { - return nil, time.Time{}, status.Error(codes.InvalidArgument, err.Error()) + return nil, nil, status.Error(codes.InvalidArgument, err.Error()) } res, err := ctrl.Get(ctx, &runtimev1.ResourceName{Kind: runtime.ResourceKindMetricsView, Name: name}, false) if err != nil { - return nil, time.Time{}, status.Error(codes.InvalidArgument, err.Error()) + return nil, nil, status.Error(codes.InvalidArgument, err.Error()) } mv := res.GetMetricsView() spec := mv.State.ValidSpec if spec == nil { - return nil, time.Time{}, status.Errorf(codes.InvalidArgument, "metrics view %q is invalid", name) + return nil, nil, status.Errorf(codes.InvalidArgument, "metrics view %q is invalid", name) } - return spec, res.Meta.StateUpdatedOn.AsTime(), nil + return res, spec, nil } func checkFieldAccess(field string, policy *runtime.ResolvedMetricsViewSecurity) bool { diff --git a/runtime/server/queries_metrics_timeseries_test.go b/runtime/server/queries_metrics_timeseries_test.go index 94d3c4536e4..3a0c65eb94f 100644 --- a/runtime/server/queries_metrics_timeseries_test.go +++ b/runtime/server/queries_metrics_timeseries_test.go @@ -812,10 +812,9 @@ func resolveMVAndSecurity(t *testing.T, rt *runtime.Runtime, instanceID, metrics mvRes := res.GetMetricsView() mv := mvRes.State.ValidSpec - lastUpdatedOn := res.Meta.StateUpdatedOn.AsTime() require.NoError(t, err) - resolvedSecurity, err := rt.ResolveMetricsViewSecurity(auth.GetClaims(ctx).Attributes(), instanceID, mv, lastUpdatedOn) + resolvedSecurity, err := rt.ResolveMetricsViewSecurity(instanceID, auth.GetClaims(ctx).Attributes(), res, mv.Security) require.NoError(t, err) return mv, resolvedSecurity diff --git a/web-admin/src/client/gen/admin-service/admin-service.ts b/web-admin/src/client/gen/admin-service/admin-service.ts index 8e1f0dd541e..f763793ec0f 100644 --- a/web-admin/src/client/gen/admin-service/admin-service.ts +++ b/web-admin/src/client/gen/admin-service/admin-service.ts @@ -22,6 +22,7 @@ import type { V1GetGithubRepoStatusResponse, AdminServiceGetGithubRepoStatusParams, V1GetGithubUserStatusResponse, + V1RevokeMagicAuthTokenResponse, V1ListOrganizationsResponse, AdminServiceListOrganizationsParams, V1CreateOrganizationResponse, @@ -67,6 +68,10 @@ import type { V1EditReportResponse, V1TriggerReportResponse, V1UnsubscribeReportResponse, + V1ListMagicAuthTokensResponse, + AdminServiceListMagicAuthTokensParams, + V1IssueMagicAuthTokenResponse, + AdminServiceIssueMagicAuthTokenBody, V1SearchProjectUsersResponse, AdminServiceSearchProjectUsersParams, V1ListProjectWhitelistedDomainsResponse, @@ -364,6 +369,51 @@ export const createAdminServiceGetGithubUserStatus = < return query; }; +/** + * @summary RevokeMagicAuthToken revokes a magic auth token. + */ +export const adminServiceRevokeMagicAuthToken = (tokenId: string) => { + return httpClient({ + url: `/v1/magic-tokens/${tokenId}`, + method: "delete", + }); +}; + +export type AdminServiceRevokeMagicAuthTokenMutationResult = NonNullable< + Awaited> +>; + +export type AdminServiceRevokeMagicAuthTokenMutationError = RpcStatus; + +export const createAdminServiceRevokeMagicAuthToken = < + TError = RpcStatus, + TContext = unknown, +>(options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { tokenId: string }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { tokenId: string } + > = (props) => { + const { tokenId } = props ?? {}; + + return adminServiceRevokeMagicAuthToken(tokenId); + }; + + return createMutation< + Awaited>, + TError, + { tokenId: string }, + TContext + >(mutationFn, mutationOptions); +}; /** * @summary ListOrganizations lists all the organizations currently managed by the admin */ @@ -2291,6 +2341,143 @@ export const createAdminServiceUnsubscribeReport = < TContext >(mutationFn, mutationOptions); }; +/** + * @summary ListMagicAuthTokens lists all the magic auth tokens for a specific project. + */ +export const adminServiceListMagicAuthTokens = ( + organization: string, + project: string, + params?: AdminServiceListMagicAuthTokensParams, + signal?: AbortSignal, +) => { + return httpClient({ + url: `/v1/organizations/${organization}/projects/${project}/tokens/magic`, + method: "get", + params, + signal, + }); +}; + +export const getAdminServiceListMagicAuthTokensQueryKey = ( + organization: string, + project: string, + params?: AdminServiceListMagicAuthTokensParams, +) => [ + `/v1/organizations/${organization}/projects/${project}/tokens/magic`, + ...(params ? [params] : []), +]; + +export type AdminServiceListMagicAuthTokensQueryResult = NonNullable< + Awaited> +>; +export type AdminServiceListMagicAuthTokensQueryError = RpcStatus; + +export const createAdminServiceListMagicAuthTokens = < + TData = Awaited>, + TError = RpcStatus, +>( + organization: string, + project: string, + params?: AdminServiceListMagicAuthTokensParams, + options?: { + query?: CreateQueryOptions< + Awaited>, + TError, + TData + >; + }, +): CreateQueryResult & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getAdminServiceListMagicAuthTokensQueryKey(organization, project, params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => + adminServiceListMagicAuthTokens(organization, project, params, signal); + + const query = createQuery< + Awaited>, + TError, + TData + >({ + queryKey, + queryFn, + enabled: !!(organization && project), + ...queryOptions, + }) as CreateQueryResult & { queryKey: QueryKey }; + + query.queryKey = queryKey; + + return query; +}; + +/** + * @summary IssueMagicAuthToken creates a "magic" auth token that provides limited access to a specific filtered dashboard in a specific project. + */ +export const adminServiceIssueMagicAuthToken = ( + organization: string, + project: string, + adminServiceIssueMagicAuthTokenBody: AdminServiceIssueMagicAuthTokenBody, +) => { + return httpClient({ + url: `/v1/organizations/${organization}/projects/${project}/tokens/magic`, + method: "post", + headers: { "Content-Type": "application/json" }, + data: adminServiceIssueMagicAuthTokenBody, + }); +}; + +export type AdminServiceIssueMagicAuthTokenMutationResult = NonNullable< + Awaited> +>; +export type AdminServiceIssueMagicAuthTokenMutationBody = + AdminServiceIssueMagicAuthTokenBody; +export type AdminServiceIssueMagicAuthTokenMutationError = RpcStatus; + +export const createAdminServiceIssueMagicAuthToken = < + TError = RpcStatus, + TContext = unknown, +>(options?: { + mutation?: CreateMutationOptions< + Awaited>, + TError, + { + organization: string; + project: string; + data: AdminServiceIssueMagicAuthTokenBody; + }, + TContext + >; +}) => { + const { mutation: mutationOptions } = options ?? {}; + + const mutationFn: MutationFunction< + Awaited>, + { + organization: string; + project: string; + data: AdminServiceIssueMagicAuthTokenBody; + } + > = (props) => { + const { organization, project, data } = props ?? {}; + + return adminServiceIssueMagicAuthToken(organization, project, data); + }; + + return createMutation< + Awaited>, + TError, + { + organization: string; + project: string; + data: AdminServiceIssueMagicAuthTokenBody; + }, + TContext + >(mutationFn, mutationOptions); +}; /** * @summary SearchProjectUsers returns users who has access to to a project (including org members that have access through a usergroup) */ diff --git a/web-admin/src/client/gen/index.schemas.ts b/web-admin/src/client/gen/index.schemas.ts index 97ec31e1036..5933f5b6188 100644 --- a/web-admin/src/client/gen/index.schemas.ts +++ b/web-admin/src/client/gen/index.schemas.ts @@ -118,6 +118,22 @@ export type AdminServiceSearchProjectUsersParams = { pageToken?: string; }; +export type AdminServiceIssueMagicAuthTokenBody = { + /** TTL for the token in minutes. Set to 0 for no expiry. Defaults to no expiry. */ + ttlMinutes?: string; + /** Metrics view the token will provide access to. */ + metricsView?: string; + metricsViewFilter?: V1Expression; + /** Optional list of names of dimensions and measures to limit access to. +If empty, all dimensions and measures are accessible. */ + metricsViewFields?: string[]; +}; + +export type AdminServiceListMagicAuthTokensParams = { + pageSize?: number; + pageToken?: string; +}; + export type AdminServiceListProjectMembersParams = { pageSize?: number; pageToken?: string; @@ -383,6 +399,13 @@ export interface V1SudoGetResourceResponse { instance?: V1Deployment; } +export interface V1Subquery { + dimension?: string; + measures?: string[]; + where?: V1Expression; + having?: V1Expression; +} + export interface V1SetSuperuserResponse { [key: string]: any; } @@ -434,6 +457,10 @@ export interface V1RevokeServiceAuthTokenResponse { [key: string]: any; } +export interface V1RevokeMagicAuthTokenResponse { + [key: string]: any; +} + export interface V1RevokeCurrentAuthTokenResponse { tokenId?: string; } @@ -500,10 +527,14 @@ export interface V1ProjectPermissions { manageDev?: boolean; readProjectMembers?: boolean; manageProjectMembers?: boolean; + createMagicAuthTokens?: boolean; + manageMagicAuthTokens?: boolean; createReports?: boolean; manageReports?: boolean; createAlerts?: boolean; manageAlerts?: boolean; + createBookmarks?: boolean; + manageBookmarks?: boolean; } export type V1ProjectAnnotations = { [key: string]: string }; @@ -564,6 +595,25 @@ export interface V1Organization { updatedOn?: string; } +export type V1Operation = (typeof V1Operation)[keyof typeof V1Operation]; + +// eslint-disable-next-line @typescript-eslint/no-redeclare +export const V1Operation = { + OPERATION_UNSPECIFIED: "OPERATION_UNSPECIFIED", + OPERATION_EQ: "OPERATION_EQ", + OPERATION_NEQ: "OPERATION_NEQ", + OPERATION_LT: "OPERATION_LT", + OPERATION_LTE: "OPERATION_LTE", + OPERATION_GT: "OPERATION_GT", + OPERATION_GTE: "OPERATION_GTE", + OPERATION_OR: "OPERATION_OR", + OPERATION_AND: "OPERATION_AND", + OPERATION_IN: "OPERATION_IN", + OPERATION_NIN: "OPERATION_NIN", + OPERATION_LIKE: "OPERATION_LIKE", + OPERATION_NLIKE: "OPERATION_NLIKE", +} as const; + export interface V1Member { userId?: string; userEmail?: string; @@ -573,6 +623,22 @@ export interface V1Member { updatedOn?: string; } +export type V1MagicAuthTokenAttributes = { [key: string]: any }; + +export interface V1MagicAuthToken { + id?: string; + projectId?: string; + createdOn?: string; + expiresOn?: string; + usedOn?: string; + createdByUserId?: string; + createdByUserEmail?: string; + attributes?: V1MagicAuthTokenAttributes; + metricsView?: string; + metricsViewFilter?: V1Expression; + metricsViewFields?: string[]; +} + export interface V1ListWhitelistedDomainsResponse { domains?: V1WhitelistedDomain[]; } @@ -623,6 +689,11 @@ export interface V1ListOrganizationInvitesResponse { nextPageToken?: string; } +export interface V1ListMagicAuthTokensResponse { + tokens?: V1MagicAuthToken[]; + nextPageToken?: string; +} + export interface V1ListBookmarksResponse { bookmarks?: V1Bookmark[]; } @@ -644,6 +715,11 @@ export interface V1IssueRepresentativeAuthTokenRequest { ttlMinutes?: string; } +export interface V1IssueMagicAuthTokenResponse { + token?: string; + url?: string; +} + export type V1GithubPermission = (typeof V1GithubPermission)[keyof typeof V1GithubPermission]; @@ -761,6 +837,13 @@ export interface V1GenerateAlertYAMLResponse { yaml?: string; } +export interface V1Expression { + ident?: string; + val?: unknown; + cond?: V1Condition; + subquery?: V1Subquery; +} + export type V1ExportFormat = (typeof V1ExportFormat)[keyof typeof V1ExportFormat]; @@ -872,6 +955,11 @@ export interface V1CreateAlertResponse { name?: string; } +export interface V1Condition { + op?: V1Operation; + exprs?: V1Expression[]; +} + export interface V1CompletionMessage { role?: string; data?: string; diff --git a/web-common/src/proto/gen/rill/admin/v1/api_pb.ts b/web-common/src/proto/gen/rill/admin/v1/api_pb.ts index d8d97ddf7af..218d1fee398 100644 --- a/web-common/src/proto/gen/rill/admin/v1/api_pb.ts +++ b/web-common/src/proto/gen/rill/admin/v1/api_pb.ts @@ -5,6 +5,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; import { Message, proto3, protoInt64, Struct, Timestamp } from "@bufbuild/protobuf"; +import { Expression } from "../../runtime/v1/expression_pb.js"; import { ExportFormat } from "../../runtime/v1/export_format_pb.js"; /** @@ -5021,6 +5022,295 @@ export class ListServiceAuthTokensResponse extends Message { + /** + * Organization that owns the project. + * + * @generated from field: string organization = 1; + */ + organization = ""; + + /** + * Project to create the magic auth token in. + * + * @generated from field: string project = 2; + */ + project = ""; + + /** + * TTL for the token in minutes. Set to 0 for no expiry. Defaults to no expiry. + * + * @generated from field: int64 ttl_minutes = 3; + */ + ttlMinutes = protoInt64.zero; + + /** + * Metrics view the token will provide access to. + * + * @generated from field: string metrics_view = 4; + */ + metricsView = ""; + + /** + * Optional filter to apply to all queries to the metrics view. + * + * @generated from field: rill.runtime.v1.Expression metrics_view_filter = 5; + */ + metricsViewFilter?: Expression; + + /** + * Optional list of names of dimensions and measures to limit access to. + * If empty, all dimensions and measures are accessible. + * + * @generated from field: repeated string metrics_view_fields = 6; + */ + metricsViewFields: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.IssueMagicAuthTokenRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "organization", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "ttl_minutes", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 4, name: "metrics_view", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "metrics_view_filter", kind: "message", T: Expression }, + { no: 6, name: "metrics_view_fields", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IssueMagicAuthTokenRequest { + return new IssueMagicAuthTokenRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IssueMagicAuthTokenRequest { + return new IssueMagicAuthTokenRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IssueMagicAuthTokenRequest { + return new IssueMagicAuthTokenRequest().fromJsonString(jsonString, options); + } + + static equals(a: IssueMagicAuthTokenRequest | PlainMessage | undefined, b: IssueMagicAuthTokenRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(IssueMagicAuthTokenRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.IssueMagicAuthTokenResponse + */ +export class IssueMagicAuthTokenResponse extends Message { + /** + * @generated from field: string token = 1; + */ + token = ""; + + /** + * @generated from field: string url = 2; + */ + url = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.IssueMagicAuthTokenResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IssueMagicAuthTokenResponse { + return new IssueMagicAuthTokenResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IssueMagicAuthTokenResponse { + return new IssueMagicAuthTokenResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IssueMagicAuthTokenResponse { + return new IssueMagicAuthTokenResponse().fromJsonString(jsonString, options); + } + + static equals(a: IssueMagicAuthTokenResponse | PlainMessage | undefined, b: IssueMagicAuthTokenResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(IssueMagicAuthTokenResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.ListMagicAuthTokensRequest + */ +export class ListMagicAuthTokensRequest extends Message { + /** + * @generated from field: string organization = 1; + */ + organization = ""; + + /** + * @generated from field: string project = 2; + */ + project = ""; + + /** + * @generated from field: uint32 page_size = 3; + */ + pageSize = 0; + + /** + * @generated from field: string page_token = 4; + */ + pageToken = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.ListMagicAuthTokensRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "organization", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "page_size", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "page_token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListMagicAuthTokensRequest { + return new ListMagicAuthTokensRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListMagicAuthTokensRequest { + return new ListMagicAuthTokensRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListMagicAuthTokensRequest { + return new ListMagicAuthTokensRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListMagicAuthTokensRequest | PlainMessage | undefined, b: ListMagicAuthTokensRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListMagicAuthTokensRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.ListMagicAuthTokensResponse + */ +export class ListMagicAuthTokensResponse extends Message { + /** + * @generated from field: repeated rill.admin.v1.MagicAuthToken tokens = 1; + */ + tokens: MagicAuthToken[] = []; + + /** + * @generated from field: string next_page_token = 2; + */ + nextPageToken = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.ListMagicAuthTokensResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "tokens", kind: "message", T: MagicAuthToken, repeated: true }, + { no: 2, name: "next_page_token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListMagicAuthTokensResponse { + return new ListMagicAuthTokensResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListMagicAuthTokensResponse { + return new ListMagicAuthTokensResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListMagicAuthTokensResponse { + return new ListMagicAuthTokensResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListMagicAuthTokensResponse | PlainMessage | undefined, b: ListMagicAuthTokensResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListMagicAuthTokensResponse, a, b); + } +} + +/** + * @generated from message rill.admin.v1.RevokeMagicAuthTokenRequest + */ +export class RevokeMagicAuthTokenRequest extends Message { + /** + * @generated from field: string token_id = 1; + */ + tokenId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.RevokeMagicAuthTokenRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "token_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RevokeMagicAuthTokenRequest { + return new RevokeMagicAuthTokenRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RevokeMagicAuthTokenRequest { + return new RevokeMagicAuthTokenRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RevokeMagicAuthTokenRequest { + return new RevokeMagicAuthTokenRequest().fromJsonString(jsonString, options); + } + + static equals(a: RevokeMagicAuthTokenRequest | PlainMessage | undefined, b: RevokeMagicAuthTokenRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(RevokeMagicAuthTokenRequest, a, b); + } +} + +/** + * @generated from message rill.admin.v1.RevokeMagicAuthTokenResponse + */ +export class RevokeMagicAuthTokenResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.RevokeMagicAuthTokenResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RevokeMagicAuthTokenResponse { + return new RevokeMagicAuthTokenResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RevokeMagicAuthTokenResponse { + return new RevokeMagicAuthTokenResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RevokeMagicAuthTokenResponse { + return new RevokeMagicAuthTokenResponse().fromJsonString(jsonString, options); + } + + static equals(a: RevokeMagicAuthTokenResponse | PlainMessage | undefined, b: RevokeMagicAuthTokenResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(RevokeMagicAuthTokenResponse, a, b); + } +} + /** * @generated from message rill.admin.v1.GetGithubRepoStatusRequest */ @@ -7987,6 +8277,16 @@ export class ProjectPermissions extends Message { */ manageProjectMembers = false; + /** + * @generated from field: bool create_magic_auth_tokens = 15; + */ + createMagicAuthTokens = false; + + /** + * @generated from field: bool manage_magic_auth_tokens = 16; + */ + manageMagicAuthTokens = false; + /** * @generated from field: bool create_reports = 11; */ @@ -8007,6 +8307,16 @@ export class ProjectPermissions extends Message { */ manageAlerts = false; + /** + * @generated from field: bool create_bookmarks = 17; + */ + createBookmarks = false; + + /** + * @generated from field: bool manage_bookmarks = 18; + */ + manageBookmarks = false; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -8025,10 +8335,14 @@ export class ProjectPermissions extends Message { { no: 8, name: "manage_dev", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 9, name: "read_project_members", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 10, name: "manage_project_members", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 15, name: "create_magic_auth_tokens", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 16, name: "manage_magic_auth_tokens", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 11, name: "create_reports", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 12, name: "manage_reports", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 13, name: "create_alerts", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 14, name: "manage_alerts", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 17, name: "create_bookmarks", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 18, name: "manage_bookmarks", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ProjectPermissions { @@ -8359,6 +8673,103 @@ export class ServiceToken extends Message { } } +/** + * @generated from message rill.admin.v1.MagicAuthToken + */ +export class MagicAuthToken extends Message { + /** + * @generated from field: string id = 1; + */ + id = ""; + + /** + * @generated from field: string project_id = 2; + */ + projectId = ""; + + /** + * @generated from field: google.protobuf.Timestamp created_on = 3; + */ + createdOn?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp expires_on = 4; + */ + expiresOn?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp used_on = 5; + */ + usedOn?: Timestamp; + + /** + * @generated from field: string created_by_user_id = 6; + */ + createdByUserId = ""; + + /** + * @generated from field: string created_by_user_email = 7; + */ + createdByUserEmail = ""; + + /** + * @generated from field: google.protobuf.Struct attributes = 8; + */ + attributes?: Struct; + + /** + * @generated from field: string metrics_view = 9; + */ + metricsView = ""; + + /** + * @generated from field: rill.runtime.v1.Expression metrics_view_filter = 10; + */ + metricsViewFilter?: Expression; + + /** + * @generated from field: repeated string metrics_view_fields = 11; + */ + metricsViewFields: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.admin.v1.MagicAuthToken"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "project_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "created_on", kind: "message", T: Timestamp }, + { no: 4, name: "expires_on", kind: "message", T: Timestamp }, + { no: 5, name: "used_on", kind: "message", T: Timestamp }, + { no: 6, name: "created_by_user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "created_by_user_email", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "attributes", kind: "message", T: Struct }, + { no: 9, name: "metrics_view", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 10, name: "metrics_view_filter", kind: "message", T: Expression }, + { no: 11, name: "metrics_view_fields", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): MagicAuthToken { + return new MagicAuthToken().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): MagicAuthToken { + return new MagicAuthToken().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): MagicAuthToken { + return new MagicAuthToken().fromJsonString(jsonString, options); + } + + static equals(a: MagicAuthToken | PlainMessage | undefined, b: MagicAuthToken | PlainMessage | undefined): boolean { + return proto3.util.equals(MagicAuthToken, a, b); + } +} + /** * @generated from message rill.admin.v1.VirtualFile */ diff --git a/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts b/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts index d2f9e84dd39..6dfadfc737a 100644 --- a/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts +++ b/web-common/src/proto/gen/rill/runtime/v1/resources_pb.ts @@ -7,6 +7,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM import { Message, proto3, protoInt64, Struct, Timestamp } from "@bufbuild/protobuf"; import { StructType } from "./schema_pb.js"; import { TimeGrain } from "./time_grain_pb.js"; +import { Expression } from "./expression_pb.js"; import { ExportFormat } from "./export_format_pb.js"; import { Color } from "./colors_pb.js"; @@ -1530,12 +1531,20 @@ export class MetricsViewSpec_SecurityV2 extends Message [ { no: 1, name: "access", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "row_filter", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "query_filter", kind: "message", T: Expression }, { no: 3, name: "include", kind: "message", T: MetricsViewSpec_SecurityV2_FieldConditionV2, repeated: true }, { no: 4, name: "exclude", kind: "message", T: MetricsViewSpec_SecurityV2_FieldConditionV2, repeated: true }, ]); diff --git a/web-common/src/proto/gen/rill/ui/v1/dashboard_pb.ts b/web-common/src/proto/gen/rill/ui/v1/dashboard_pb.ts index 19d0c0c88df..19a3741481a 100644 --- a/web-common/src/proto/gen/rill/ui/v1/dashboard_pb.ts +++ b/web-common/src/proto/gen/rill/ui/v1/dashboard_pb.ts @@ -159,7 +159,7 @@ export class DashboardState extends Message { chartType?: string; /** - * + * * * Pivot related fields * * @generated from field: optional bool pivot_is_active = 22; @@ -360,7 +360,7 @@ proto3.util.setEnumType(DashboardState_LeaderboardSortDirection, "rill.ui.v1.Das ]); /** - * + * * * SortType is used to determine how to sort the leaderboard * and dimension detail table, as well as where to place the * sort arrow. diff --git a/web-common/src/runtime-client/gen/index.schemas.ts b/web-common/src/runtime-client/gen/index.schemas.ts index 8b908036d82..c0f4d8f3d7e 100644 --- a/web-common/src/runtime-client/gen/index.schemas.ts +++ b/web-common/src/runtime-client/gen/index.schemas.ts @@ -2187,6 +2187,7 @@ export interface NumericHistogramBinsBin { export interface MetricsViewSpecSecurityV2 { access?: string; rowFilter?: string; + queryFilter?: V1Expression; include?: SecurityV2FieldConditionV2[]; exclude?: SecurityV2FieldConditionV2[]; }