diff --git a/.local-dev/config/ns.yaml b/.local-dev/config/ns.yaml index 1ed5415b..db470d0d 100644 --- a/.local-dev/config/ns.yaml +++ b/.local-dev/config/ns.yaml @@ -130,6 +130,15 @@ components: ipFamilies: - IPv4 ipFamilyPolicy: SingleStack + middleware: + sablier: + enable: true + url: http://sablier.sablier.svc.cluster.local + sessionDuration: 5m + dynamic: + theme: ghost + blocking: + timeout: 1m tls: type: traefik traefik: diff --git a/.local-dev/config/sablier.yaml b/.local-dev/config/sablier.yaml new file mode 100644 index 00000000..703f2f94 --- /dev/null +++ b/.local-dev/config/sablier.yaml @@ -0,0 +1,7 @@ +provider: + name: kubernetes +sessions: + default-duration: 5m + expiration-interval: 20s +logging: + level: trace diff --git a/.local-manifest/db/adminer-deployment.yaml b/.local-manifest/db/adminer-deployment.yaml index 20775cce..1e721162 100644 --- a/.local-manifest/db/adminer-deployment.yaml +++ b/.local-manifest/db/adminer-deployment.yaml @@ -26,4 +26,4 @@ spec: value: nette ports: - name: http - containerPort: 80 + containerPort: 8080 diff --git a/.local-manifest/kustomization.yaml b/.local-manifest/kustomization.yaml index c1552f93..e62dabb8 100644 --- a/.local-manifest/kustomization.yaml +++ b/.local-manifest/kustomization.yaml @@ -6,4 +6,5 @@ resources: - ns-apps - ns-system - registry + - sablier - traefik diff --git a/.local-manifest/sablier/kustomization.yaml b/.local-manifest/sablier/kustomization.yaml new file mode 100644 index 00000000..5432d8d1 --- /dev/null +++ b/.local-manifest/sablier/kustomization.yaml @@ -0,0 +1,7 @@ +namespace: sablier +resources: + - sablier-service-account.yaml + - sablier-role.yaml + - sablier-role-binding.yaml + - sablier-deployment.yaml + - sablier-service.yaml diff --git a/.local-manifest/sablier/sablier-deployment.yaml b/.local-manifest/sablier/sablier-deployment.yaml new file mode 100644 index 00000000..fe496df0 --- /dev/null +++ b/.local-manifest/sablier/sablier-deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sablier + labels: + app: sablier +spec: + replicas: 1 + selector: + matchLabels: + app: sablier + template: + metadata: + labels: + app: sablier + spec: + serviceAccountName: sablier + volumes: + - name: project + hostPath: + path: /work + containers: + - name: sablier + image: sablierapp/sablier:1.8 + ports: + - name: http + containerPort: 10000 + volumeMounts: + - name: project + subPath: .local-dev/config/sablier.yaml + mountPath: /etc/sablier/sablier.yaml diff --git a/.local-manifest/sablier/sablier-role-binding.yaml b/.local-manifest/sablier/sablier-role-binding.yaml new file mode 100644 index 00000000..66cf0ed9 --- /dev/null +++ b/.local-manifest/sablier/sablier-role-binding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: sablier + +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: sablier +subjects: + - kind: ServiceAccount + namespace: sablier + name: sablier diff --git a/.local-manifest/sablier/sablier-role.yaml b/.local-manifest/sablier/sablier-role.yaml new file mode 100644 index 00000000..3335ecc1 --- /dev/null +++ b/.local-manifest/sablier/sablier-role.yaml @@ -0,0 +1,27 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: sablier +rules: + - apiGroups: + - apps + - "" + resources: + - deployments + - statefulsets + verbs: + - get # Retrieve info about specific dep + - list # Events + - watch # Events + - apiGroups: + - apps + - "" + resources: + - deployments/scale + - statefulsets/scale + verbs: + - patch # Scale up and down + - update # Scale up and down + - get # Retrieve info about specific dep + - list # Events + - watch # Events diff --git a/.local-manifest/sablier/sablier-service-account.yaml b/.local-manifest/sablier/sablier-service-account.yaml new file mode 100644 index 00000000..a3cbcebd --- /dev/null +++ b/.local-manifest/sablier/sablier-service-account.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: sablier diff --git a/.local-manifest/sablier/sablier-service.yaml b/.local-manifest/sablier/sablier-service.yaml new file mode 100644 index 00000000..70f7564a --- /dev/null +++ b/.local-manifest/sablier/sablier-service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: sablier + +spec: + type: ClusterIP + selector: + app: sablier + ports: + - name: http + port: 80 + targetPort: http diff --git a/.local-manifest/traefik/traefik-stateful-set.yaml b/.local-manifest/traefik/traefik-stateful-set.yaml index e47125d8..e03ecd02 100644 --- a/.local-manifest/traefik/traefik-stateful-set.yaml +++ b/.local-manifest/traefik/traefik-stateful-set.yaml @@ -26,12 +26,15 @@ spec: - --api.insecure - --providers.kubernetescrd - --providers.kubernetescrd.allowCrossNamespace + - --providers.kubernetescrd.allowEmptyServices - --providers.kubernetesingress - --entrypoints.web.address=:80/tcp - --entrypoints.websecure.address=:443/tcp - --entrypoints.websecure.http.tls=true - --entrypoints.traefik.address=:8080/tcp - --entrypoints.metrics.address=:9100/tcp + - --experimental.plugins.sablier.modulename=github.com/sablierapp/sablier + - --experimental.plugins.sablier.version=v1.8.1 - --api.dashboard=true - --ping=true - --metrics.prometheus=true diff --git a/api/proto/neoshowcase/protobuf/gateway.proto b/api/proto/neoshowcase/protobuf/gateway.proto index b6e2dd22..0db10f97 100644 --- a/api/proto/neoshowcase/protobuf/gateway.proto +++ b/api/proto/neoshowcase/protobuf/gateway.proto @@ -99,11 +99,22 @@ enum DeployType { STATIC = 1; } +message AutoShutdownConfig { + enum StartupBehavior { + UNDEFINED = 0; + LOADING_PAGE = 1; + BLOCKING = 2; + } + bool enabled = 1; + StartupBehavior startup = 2; +} + message RuntimeConfig { bool use_mariadb = 1; bool use_mongodb = 2; string entrypoint = 3; string command = 4; + AutoShutdownConfig auto_shutdown = 5; } message BuildConfigRuntimeBuildpack { diff --git a/cmd/config.go b/cmd/config.go index 36b97af6..0a2759a0 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -191,6 +191,12 @@ func init() { viper.SetDefault("components.controller.k8s.service.ipFamilies", nil) viper.SetDefault("components.controller.k8s.service.ipFamilyPolicy", "PreferDualStack") + viper.SetDefault("components.controller.k8s.middleware.sablier.enable", true) + viper.SetDefault("components.controller.k8s.middleware.sablier.url", "http://sablier:10000") + viper.SetDefault("components.controller.k8s.middleware.sablier.sessionDuration", "1h") + viper.SetDefault("components.controller.k8s.middleware.sablier.dynamic.theme", "ghost") + viper.SetDefault("components.controller.k8s.middleware.sablier.blocking.timeout", "1m") + viper.SetDefault("components.controller.k8s.tls.type", "traefik") viper.SetDefault("components.controller.k8s.tls.traefik.certResolver", "nsresolver") viper.SetDefault("components.controller.k8s.tls.traefik.wildcard.domains", nil) diff --git a/dashboard/src/api/neoshowcase/protobuf/gateway_connect.ts b/dashboard/src/api/neoshowcase/protobuf/gateway_connect.ts index 1d242d09..56a30c3a 100644 --- a/dashboard/src/api/neoshowcase/protobuf/gateway_connect.ts +++ b/dashboard/src/api/neoshowcase/protobuf/gateway_connect.ts @@ -1,4 +1,4 @@ -// @generated by protoc-gen-connect-es v1.4.0 with parameter "target=ts" +// @generated by protoc-gen-connect-es v1.6.1 with parameter "target=ts" // @generated from file neoshowcase/protobuf/gateway.proto (package neoshowcase.protobuf, syntax proto3) /* eslint-disable */ // @ts-nocheck diff --git a/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts b/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts index 78140cb6..f14c678c 100644 --- a/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts +++ b/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts @@ -660,6 +660,75 @@ export class SimpleCommit extends Message { } } +/** + * @generated from message neoshowcase.protobuf.AutoShutdownConfig + */ +export class AutoShutdownConfig extends Message { + /** + * @generated from field: bool enabled = 1; + */ + enabled = false; + + /** + * @generated from field: neoshowcase.protobuf.AutoShutdownConfig.StartupBehavior startup = 2; + */ + startup = AutoShutdownConfig_StartupBehavior.UNDEFINED; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "neoshowcase.protobuf.AutoShutdownConfig"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 2, name: "startup", kind: "enum", T: proto3.getEnumType(AutoShutdownConfig_StartupBehavior) }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AutoShutdownConfig { + return new AutoShutdownConfig().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AutoShutdownConfig { + return new AutoShutdownConfig().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AutoShutdownConfig { + return new AutoShutdownConfig().fromJsonString(jsonString, options); + } + + static equals(a: AutoShutdownConfig | PlainMessage | undefined, b: AutoShutdownConfig | PlainMessage | undefined): boolean { + return proto3.util.equals(AutoShutdownConfig, a, b); + } +} + +/** + * @generated from enum neoshowcase.protobuf.AutoShutdownConfig.StartupBehavior + */ +export enum AutoShutdownConfig_StartupBehavior { + /** + * @generated from enum value: UNDEFINED = 0; + */ + UNDEFINED = 0, + + /** + * @generated from enum value: LOADING_PAGE = 1; + */ + LOADING_PAGE = 1, + + /** + * @generated from enum value: BLOCKING = 2; + */ + BLOCKING = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(AutoShutdownConfig_StartupBehavior) +proto3.util.setEnumType(AutoShutdownConfig_StartupBehavior, "neoshowcase.protobuf.AutoShutdownConfig.StartupBehavior", [ + { no: 0, name: "UNDEFINED" }, + { no: 1, name: "LOADING_PAGE" }, + { no: 2, name: "BLOCKING" }, +]); + /** * @generated from message neoshowcase.protobuf.RuntimeConfig */ @@ -684,6 +753,11 @@ export class RuntimeConfig extends Message { */ command = ""; + /** + * @generated from field: neoshowcase.protobuf.AutoShutdownConfig auto_shutdown = 5; + */ + autoShutdown?: AutoShutdownConfig; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -696,6 +770,7 @@ export class RuntimeConfig extends Message { { no: 2, name: "use_mongodb", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 3, name: "entrypoint", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 4, name: "command", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "auto_shutdown", kind: "message", T: AutoShutdownConfig }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): RuntimeConfig { diff --git a/dashboard/src/features/application/components/form/config/deploy/RuntimeConfigField.tsx b/dashboard/src/features/application/components/form/config/deploy/RuntimeConfigField.tsx index 7d476041..651cf516 100644 --- a/dashboard/src/features/application/components/form/config/deploy/RuntimeConfigField.tsx +++ b/dashboard/src/features/application/components/form/config/deploy/RuntimeConfigField.tsx @@ -1,5 +1,6 @@ import { Field, getValues, setValues } from '@modular-forms/solid' import { type Component, Show, createEffect, createResource } from 'solid-js' +import { AutoShutdownConfig_StartupBehavior } from '/@/api/neoshowcase/protobuf/gateway_pb' import { TextField } from '/@/components/UI/TextField' import { ToolTip } from '/@/components/UI/ToolTip' import { CheckBox } from '/@/components/templates/CheckBox' @@ -49,6 +50,28 @@ const RuntimeConfigField: Component = (props) => { } }) + // @ts-expect-error: autoShutdown は deployConfig.type === "static" の時存在しないためtsの型の仕様上エラーが出る + const autoShutdown = () => getValues(formStore).form?.config?.deployConfig?.value?.runtime?.autoShutdown?.enabled + + const setStartupBehavior = (value: string | undefined) => { + setValues(formStore, { + form: { + config: { + deployConfig: { + value: { + // @ts-expect-error: deployConfig は form.type === "static" の時存在しないためtsの型の仕様上エラーが出る + runtime: { + autoShutdown: { + startup: value, + }, + }, + }, + }, + }, + }, + }) + } + const EntryPointField = () => ( {(field, fieldProps) => ( @@ -172,6 +195,73 @@ const RuntimeConfigField: Component = (props) => { + + + + {(field, fieldProps) => ( + + )} + + + + + + + {(field, fieldProps) => ( + + )} + + + ) } diff --git a/dashboard/src/features/application/schema/applicationConfigSchema.ts b/dashboard/src/features/application/schema/applicationConfigSchema.ts index 6fec6144..ecdcf09d 100644 --- a/dashboard/src/features/application/schema/applicationConfigSchema.ts +++ b/dashboard/src/features/application/schema/applicationConfigSchema.ts @@ -1,7 +1,7 @@ import type { PartialMessage } from '@bufbuild/protobuf' import { P, match } from 'ts-pattern' import * as v from 'valibot' -import type { ApplicationConfig } from '/@/api/neoshowcase/protobuf/gateway_pb' +import { type ApplicationConfig, AutoShutdownConfig_StartupBehavior } from '/@/api/neoshowcase/protobuf/gateway_pb' import { stringBooleanSchema } from '/@/libs/schemaUtil' const optionalBooleanSchema = (defaultValue = false) => @@ -10,11 +10,37 @@ const optionalBooleanSchema = (defaultValue = false) => v.transform((i) => i ?? defaultValue), ) +const autoShutdownSchema = v.optional( + v.object({ + enabled: v.boolean(), + startup: v.pipe( + v.optional( + v.union([ + v.literal(`${AutoShutdownConfig_StartupBehavior.LOADING_PAGE}`), + v.literal(`${AutoShutdownConfig_StartupBehavior.BLOCKING}`), + ]), + ), + v.transform((input) => { + return match(input) + .returnType() + .with(undefined, () => AutoShutdownConfig_StartupBehavior.UNDEFINED) + .with( + `${AutoShutdownConfig_StartupBehavior.LOADING_PAGE}`, + () => AutoShutdownConfig_StartupBehavior.LOADING_PAGE, + ) + .with(`${AutoShutdownConfig_StartupBehavior.BLOCKING}`, () => AutoShutdownConfig_StartupBehavior.BLOCKING) + .exhaustive() + }), + ), + }), +) + const runtimeConfigSchema = v.object({ useMariadb: optionalBooleanSchema(), useMongodb: optionalBooleanSchema(), entrypoint: v.string(), command: v.string(), + autoShutdown: autoShutdownSchema, }) const staticConfigSchema = v.object({ artifactPath: v.pipe(v.string(), v.nonEmpty('Enter Artifact Path')), @@ -183,11 +209,16 @@ export const configMessageToSchema = (config: ApplicationConfig): ApplicationCon (buildConfig) => ({ type: 'runtime', value: { - runtime: buildConfig.value.runtimeConfig ?? { - command: '', - entrypoint: '', - useMariadb: false, - useMongodb: false, + runtime: { + ...buildConfig.value.runtimeConfig, + entrypoint: buildConfig.value.runtimeConfig?.entrypoint ?? '', + command: buildConfig.value.runtimeConfig?.command ?? '', + autoShutdown: { + enabled: buildConfig.value.runtimeConfig?.autoShutdown?.enabled ?? false, + startup: buildConfig.value.runtimeConfig?.autoShutdown?.startup + ? `${buildConfig.value.runtimeConfig.autoShutdown.startup}` + : undefined, + }, }, }, }), diff --git a/dashboard/src/features/application/schema/applicationSchema.test.ts b/dashboard/src/features/application/schema/applicationSchema.test.ts index 07793cf9..cbc625f8 100644 --- a/dashboard/src/features/application/schema/applicationSchema.test.ts +++ b/dashboard/src/features/application/schema/applicationSchema.test.ts @@ -15,6 +15,9 @@ describe('Create Application Schema', () => { useMongodb: false, entrypoint: '.', command: "echo 'test'", + autoShutdown: { + enabled: false, + }, }, }, }, @@ -108,6 +111,9 @@ describe('Create Application Schema', () => { useMongodb: false, entrypoint: '.', command: "echo 'test'", + autoShutdown: { + enabled: false, + }, }, }, }, @@ -140,6 +146,9 @@ describe('Create Application Schema', () => { useMongodb: false, entrypoint: '.', command: "echo 'test'", + autoShutdown: { + enabled: false, + }, }, }, }, @@ -173,6 +182,9 @@ describe('Create Application Schema', () => { useMongodb: false, entrypoint: '.', command: "echo 'test'", + autoShutdown: { + enabled: false, + }, }, }, }, diff --git a/dashboard/src/libs/application.tsx b/dashboard/src/libs/application.tsx index 9feb8282..ae359840 100644 --- a/dashboard/src/libs/application.tsx +++ b/dashboard/src/libs/application.tsx @@ -30,8 +30,19 @@ export enum ApplicationState { Error = 'Error', } +const autoShutdownEnabled = (app: Application): boolean => { + switch (app.config?.buildConfig?.case) { + case 'runtimeBuildpack': + case 'runtimeCmd': + case 'runtimeDockerfile': + return app.config.buildConfig.value.runtimeConfig?.autoShutdown?.enabled ?? false + } + return false +} + export const deploymentState = (app: Application): ApplicationState => { - if (!app.running) { + // if app is not running or autoShutdown is enabled and container is missing, it's idle + if (!app.running || (autoShutdownEnabled(app) && app.container === Application_ContainerState.MISSING)) { return ApplicationState.Idle } if (app.currentBuild === '') { diff --git a/dashboard/src/pages/apps.tsx b/dashboard/src/pages/apps.tsx index 0f52f2a4..6ae6d027 100644 --- a/dashboard/src/pages/apps.tsx +++ b/dashboard/src/pages/apps.tsx @@ -72,6 +72,7 @@ export const allStatuses: SelectOption[] = [ { label: 'Idle', value: ApplicationState.Idle }, { label: 'Deploying', value: ApplicationState.Deploying }, { label: 'Running', value: ApplicationState.Running }, + { label: 'Sleeping', value: ApplicationState.Idle }, { label: 'Serving', value: ApplicationState.Serving }, { label: 'Error', value: ApplicationState.Error }, ] diff --git a/docs/dbschema/README.md b/docs/dbschema/README.md index 7c33cdde..7f9fe050 100644 --- a/docs/dbschema/README.md +++ b/docs/dbschema/README.md @@ -5,7 +5,7 @@ | Name | Columns | Comment | Type | | ---- | ------- | ------- | ---- | | [applications](applications.md) | 12 | アプリケーションテーブル | BASE TABLE | -| [application_config](application_config.md) | 12 | アプリケーション詳細設定テーブル | BASE TABLE | +| [application_config](application_config.md) | 14 | アプリケーション詳細設定テーブル | BASE TABLE | | [application_owners](application_owners.md) | 2 | アプリケーション所有者テーブル | BASE TABLE | | [artifacts](artifacts.md) | 6 | 静的ファイル生成物テーブル | BASE TABLE | | [builds](builds.md) | 10 | ビルドテーブル | BASE TABLE | @@ -58,6 +58,8 @@ erDiagram char_22_ application_id PK tinyint_1_ use_mariadb tinyint_1_ use_mongodb + tinyint_1_ auto_shutdown + enum__loading-page___blocking__ startup_behavior enum__runtime-buildpack___runtime-cmd___runtime-dockerfile___static-buildpack___static-cmd___static-dockerfile__ build_type varchar_1000_ base_image text build_cmd diff --git a/docs/dbschema/application_config.md b/docs/dbschema/application_config.md index f9b5e979..9c55d386 100644 --- a/docs/dbschema/application_config.md +++ b/docs/dbschema/application_config.md @@ -12,6 +12,8 @@ CREATE TABLE `application_config` ( `application_id` char(22) NOT NULL COMMENT 'アプリケーションID', `use_mariadb` tinyint(1) NOT NULL COMMENT 'MariaDBを使用するか', `use_mongodb` tinyint(1) NOT NULL COMMENT 'MongoDBを使用するか', + `auto_shutdown` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'アプリケーションの自動シャットダウン', + `startup_behavior` enum('loading-page','blocking') NOT NULL DEFAULT 'loading-page' COMMENT 'アプリ起動時の振る舞い', `build_type` enum('runtime-buildpack','runtime-cmd','runtime-dockerfile','static-buildpack','static-cmd','static-dockerfile') NOT NULL COMMENT 'ビルドタイプ', `base_image` varchar(1000) NOT NULL COMMENT 'ベースイメージの名前', `build_cmd` text NOT NULL COMMENT 'ビルドコマンド', @@ -35,6 +37,8 @@ CREATE TABLE `application_config` ( | application_id | char(22) | | false | | [applications](applications.md) | アプリケーションID | | use_mariadb | tinyint(1) | | false | | | MariaDBを使用するか | | use_mongodb | tinyint(1) | | false | | | MongoDBを使用するか | +| auto_shutdown | tinyint(1) | 0 | false | | | アプリケーションの自動シャットダウン | +| startup_behavior | enum('loading-page','blocking') | 'loading-page' | false | | | アプリ起動時の振る舞い | | build_type | enum('runtime-buildpack','runtime-cmd','runtime-dockerfile','static-buildpack','static-cmd','static-dockerfile') | | false | | | ビルドタイプ | | base_image | varchar(1000) | | false | | | ベースイメージの名前 | | build_cmd | text | | false | | | ビルドコマンド | @@ -69,6 +73,8 @@ erDiagram char_22_ application_id PK tinyint_1_ use_mariadb tinyint_1_ use_mongodb + tinyint_1_ auto_shutdown + enum__loading-page___blocking__ startup_behavior enum__runtime-buildpack___runtime-cmd___runtime-dockerfile___static-buildpack___static-cmd___static-dockerfile__ build_type varchar_1000_ base_image text build_cmd diff --git a/docs/dbschema/applications.md b/docs/dbschema/applications.md index dd2623ff..dcfcc4f7 100644 --- a/docs/dbschema/applications.md +++ b/docs/dbschema/applications.md @@ -91,6 +91,8 @@ erDiagram char_22_ application_id PK tinyint_1_ use_mariadb tinyint_1_ use_mongodb + tinyint_1_ auto_shutdown + enum__loading-page___blocking__ startup_behavior enum__runtime-buildpack___runtime-cmd___runtime-dockerfile___static-buildpack___static-cmd___static-dockerfile__ build_type varchar_1000_ base_image text build_cmd diff --git a/go.mod b/go.mod index 6c4cd43b..0c676ede 100644 --- a/go.mod +++ b/go.mod @@ -46,10 +46,10 @@ require ( golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 golang.org/x/net v0.30.0 golang.org/x/sync v0.8.0 - google.golang.org/grpc v1.66.2 // indirect google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.31.2 + k8s.io/apiextensions-apiserver v0.31.1 k8s.io/apimachinery v0.31.2 k8s.io/client-go v0.31.2 ) @@ -207,12 +207,12 @@ require ( google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.4.0 // indirect - k8s.io/apiextensions-apiserver v0.31.1 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 // indirect diff --git a/migrations/schema.sql b/migrations/schema.sql index bcdbdaae..f5a647ff 100644 --- a/migrations/schema.sql +++ b/migrations/schema.sql @@ -106,6 +106,11 @@ CREATE TABLE `application_config` `application_id` CHAR(22) NOT NULL COMMENT 'アプリケーションID', `use_mariadb` TINYINT(1) NOT NULL COMMENT 'MariaDBを使用するか', `use_mongodb` TINYINT(1) NOT NULL COMMENT 'MongoDBを使用するか', + `auto_shutdown` TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'アプリケーションの自動シャットダウン', + `startup_behavior` ENUM ( + 'loading-page', + 'blocking' + ) NOT NULL DEFAULT 'loading-page' COMMENT 'アプリ起動時の振る舞い', `build_type` ENUM ( 'runtime-buildpack', 'runtime-cmd', diff --git a/pkg/domain/app_build_config.go b/pkg/domain/app_build_config.go index bd8591ec..fa587579 100644 --- a/pkg/domain/app_build_config.go +++ b/pkg/domain/app_build_config.go @@ -32,12 +32,33 @@ func (b BuildType) DeployType() DeployType { } type RuntimeConfig struct { - UseMariaDB bool - UseMongoDB bool - Entrypoint string - Command string + UseMariaDB bool + UseMongoDB bool + Entrypoint string + Command string + AutoShutdown AutoShutdownConfig } +type AutoShutdownConfig struct { + Enabled bool + // Startup must be set if Enabled is true. + Startup StartupBehavior +} + +// StartupBehavior represents the behavior of the application when it starts up. +// This is used to determine how to handle the request until the application is ready. +type StartupBehavior int + +const ( + StartupBehaviorUndefined StartupBehavior = iota + // StartupBehaviorLoadingPage is a strategy that shows a loading page until the application is ready. + // This is suitable for web applications that are accessed from frontend. + StartupBehaviorLoadingPage + // StartupBehaviorBlocking is a strategy that blocks the request until the application is ready. + // This is suitable for API servers. + StartupBehaviorBlocking +) + const shellSpecialCharacters = "`" + `~#$&*()\|[]{};'"<>?!=` func ParseArgs(s string) ([]string, error) { @@ -64,6 +85,9 @@ func (rc *RuntimeConfig) Validate() error { if _, err := ParseArgs(rc.Command); err != nil { return errors.Wrap(err, "command") } + if rc.AutoShutdown.Enabled && rc.AutoShutdown.Startup == StartupBehaviorUndefined { + return errors.New("startup is required if auto shutdown is enabled") + } return nil } diff --git a/pkg/domain/app_test.go b/pkg/domain/app_test.go index c5a7363f..88235411 100644 --- a/pkg/domain/app_test.go +++ b/pkg/domain/app_test.go @@ -335,7 +335,7 @@ func TestHashWithEnv(t *testing.T) { } hash := config.Hash(testEnv) - t.Run("hash should be equal when env is different", func(t *testing.T) { + t.Run("hash should not be equal when env is different", func(t *testing.T) { testEnv2 := []*Environment{ {Key: "key1", Value: "value1"}, {Key: "key2", Value: "value2"}, diff --git a/pkg/infrastructure/backend/k8simpl/backend.go b/pkg/infrastructure/backend/k8simpl/backend.go index b1caaebe..bdd273ed 100644 --- a/pkg/infrastructure/backend/k8simpl/backend.go +++ b/pkg/infrastructure/backend/k8simpl/backend.go @@ -196,6 +196,18 @@ func ssHeaderMiddlewareName(ss *domain.StaticSite) string { return fmt.Sprintf("nsapp-ss-header-%s", ss.Application.ID) } +func sablierMiddlewareName(appID string) string { + return fmt.Sprintf("sablier-%s", appID) +} + +func (b *Backend) useSablier(app *domain.Application) bool { + return app.DeployType == domain.DeployTypeRuntime && app.Config.BuildConfig.GetRuntimeConfig().AutoShutdown.Enabled +} + +func sablierGroupName(appID string) string { + return fmt.Sprintf("nsapp-%s", appID) +} + func certificateName(fqdn string) string { wildcard := strings.HasPrefix(fqdn, "*.") if wildcard { diff --git a/pkg/infrastructure/backend/k8simpl/config.go b/pkg/infrastructure/backend/k8simpl/config.go index 31af66d8..c630763a 100644 --- a/pkg/infrastructure/backend/k8simpl/config.go +++ b/pkg/infrastructure/backend/k8simpl/config.go @@ -173,7 +173,7 @@ type Config struct { Routing struct { // Type defines which ingress controller to use. // Possible values: - // "traefik: Uses traefik ingress controller. + // "traefik": Uses traefik ingress controller. Type string `mapstructure:"type" yaml:"type"` Traefik struct { // PriorityOffset defines HTTP routes' priority offset for user apps. @@ -190,6 +190,26 @@ type Config struct { // Allowed values: "", "SingleStack", "PreferDualStack", "RequireDualStack" IPFamilyPolicy v1.IPFamilyPolicy `mapstructure:"ipFamilyPolicy" yaml:"ipFamilyPolicy"` } `mapstructure:"service" yaml:"service"` + + // Middleware section defines middleware settings. + Middleware struct { + // Sablier (https://github.com/acouvreur/sablier) starts user apps on demand and shuts them down after a certain time. + Sablier struct { + Enable bool `mapstructure:"enable" yaml:"enable"` + SablierURL string `mapstructure:"url" yaml:"url"` + // SessionDuration defines how long the session should last. + // + // Example: "10m" + SessionDuration string `mapstructure:"sessionDuration" yaml:"sessionDuration"` + Dynamic struct { + Theme string `mapstructure:"theme" yaml:"theme"` + } `mapstructure:"dynamic" yaml:"dynamic"` + Blocking struct { + // Timeout defines how long the blocking should last. + Timeout string `mapstructure:"timeout" yaml:"timeout"` + } `mapstructure:"blocking" yaml:"blocking"` + } `mapstructure:"sablier" yaml:"sablier"` + } // TLS section defines tls setting for user app ingress. TLS struct { // Type defines which provider is responsible for obtaining http certificates. diff --git a/pkg/infrastructure/backend/k8simpl/helper.go b/pkg/infrastructure/backend/k8simpl/helper.go index 915f237d..f124b951 100644 --- a/pkg/infrastructure/backend/k8simpl/helper.go +++ b/pkg/infrastructure/backend/k8simpl/helper.go @@ -67,6 +67,9 @@ func syncResources[T apiResource](ctx context.Context, rcName string, existing [ // Set label, and apply labels := rc.GetLabels() + if labels == nil { + labels = make(map[string]string) + } labels[resourceHashAnnotation] = h rc.SetLabels(labels) diff --git a/pkg/infrastructure/backend/k8simpl/ingress.go b/pkg/infrastructure/backend/k8simpl/ingress.go index 54bcae1f..fccfc06b 100644 --- a/pkg/infrastructure/backend/k8simpl/ingress.go +++ b/pkg/infrastructure/backend/k8simpl/ingress.go @@ -1,6 +1,7 @@ package k8simpl import ( + "encoding/json" "fmt" "time" @@ -10,6 +11,7 @@ import ( "github.com/traefik/traefik/v3/pkg/config/dynamic" traefikv1alpha1 "github.com/traefik/traefik/v3/pkg/provider/kubernetes/crd/traefikio/v1alpha1" "github.com/traefik/traefik/v3/pkg/types" + v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/traPtitech/neoshowcase/pkg/domain" @@ -62,6 +64,66 @@ func (b *Backend) certificate(targetDomain string) *certmanagerv1.Certificate { } } +func (b *Backend) jsonSablierConfig(app *domain.Application) []byte { + type DynamicConfig = struct { + DisplayName string `json:"displayName"` + ShowDetails string `json:"showDetails"` + Theme string `json:"theme"` + } + type BlockingConfig = struct { + Timeout string `json:"timeout"` + } + type SablierConfig = struct { + SablierURL string `json:"sablierURL"` + Group string `json:"group"` + SessionDuration string `json:"sessionDuration"` + Dynamic *DynamicConfig `json:"dynamic,omitempty"` + Blocking *BlockingConfig `json:"blocking,omitempty"` + } + + config := SablierConfig{ + SablierURL: b.config.Middleware.Sablier.SablierURL, + Group: sablierGroupName(app.ID), + SessionDuration: b.config.Middleware.Sablier.SessionDuration, + } + + switch app.Config.BuildConfig.GetRuntimeConfig().AutoShutdown.Startup { + case domain.StartupBehaviorLoadingPage: + config.Dynamic = &DynamicConfig{ + DisplayName: app.Name, + ShowDetails: "true", + Theme: b.config.Middleware.Sablier.Dynamic.Theme, + } + case domain.StartupBehaviorBlocking: + config.Blocking = &BlockingConfig{ + Timeout: b.config.Middleware.Sablier.Blocking.Timeout, + } + } + + data, _ := json.Marshal(config) + return data +} + +func (b *Backend) sablierMiddleware(app *domain.Application) *traefikv1alpha1.Middleware { + configData := b.jsonSablierConfig(app) + return &traefikv1alpha1.Middleware{ + TypeMeta: metav1.TypeMeta{ + Kind: "Middleware", + APIVersion: "traefik.io/v1alpha1", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: sablierMiddlewareName(app.ID), + Namespace: b.config.Namespace, + Labels: b.appLabel(app.ID), + }, + Spec: traefikv1alpha1.MiddlewareSpec{ + Plugin: map[string]v1.JSON{ + "sablier": {Raw: configData}, + }, + }, + } +} + func (b *Backend) ingressRoute( app *domain.Application, website *domain.Website, @@ -107,6 +169,11 @@ func (b *Backend) ingressRoute( middlewareRefs = append(middlewareRefs, traefikv1alpha1.MiddlewareRef{Name: middleware.Name}) } } + if b.useSablier(app) { + middleware := b.sablierMiddleware(app) + middlewares = append(middlewares, middleware) + middlewareRefs = append(middlewareRefs, traefikv1alpha1.MiddlewareRef{Name: middleware.Name}) + } var rulePriority int { priorityOffset := b.config.Routing.Traefik.PriorityOffset diff --git a/pkg/infrastructure/backend/k8simpl/list_containers.go b/pkg/infrastructure/backend/k8simpl/list_containers.go index 0ad1f800..3be1d01d 100644 --- a/pkg/infrastructure/backend/k8simpl/list_containers.go +++ b/pkg/infrastructure/backend/k8simpl/list_containers.go @@ -7,7 +7,7 @@ import ( "github.com/friendsofgo/errors" "github.com/samber/lo" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/traPtitech/neoshowcase/pkg/domain" @@ -53,6 +53,7 @@ func (b *Backend) ListContainers(ctx context.Context) ([]*domain.Container, erro Message: msg, } }) + return result, nil } diff --git a/pkg/infrastructure/backend/k8simpl/synchronize_runtime.go b/pkg/infrastructure/backend/k8simpl/synchronize_runtime.go index 44139edf..008b341a 100644 --- a/pkg/infrastructure/backend/k8simpl/synchronize_runtime.go +++ b/pkg/infrastructure/backend/k8simpl/synchronize_runtime.go @@ -84,6 +84,15 @@ func (b *Backend) runtimeSpec(app *domain.RuntimeDesiredState) (*appsv1.Stateful cont.Ports = lo.UniqBy(cont.Ports, comparePort) slices.SortFunc(cont.Ports, ds.LessFunc(comparePort)) + var replicas = int32(1) + var ssLabels = b.appLabel(app.App.ID) + + if b.useSablier(app.App) { + ssLabels["sablier.enable"] = "true" + ssLabels["sablier.group"] = sablierGroupName(app.App.ID) + replicas = int32(0) // scaled by sablier + } + ss := &appsv1.StatefulSet{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", @@ -92,10 +101,10 @@ func (b *Backend) runtimeSpec(app *domain.RuntimeDesiredState) (*appsv1.Stateful ObjectMeta: metav1.ObjectMeta{ Name: deploymentName(app.App.ID), Namespace: b.config.Namespace, - Labels: b.appLabel(app.App.ID), + Labels: ssLabels, }, Spec: appsv1.StatefulSetSpec{ - Replicas: lo.ToPtr(int32(1)), + Replicas: &replicas, Selector: &metav1.LabelSelector{ MatchLabels: appSelector(app.App.ID), }, diff --git a/pkg/infrastructure/grpc/pb/controller.pb.go b/pkg/infrastructure/grpc/pb/controller.pb.go index 3b7d3f56..5716c04e 100644 --- a/pkg/infrastructure/grpc/pb/controller.pb.go +++ b/pkg/infrastructure/grpc/pb/controller.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.2 // protoc v5.27.1 // source: neoshowcase/protobuf/controller.proto @@ -257,11 +257,9 @@ type ImageConfig struct { func (x *ImageConfig) Reset() { *x = ImageConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImageConfig) String() string { @@ -272,7 +270,7 @@ func (*ImageConfig) ProtoMessage() {} func (x *ImageConfig) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -319,11 +317,9 @@ type BuilderSystemInfo struct { func (x *BuilderSystemInfo) Reset() { *x = BuilderSystemInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuilderSystemInfo) String() string { @@ -334,7 +330,7 @@ func (*BuilderSystemInfo) ProtoMessage() {} func (x *BuilderSystemInfo) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -374,11 +370,9 @@ type BuildLogPortion struct { func (x *BuildLogPortion) Reset() { *x = BuildLogPortion{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildLogPortion) String() string { @@ -389,7 +383,7 @@ func (*BuildLogPortion) ProtoMessage() {} func (x *BuildLogPortion) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -429,11 +423,9 @@ type SaveArtifactRequest struct { func (x *SaveArtifactRequest) Reset() { *x = SaveArtifactRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SaveArtifactRequest) String() string { @@ -444,7 +436,7 @@ func (*SaveArtifactRequest) ProtoMessage() {} func (x *SaveArtifactRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -484,11 +476,9 @@ type SaveBuildLogRequest struct { func (x *SaveBuildLogRequest) Reset() { *x = SaveBuildLogRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SaveBuildLogRequest) String() string { @@ -499,7 +489,7 @@ func (*SaveBuildLogRequest) ProtoMessage() {} func (x *SaveBuildLogRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -539,11 +529,9 @@ type SaveRuntimeImageRequest struct { func (x *SaveRuntimeImageRequest) Reset() { *x = SaveRuntimeImageRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SaveRuntimeImageRequest) String() string { @@ -554,7 +542,7 @@ func (*SaveRuntimeImageRequest) ProtoMessage() {} func (x *SaveRuntimeImageRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -596,11 +584,9 @@ type RepositoryPrivate struct { func (x *RepositoryPrivate) Reset() { *x = RepositoryPrivate{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RepositoryPrivate) String() string { @@ -611,7 +597,7 @@ func (*RepositoryPrivate) ProtoMessage() {} func (x *RepositoryPrivate) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -667,11 +653,9 @@ type StartBuildRequest struct { func (x *StartBuildRequest) Reset() { *x = StartBuildRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StartBuildRequest) String() string { @@ -682,7 +666,7 @@ func (*StartBuildRequest) ProtoMessage() {} func (x *StartBuildRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -740,11 +724,9 @@ type BuilderRequest struct { func (x *BuilderRequest) Reset() { *x = BuilderRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuilderRequest) String() string { @@ -755,7 +737,7 @@ func (*BuilderRequest) ProtoMessage() {} func (x *BuilderRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -825,11 +807,9 @@ type ConnectedBody struct { func (x *ConnectedBody) Reset() { *x = ConnectedBody{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ConnectedBody) String() string { @@ -840,7 +820,7 @@ func (*ConnectedBody) ProtoMessage() {} func (x *ConnectedBody) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -873,11 +853,9 @@ type BuildSettled struct { func (x *BuildSettled) Reset() { *x = BuildSettled{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildSettled) String() string { @@ -888,7 +866,7 @@ func (*BuildSettled) ProtoMessage() {} func (x *BuildSettled) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -932,11 +910,9 @@ type BuilderResponse struct { func (x *BuilderResponse) Reset() { *x = BuilderResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuilderResponse) String() string { @@ -947,7 +923,7 @@ func (*BuilderResponse) ProtoMessage() {} func (x *BuilderResponse) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1017,11 +993,9 @@ type CopyFileTreeRequest struct { func (x *CopyFileTreeRequest) Reset() { *x = CopyFileTreeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CopyFileTreeRequest) String() string { @@ -1032,7 +1006,7 @@ func (*CopyFileTreeRequest) ProtoMessage() {} func (x *CopyFileTreeRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1072,11 +1046,9 @@ type HelperExecEnv struct { func (x *HelperExecEnv) Reset() { *x = HelperExecEnv{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HelperExecEnv) String() string { @@ -1087,7 +1059,7 @@ func (*HelperExecEnv) ProtoMessage() {} func (x *HelperExecEnv) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1128,11 +1100,9 @@ type HelperExecRequest struct { func (x *HelperExecRequest) Reset() { *x = HelperExecRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HelperExecRequest) String() string { @@ -1143,7 +1113,7 @@ func (*HelperExecRequest) ProtoMessage() {} func (x *HelperExecRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1194,11 +1164,9 @@ type HelperExecResponse struct { func (x *HelperExecResponse) Reset() { *x = HelperExecResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HelperExecResponse) String() string { @@ -1209,7 +1177,7 @@ func (*HelperExecResponse) ProtoMessage() {} func (x *HelperExecResponse) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1278,11 +1246,9 @@ type SSGenRequest struct { func (x *SSGenRequest) Reset() { *x = SSGenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SSGenRequest) String() string { @@ -1293,7 +1259,7 @@ func (*SSGenRequest) ProtoMessage() {} func (x *SSGenRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1325,11 +1291,9 @@ type GiteaIntegrationRequest struct { func (x *GiteaIntegrationRequest) Reset() { *x = GiteaIntegrationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GiteaIntegrationRequest) String() string { @@ -1340,7 +1304,7 @@ func (*GiteaIntegrationRequest) ProtoMessage() {} func (x *GiteaIntegrationRequest) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1375,11 +1339,9 @@ type ImageConfig_RegistryConfig struct { func (x *ImageConfig_RegistryConfig) Reset() { *x = ImageConfig_RegistryConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImageConfig_RegistryConfig) String() string { @@ -1390,7 +1352,7 @@ func (*ImageConfig_RegistryConfig) ProtoMessage() {} func (x *ImageConfig_RegistryConfig) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_controller_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1823,236 +1785,6 @@ func file_neoshowcase_protobuf_controller_proto_init() { return } file_neoshowcase_protobuf_gateway_proto_init() - if !protoimpl.UnsafeEnabled { - file_neoshowcase_protobuf_controller_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ImageConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*BuilderSystemInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*BuildLogPortion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*SaveArtifactRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*SaveBuildLogRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*SaveRuntimeImageRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*RepositoryPrivate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*StartBuildRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*BuilderRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*ConnectedBody); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*BuildSettled); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*BuilderResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*CopyFileTreeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*HelperExecEnv); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*HelperExecRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*HelperExecResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*SSGenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*GiteaIntegrationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_controller_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*ImageConfig_RegistryConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_neoshowcase_protobuf_controller_proto_msgTypes[8].OneofWrappers = []any{ (*BuilderRequest_StartBuild)(nil), (*BuilderRequest_CancelBuild)(nil), diff --git a/pkg/infrastructure/grpc/pb/gateway.pb.go b/pkg/infrastructure/grpc/pb/gateway.pb.go index ada9efb5..771c60b2 100644 --- a/pkg/infrastructure/grpc/pb/gateway.pb.go +++ b/pkg/infrastructure/grpc/pb/gateway.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.2 // protoc v5.27.1 // source: neoshowcase/protobuf/gateway.proto @@ -270,6 +270,55 @@ func (Repository_AuthMethod) EnumDescriptor() ([]byte, []int) { return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{7, 0} } +type AutoShutdownConfig_StartupBehavior int32 + +const ( + AutoShutdownConfig_UNDEFINED AutoShutdownConfig_StartupBehavior = 0 + AutoShutdownConfig_LOADING_PAGE AutoShutdownConfig_StartupBehavior = 1 + AutoShutdownConfig_BLOCKING AutoShutdownConfig_StartupBehavior = 2 +) + +// Enum value maps for AutoShutdownConfig_StartupBehavior. +var ( + AutoShutdownConfig_StartupBehavior_name = map[int32]string{ + 0: "UNDEFINED", + 1: "LOADING_PAGE", + 2: "BLOCKING", + } + AutoShutdownConfig_StartupBehavior_value = map[string]int32{ + "UNDEFINED": 0, + "LOADING_PAGE": 1, + "BLOCKING": 2, + } +) + +func (x AutoShutdownConfig_StartupBehavior) Enum() *AutoShutdownConfig_StartupBehavior { + p := new(AutoShutdownConfig_StartupBehavior) + *p = x + return p +} + +func (x AutoShutdownConfig_StartupBehavior) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AutoShutdownConfig_StartupBehavior) Descriptor() protoreflect.EnumDescriptor { + return file_neoshowcase_protobuf_gateway_proto_enumTypes[5].Descriptor() +} + +func (AutoShutdownConfig_StartupBehavior) Type() protoreflect.EnumType { + return &file_neoshowcase_protobuf_gateway_proto_enumTypes[5] +} + +func (x AutoShutdownConfig_StartupBehavior) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AutoShutdownConfig_StartupBehavior.Descriptor instead. +func (AutoShutdownConfig_StartupBehavior) EnumDescriptor() ([]byte, []int) { + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{9, 0} +} + type Application_ContainerState int32 const ( @@ -315,11 +364,11 @@ func (x Application_ContainerState) String() string { } func (Application_ContainerState) Descriptor() protoreflect.EnumDescriptor { - return file_neoshowcase_protobuf_gateway_proto_enumTypes[5].Descriptor() + return file_neoshowcase_protobuf_gateway_proto_enumTypes[6].Descriptor() } func (Application_ContainerState) Type() protoreflect.EnumType { - return &file_neoshowcase_protobuf_gateway_proto_enumTypes[5] + return &file_neoshowcase_protobuf_gateway_proto_enumTypes[6] } func (x Application_ContainerState) Number() protoreflect.EnumNumber { @@ -328,7 +377,7 @@ func (x Application_ContainerState) Number() protoreflect.EnumNumber { // Deprecated: Use Application_ContainerState.Descriptor instead. func (Application_ContainerState) EnumDescriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{20, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{21, 0} } type GetRepositoriesRequest_Scope int32 @@ -368,11 +417,11 @@ func (x GetRepositoriesRequest_Scope) String() string { } func (GetRepositoriesRequest_Scope) Descriptor() protoreflect.EnumDescriptor { - return file_neoshowcase_protobuf_gateway_proto_enumTypes[6].Descriptor() + return file_neoshowcase_protobuf_gateway_proto_enumTypes[7].Descriptor() } func (GetRepositoriesRequest_Scope) Type() protoreflect.EnumType { - return &file_neoshowcase_protobuf_gateway_proto_enumTypes[6] + return &file_neoshowcase_protobuf_gateway_proto_enumTypes[7] } func (x GetRepositoriesRequest_Scope) Number() protoreflect.EnumNumber { @@ -381,7 +430,7 @@ func (x GetRepositoriesRequest_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use GetRepositoriesRequest_Scope.Descriptor instead. func (GetRepositoriesRequest_Scope) EnumDescriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{43, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44, 0} } type GetApplicationsRequest_Scope int32 @@ -417,11 +466,11 @@ func (x GetApplicationsRequest_Scope) String() string { } func (GetApplicationsRequest_Scope) Descriptor() protoreflect.EnumDescriptor { - return file_neoshowcase_protobuf_gateway_proto_enumTypes[7].Descriptor() + return file_neoshowcase_protobuf_gateway_proto_enumTypes[8].Descriptor() } func (GetApplicationsRequest_Scope) Type() protoreflect.EnumType { - return &file_neoshowcase_protobuf_gateway_proto_enumTypes[7] + return &file_neoshowcase_protobuf_gateway_proto_enumTypes[8] } func (x GetApplicationsRequest_Scope) Number() protoreflect.EnumNumber { @@ -430,7 +479,7 @@ func (x GetApplicationsRequest_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use GetApplicationsRequest_Scope.Descriptor instead. func (GetApplicationsRequest_Scope) EnumDescriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{51, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52, 0} } type SSHInfo struct { @@ -444,11 +493,9 @@ type SSHInfo struct { func (x *SSHInfo) Reset() { *x = SSHInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SSHInfo) String() string { @@ -459,7 +506,7 @@ func (*SSHInfo) ProtoMessage() {} func (x *SSHInfo) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -502,11 +549,9 @@ type AvailableDomain struct { func (x *AvailableDomain) Reset() { *x = AvailableDomain{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AvailableDomain) String() string { @@ -517,7 +562,7 @@ func (*AvailableDomain) ProtoMessage() {} func (x *AvailableDomain) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -572,11 +617,9 @@ type AvailablePort struct { func (x *AvailablePort) Reset() { *x = AvailablePort{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AvailablePort) String() string { @@ -587,7 +630,7 @@ func (*AvailablePort) ProtoMessage() {} func (x *AvailablePort) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -634,11 +677,9 @@ type AdditionalLink struct { func (x *AdditionalLink) Reset() { *x = AdditionalLink{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AdditionalLink) String() string { @@ -649,7 +690,7 @@ func (*AdditionalLink) ProtoMessage() {} func (x *AdditionalLink) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -701,11 +742,9 @@ type SystemInfo struct { func (x *SystemInfo) Reset() { *x = SystemInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SystemInfo) String() string { @@ -716,7 +755,7 @@ func (*SystemInfo) ProtoMessage() {} func (x *SystemInfo) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -793,11 +832,9 @@ type User struct { func (x *User) Reset() { *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *User) String() string { @@ -808,7 +845,7 @@ func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -865,11 +902,9 @@ type UserKey struct { func (x *UserKey) Reset() { *x = UserKey{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UserKey) String() string { @@ -880,7 +915,7 @@ func (*UserKey) ProtoMessage() {} func (x *UserKey) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -945,11 +980,9 @@ type Repository struct { func (x *Repository) Reset() { *x = Repository{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Repository) String() string { @@ -960,7 +993,7 @@ func (*Repository) ProtoMessage() {} func (x *Repository) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1030,11 +1063,9 @@ type SimpleCommit struct { func (x *SimpleCommit) Reset() { *x = SimpleCommit{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SimpleCommit) String() string { @@ -1045,7 +1076,7 @@ func (*SimpleCommit) ProtoMessage() {} func (x *SimpleCommit) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1088,24 +1119,76 @@ func (x *SimpleCommit) GetMessage() string { return "" } +type AutoShutdownConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Startup AutoShutdownConfig_StartupBehavior `protobuf:"varint,2,opt,name=startup,proto3,enum=neoshowcase.protobuf.AutoShutdownConfig_StartupBehavior" json:"startup,omitempty"` +} + +func (x *AutoShutdownConfig) Reset() { + *x = AutoShutdownConfig{} + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AutoShutdownConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AutoShutdownConfig) ProtoMessage() {} + +func (x *AutoShutdownConfig) ProtoReflect() protoreflect.Message { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AutoShutdownConfig.ProtoReflect.Descriptor instead. +func (*AutoShutdownConfig) Descriptor() ([]byte, []int) { + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{9} +} + +func (x *AutoShutdownConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *AutoShutdownConfig) GetStartup() AutoShutdownConfig_StartupBehavior { + if x != nil { + return x.Startup + } + return AutoShutdownConfig_UNDEFINED +} + type RuntimeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UseMariadb bool `protobuf:"varint,1,opt,name=use_mariadb,json=useMariadb,proto3" json:"use_mariadb,omitempty"` - UseMongodb bool `protobuf:"varint,2,opt,name=use_mongodb,json=useMongodb,proto3" json:"use_mongodb,omitempty"` - Entrypoint string `protobuf:"bytes,3,opt,name=entrypoint,proto3" json:"entrypoint,omitempty"` - Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` + UseMariadb bool `protobuf:"varint,1,opt,name=use_mariadb,json=useMariadb,proto3" json:"use_mariadb,omitempty"` + UseMongodb bool `protobuf:"varint,2,opt,name=use_mongodb,json=useMongodb,proto3" json:"use_mongodb,omitempty"` + Entrypoint string `protobuf:"bytes,3,opt,name=entrypoint,proto3" json:"entrypoint,omitempty"` + Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` + AutoShutdown *AutoShutdownConfig `protobuf:"bytes,5,opt,name=auto_shutdown,json=autoShutdown,proto3" json:"auto_shutdown,omitempty"` } func (x *RuntimeConfig) Reset() { *x = RuntimeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuntimeConfig) String() string { @@ -1115,8 +1198,8 @@ func (x *RuntimeConfig) String() string { func (*RuntimeConfig) ProtoMessage() {} func (x *RuntimeConfig) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1128,7 +1211,7 @@ func (x *RuntimeConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeConfig.ProtoReflect.Descriptor instead. func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{9} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{10} } func (x *RuntimeConfig) GetUseMariadb() bool { @@ -1159,6 +1242,13 @@ func (x *RuntimeConfig) GetCommand() string { return "" } +func (x *RuntimeConfig) GetAutoShutdown() *AutoShutdownConfig { + if x != nil { + return x.AutoShutdown + } + return nil +} + type BuildConfigRuntimeBuildpack struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1170,11 +1260,9 @@ type BuildConfigRuntimeBuildpack struct { func (x *BuildConfigRuntimeBuildpack) Reset() { *x = BuildConfigRuntimeBuildpack{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildConfigRuntimeBuildpack) String() string { @@ -1184,8 +1272,8 @@ func (x *BuildConfigRuntimeBuildpack) String() string { func (*BuildConfigRuntimeBuildpack) ProtoMessage() {} func (x *BuildConfigRuntimeBuildpack) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1197,7 +1285,7 @@ func (x *BuildConfigRuntimeBuildpack) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigRuntimeBuildpack.ProtoReflect.Descriptor instead. func (*BuildConfigRuntimeBuildpack) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{10} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{11} } func (x *BuildConfigRuntimeBuildpack) GetRuntimeConfig() *RuntimeConfig { @@ -1226,11 +1314,9 @@ type BuildConfigRuntimeCmd struct { func (x *BuildConfigRuntimeCmd) Reset() { *x = BuildConfigRuntimeCmd{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildConfigRuntimeCmd) String() string { @@ -1240,8 +1326,8 @@ func (x *BuildConfigRuntimeCmd) String() string { func (*BuildConfigRuntimeCmd) ProtoMessage() {} func (x *BuildConfigRuntimeCmd) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1253,7 +1339,7 @@ func (x *BuildConfigRuntimeCmd) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigRuntimeCmd.ProtoReflect.Descriptor instead. func (*BuildConfigRuntimeCmd) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{11} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{12} } func (x *BuildConfigRuntimeCmd) GetRuntimeConfig() *RuntimeConfig { @@ -1289,11 +1375,9 @@ type BuildConfigRuntimeDockerfile struct { func (x *BuildConfigRuntimeDockerfile) Reset() { *x = BuildConfigRuntimeDockerfile{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildConfigRuntimeDockerfile) String() string { @@ -1303,8 +1387,8 @@ func (x *BuildConfigRuntimeDockerfile) String() string { func (*BuildConfigRuntimeDockerfile) ProtoMessage() {} func (x *BuildConfigRuntimeDockerfile) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1316,7 +1400,7 @@ func (x *BuildConfigRuntimeDockerfile) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigRuntimeDockerfile.ProtoReflect.Descriptor instead. func (*BuildConfigRuntimeDockerfile) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{12} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{13} } func (x *BuildConfigRuntimeDockerfile) GetRuntimeConfig() *RuntimeConfig { @@ -1351,11 +1435,9 @@ type StaticConfig struct { func (x *StaticConfig) Reset() { *x = StaticConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StaticConfig) String() string { @@ -1365,8 +1447,8 @@ func (x *StaticConfig) String() string { func (*StaticConfig) ProtoMessage() {} func (x *StaticConfig) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1378,7 +1460,7 @@ func (x *StaticConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use StaticConfig.ProtoReflect.Descriptor instead. func (*StaticConfig) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{13} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{14} } func (x *StaticConfig) GetArtifactPath() string { @@ -1406,11 +1488,9 @@ type BuildConfigStaticBuildpack struct { func (x *BuildConfigStaticBuildpack) Reset() { *x = BuildConfigStaticBuildpack{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildConfigStaticBuildpack) String() string { @@ -1420,8 +1500,8 @@ func (x *BuildConfigStaticBuildpack) String() string { func (*BuildConfigStaticBuildpack) ProtoMessage() {} func (x *BuildConfigStaticBuildpack) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1433,7 +1513,7 @@ func (x *BuildConfigStaticBuildpack) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigStaticBuildpack.ProtoReflect.Descriptor instead. func (*BuildConfigStaticBuildpack) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{14} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{15} } func (x *BuildConfigStaticBuildpack) GetStaticConfig() *StaticConfig { @@ -1462,11 +1542,9 @@ type BuildConfigStaticCmd struct { func (x *BuildConfigStaticCmd) Reset() { *x = BuildConfigStaticCmd{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildConfigStaticCmd) String() string { @@ -1476,8 +1554,8 @@ func (x *BuildConfigStaticCmd) String() string { func (*BuildConfigStaticCmd) ProtoMessage() {} func (x *BuildConfigStaticCmd) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1489,7 +1567,7 @@ func (x *BuildConfigStaticCmd) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigStaticCmd.ProtoReflect.Descriptor instead. func (*BuildConfigStaticCmd) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{15} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{16} } func (x *BuildConfigStaticCmd) GetStaticConfig() *StaticConfig { @@ -1525,11 +1603,9 @@ type BuildConfigStaticDockerfile struct { func (x *BuildConfigStaticDockerfile) Reset() { *x = BuildConfigStaticDockerfile{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildConfigStaticDockerfile) String() string { @@ -1539,8 +1615,8 @@ func (x *BuildConfigStaticDockerfile) String() string { func (*BuildConfigStaticDockerfile) ProtoMessage() {} func (x *BuildConfigStaticDockerfile) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1552,7 +1628,7 @@ func (x *BuildConfigStaticDockerfile) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigStaticDockerfile.ProtoReflect.Descriptor instead. func (*BuildConfigStaticDockerfile) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{16} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{17} } func (x *BuildConfigStaticDockerfile) GetStaticConfig() *StaticConfig { @@ -1594,11 +1670,9 @@ type ApplicationConfig struct { func (x *ApplicationConfig) Reset() { *x = ApplicationConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationConfig) String() string { @@ -1608,8 +1682,8 @@ func (x *ApplicationConfig) String() string { func (*ApplicationConfig) ProtoMessage() {} func (x *ApplicationConfig) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1621,7 +1695,7 @@ func (x *ApplicationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationConfig.ProtoReflect.Descriptor instead. func (*ApplicationConfig) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{17} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{18} } func (m *ApplicationConfig) GetBuildConfig() isApplicationConfig_BuildConfig { @@ -1730,11 +1804,9 @@ type Website struct { func (x *Website) Reset() { *x = Website{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Website) String() string { @@ -1744,8 +1816,8 @@ func (x *Website) String() string { func (*Website) ProtoMessage() {} func (x *Website) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1757,7 +1829,7 @@ func (x *Website) ProtoReflect() protoreflect.Message { // Deprecated: Use Website.ProtoReflect.Descriptor instead. func (*Website) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{18} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{19} } func (x *Website) GetId() string { @@ -1828,11 +1900,9 @@ type PortPublication struct { func (x *PortPublication) Reset() { *x = PortPublication{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PortPublication) String() string { @@ -1842,8 +1912,8 @@ func (x *PortPublication) String() string { func (*PortPublication) ProtoMessage() {} func (x *PortPublication) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1855,7 +1925,7 @@ func (x *PortPublication) ProtoReflect() protoreflect.Message { // Deprecated: Use PortPublication.ProtoReflect.Descriptor instead. func (*PortPublication) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{19} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{20} } func (x *PortPublication) GetInternetPort() int32 { @@ -1905,11 +1975,9 @@ type Application struct { func (x *Application) Reset() { *x = Application{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Application) String() string { @@ -1919,8 +1987,8 @@ func (x *Application) String() string { func (*Application) ProtoMessage() {} func (x *Application) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1932,7 +2000,7 @@ func (x *Application) ProtoReflect() protoreflect.Message { // Deprecated: Use Application.ProtoReflect.Descriptor instead. func (*Application) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{20} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{21} } func (x *Application) GetId() string { @@ -2067,11 +2135,9 @@ type ApplicationEnvVar struct { func (x *ApplicationEnvVar) Reset() { *x = ApplicationEnvVar{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationEnvVar) String() string { @@ -2081,8 +2147,8 @@ func (x *ApplicationEnvVar) String() string { func (*ApplicationEnvVar) ProtoMessage() {} func (x *ApplicationEnvVar) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2094,7 +2160,7 @@ func (x *ApplicationEnvVar) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationEnvVar.ProtoReflect.Descriptor instead. func (*ApplicationEnvVar) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{21} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{22} } func (x *ApplicationEnvVar) GetApplicationId() string { @@ -2135,11 +2201,9 @@ type ApplicationEnvVars struct { func (x *ApplicationEnvVars) Reset() { *x = ApplicationEnvVars{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationEnvVars) String() string { @@ -2149,8 +2213,8 @@ func (x *ApplicationEnvVars) String() string { func (*ApplicationEnvVars) ProtoMessage() {} func (x *ApplicationEnvVars) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2162,7 +2226,7 @@ func (x *ApplicationEnvVars) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationEnvVars.ProtoReflect.Descriptor instead. func (*ApplicationEnvVars) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{22} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{23} } func (x *ApplicationEnvVars) GetVariables() []*ApplicationEnvVar { @@ -2187,11 +2251,9 @@ type Artifact struct { func (x *Artifact) Reset() { *x = Artifact{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Artifact) String() string { @@ -2201,8 +2263,8 @@ func (x *Artifact) String() string { func (*Artifact) ProtoMessage() {} func (x *Artifact) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2214,7 +2276,7 @@ func (x *Artifact) ProtoReflect() protoreflect.Message { // Deprecated: Use Artifact.ProtoReflect.Descriptor instead. func (*Artifact) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{23} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{24} } func (x *Artifact) GetId() string { @@ -2270,11 +2332,9 @@ type ArtifactContent struct { func (x *ArtifactContent) Reset() { *x = ArtifactContent{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ArtifactContent) String() string { @@ -2284,8 +2344,8 @@ func (x *ArtifactContent) String() string { func (*ArtifactContent) ProtoMessage() {} func (x *ArtifactContent) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2297,7 +2357,7 @@ func (x *ArtifactContent) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactContent.ProtoReflect.Descriptor instead. func (*ArtifactContent) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{24} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{25} } func (x *ArtifactContent) GetFilename() string { @@ -2327,11 +2387,9 @@ type RuntimeImage struct { func (x *RuntimeImage) Reset() { *x = RuntimeImage{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RuntimeImage) String() string { @@ -2341,8 +2399,8 @@ func (x *RuntimeImage) String() string { func (*RuntimeImage) ProtoMessage() {} func (x *RuntimeImage) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2354,7 +2412,7 @@ func (x *RuntimeImage) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeImage.ProtoReflect.Descriptor instead. func (*RuntimeImage) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{25} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{26} } func (x *RuntimeImage) GetId() string { @@ -2395,11 +2453,9 @@ type AvailableMetrics struct { func (x *AvailableMetrics) Reset() { *x = AvailableMetrics{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AvailableMetrics) String() string { @@ -2409,8 +2465,8 @@ func (x *AvailableMetrics) String() string { func (*AvailableMetrics) ProtoMessage() {} func (x *AvailableMetrics) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2422,7 +2478,7 @@ func (x *AvailableMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use AvailableMetrics.ProtoReflect.Descriptor instead. func (*AvailableMetrics) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{26} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{27} } func (x *AvailableMetrics) GetMetricsNames() []string { @@ -2443,11 +2499,9 @@ type ApplicationMetric struct { func (x *ApplicationMetric) Reset() { *x = ApplicationMetric{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationMetric) String() string { @@ -2457,8 +2511,8 @@ func (x *ApplicationMetric) String() string { func (*ApplicationMetric) ProtoMessage() {} func (x *ApplicationMetric) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2470,7 +2524,7 @@ func (x *ApplicationMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationMetric.ProtoReflect.Descriptor instead. func (*ApplicationMetric) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{27} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{28} } func (x *ApplicationMetric) GetTime() *timestamppb.Timestamp { @@ -2497,11 +2551,9 @@ type ApplicationMetrics struct { func (x *ApplicationMetrics) Reset() { *x = ApplicationMetrics{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationMetrics) String() string { @@ -2511,8 +2563,8 @@ func (x *ApplicationMetrics) String() string { func (*ApplicationMetrics) ProtoMessage() {} func (x *ApplicationMetrics) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2524,7 +2576,7 @@ func (x *ApplicationMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationMetrics.ProtoReflect.Descriptor instead. func (*ApplicationMetrics) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{28} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{29} } func (x *ApplicationMetrics) GetMetrics() []*ApplicationMetric { @@ -2545,11 +2597,9 @@ type ApplicationOutput struct { func (x *ApplicationOutput) Reset() { *x = ApplicationOutput{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationOutput) String() string { @@ -2559,8 +2609,8 @@ func (x *ApplicationOutput) String() string { func (*ApplicationOutput) ProtoMessage() {} func (x *ApplicationOutput) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2572,7 +2622,7 @@ func (x *ApplicationOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationOutput.ProtoReflect.Descriptor instead. func (*ApplicationOutput) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{29} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{30} } func (x *ApplicationOutput) GetTime() *timestamppb.Timestamp { @@ -2599,11 +2649,9 @@ type ApplicationOutputs struct { func (x *ApplicationOutputs) Reset() { *x = ApplicationOutputs{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationOutputs) String() string { @@ -2613,8 +2661,8 @@ func (x *ApplicationOutputs) String() string { func (*ApplicationOutputs) ProtoMessage() {} func (x *ApplicationOutputs) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2626,7 +2674,7 @@ func (x *ApplicationOutputs) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationOutputs.ProtoReflect.Descriptor instead. func (*ApplicationOutputs) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{30} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{31} } func (x *ApplicationOutputs) GetOutputs() []*ApplicationOutput { @@ -2656,11 +2704,9 @@ type Build struct { func (x *Build) Reset() { *x = Build{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Build) String() string { @@ -2670,8 +2716,8 @@ func (x *Build) String() string { func (*Build) ProtoMessage() {} func (x *Build) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2683,7 +2729,7 @@ func (x *Build) ProtoReflect() protoreflect.Message { // Deprecated: Use Build.ProtoReflect.Descriptor instead. func (*Build) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{31} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{32} } func (x *Build) GetId() string { @@ -2773,11 +2819,9 @@ type BuildLog struct { func (x *BuildLog) Reset() { *x = BuildLog{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildLog) String() string { @@ -2787,8 +2831,8 @@ func (x *BuildLog) String() string { func (*BuildLog) ProtoMessage() {} func (x *BuildLog) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2800,7 +2844,7 @@ func (x *BuildLog) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildLog.ProtoReflect.Descriptor instead. func (*BuildLog) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{32} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{33} } func (x *BuildLog) GetLog() []byte { @@ -2821,11 +2865,9 @@ type GitRef struct { func (x *GitRef) Reset() { *x = GitRef{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GitRef) String() string { @@ -2835,8 +2877,8 @@ func (x *GitRef) String() string { func (*GitRef) ProtoMessage() {} func (x *GitRef) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2848,7 +2890,7 @@ func (x *GitRef) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRef.ProtoReflect.Descriptor instead. func (*GitRef) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{33} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{34} } func (x *GitRef) GetRefName() string { @@ -2876,11 +2918,9 @@ type GenerateKeyPairResponse struct { func (x *GenerateKeyPairResponse) Reset() { *x = GenerateKeyPairResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GenerateKeyPairResponse) String() string { @@ -2890,8 +2930,8 @@ func (x *GenerateKeyPairResponse) String() string { func (*GenerateKeyPairResponse) ProtoMessage() {} func (x *GenerateKeyPairResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2903,7 +2943,7 @@ func (x *GenerateKeyPairResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateKeyPairResponse.ProtoReflect.Descriptor instead. func (*GenerateKeyPairResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{34} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{35} } func (x *GenerateKeyPairResponse) GetKeyId() string { @@ -2930,11 +2970,9 @@ type GetUsersResponse struct { func (x *GetUsersResponse) Reset() { *x = GetUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUsersResponse) String() string { @@ -2944,8 +2982,8 @@ func (x *GetUsersResponse) String() string { func (*GetUsersResponse) ProtoMessage() {} func (x *GetUsersResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2957,7 +2995,7 @@ func (x *GetUsersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUsersResponse.ProtoReflect.Descriptor instead. func (*GetUsersResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{35} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{36} } func (x *GetUsersResponse) GetUsers() []*User { @@ -2977,11 +3015,9 @@ type GetUserKeysResponse struct { func (x *GetUserKeysResponse) Reset() { *x = GetUserKeysResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserKeysResponse) String() string { @@ -2991,8 +3027,8 @@ func (x *GetUserKeysResponse) String() string { func (*GetUserKeysResponse) ProtoMessage() {} func (x *GetUserKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3004,7 +3040,7 @@ func (x *GetUserKeysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserKeysResponse.ProtoReflect.Descriptor instead. func (*GetUserKeysResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{36} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{37} } func (x *GetUserKeysResponse) GetKeys() []*UserKey { @@ -3025,11 +3061,9 @@ type CreateUserKeyRequest struct { func (x *CreateUserKeyRequest) Reset() { *x = CreateUserKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateUserKeyRequest) String() string { @@ -3039,8 +3073,8 @@ func (x *CreateUserKeyRequest) String() string { func (*CreateUserKeyRequest) ProtoMessage() {} func (x *CreateUserKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3052,7 +3086,7 @@ func (x *CreateUserKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserKeyRequest.ProtoReflect.Descriptor instead. func (*CreateUserKeyRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{37} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{38} } func (x *CreateUserKeyRequest) GetPublicKey() string { @@ -3079,11 +3113,9 @@ type DeleteUserKeyRequest struct { func (x *DeleteUserKeyRequest) Reset() { *x = DeleteUserKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUserKeyRequest) String() string { @@ -3093,8 +3125,8 @@ func (x *DeleteUserKeyRequest) String() string { func (*DeleteUserKeyRequest) ProtoMessage() {} func (x *DeleteUserKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3106,7 +3138,7 @@ func (x *DeleteUserKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserKeyRequest.ProtoReflect.Descriptor instead. func (*DeleteUserKeyRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{38} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{39} } func (x *DeleteUserKeyRequest) GetKeyId() string { @@ -3127,11 +3159,9 @@ type CreateRepositoryAuthBasic struct { func (x *CreateRepositoryAuthBasic) Reset() { *x = CreateRepositoryAuthBasic{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRepositoryAuthBasic) String() string { @@ -3141,8 +3171,8 @@ func (x *CreateRepositoryAuthBasic) String() string { func (*CreateRepositoryAuthBasic) ProtoMessage() {} func (x *CreateRepositoryAuthBasic) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3154,7 +3184,7 @@ func (x *CreateRepositoryAuthBasic) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryAuthBasic.ProtoReflect.Descriptor instead. func (*CreateRepositoryAuthBasic) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{39} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{40} } func (x *CreateRepositoryAuthBasic) GetUsername() string { @@ -3181,11 +3211,9 @@ type CreateRepositoryAuthSSH struct { func (x *CreateRepositoryAuthSSH) Reset() { *x = CreateRepositoryAuthSSH{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRepositoryAuthSSH) String() string { @@ -3195,8 +3223,8 @@ func (x *CreateRepositoryAuthSSH) String() string { func (*CreateRepositoryAuthSSH) ProtoMessage() {} func (x *CreateRepositoryAuthSSH) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3208,7 +3236,7 @@ func (x *CreateRepositoryAuthSSH) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryAuthSSH.ProtoReflect.Descriptor instead. func (*CreateRepositoryAuthSSH) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{40} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{41} } func (x *CreateRepositoryAuthSSH) GetKeyId() string { @@ -3233,11 +3261,9 @@ type CreateRepositoryAuth struct { func (x *CreateRepositoryAuth) Reset() { *x = CreateRepositoryAuth{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRepositoryAuth) String() string { @@ -3247,8 +3273,8 @@ func (x *CreateRepositoryAuth) String() string { func (*CreateRepositoryAuth) ProtoMessage() {} func (x *CreateRepositoryAuth) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3260,7 +3286,7 @@ func (x *CreateRepositoryAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryAuth.ProtoReflect.Descriptor instead. func (*CreateRepositoryAuth) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{41} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{42} } func (m *CreateRepositoryAuth) GetAuth() isCreateRepositoryAuth_Auth { @@ -3325,11 +3351,9 @@ type CreateRepositoryRequest struct { func (x *CreateRepositoryRequest) Reset() { *x = CreateRepositoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRepositoryRequest) String() string { @@ -3339,8 +3363,8 @@ func (x *CreateRepositoryRequest) String() string { func (*CreateRepositoryRequest) ProtoMessage() {} func (x *CreateRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3352,7 +3376,7 @@ func (x *CreateRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryRequest.ProtoReflect.Descriptor instead. func (*CreateRepositoryRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{42} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{43} } func (x *CreateRepositoryRequest) GetName() string { @@ -3386,11 +3410,9 @@ type GetRepositoriesRequest struct { func (x *GetRepositoriesRequest) Reset() { *x = GetRepositoriesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRepositoriesRequest) String() string { @@ -3400,8 +3422,8 @@ func (x *GetRepositoriesRequest) String() string { func (*GetRepositoriesRequest) ProtoMessage() {} func (x *GetRepositoriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3413,7 +3435,7 @@ func (x *GetRepositoriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoriesRequest.ProtoReflect.Descriptor instead. func (*GetRepositoriesRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{43} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44} } func (x *GetRepositoriesRequest) GetScope() GetRepositoriesRequest_Scope { @@ -3437,11 +3459,9 @@ type UpdateRepositoryRequest struct { func (x *UpdateRepositoryRequest) Reset() { *x = UpdateRepositoryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateRepositoryRequest) String() string { @@ -3451,8 +3471,8 @@ func (x *UpdateRepositoryRequest) String() string { func (*UpdateRepositoryRequest) ProtoMessage() {} func (x *UpdateRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3464,7 +3484,7 @@ func (x *UpdateRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRepositoryRequest.ProtoReflect.Descriptor instead. func (*UpdateRepositoryRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{45} } func (x *UpdateRepositoryRequest) GetId() string { @@ -3512,11 +3532,9 @@ type RepositoryIdRequest struct { func (x *RepositoryIdRequest) Reset() { *x = RepositoryIdRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RepositoryIdRequest) String() string { @@ -3526,8 +3544,8 @@ func (x *RepositoryIdRequest) String() string { func (*RepositoryIdRequest) ProtoMessage() {} func (x *RepositoryIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3539,7 +3557,7 @@ func (x *RepositoryIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryIdRequest.ProtoReflect.Descriptor instead. func (*RepositoryIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{45} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{46} } func (x *RepositoryIdRequest) GetRepositoryId() string { @@ -3559,11 +3577,9 @@ type GetRepositoryCommitsRequest struct { func (x *GetRepositoryCommitsRequest) Reset() { *x = GetRepositoryCommitsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRepositoryCommitsRequest) String() string { @@ -3573,8 +3589,8 @@ func (x *GetRepositoryCommitsRequest) String() string { func (*GetRepositoryCommitsRequest) ProtoMessage() {} func (x *GetRepositoryCommitsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3586,7 +3602,7 @@ func (x *GetRepositoryCommitsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryCommitsRequest.ProtoReflect.Descriptor instead. func (*GetRepositoryCommitsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{46} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{47} } func (x *GetRepositoryCommitsRequest) GetHashes() []string { @@ -3606,11 +3622,9 @@ type GetRepositoryCommitsResponse struct { func (x *GetRepositoryCommitsResponse) Reset() { *x = GetRepositoryCommitsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRepositoryCommitsResponse) String() string { @@ -3620,8 +3634,8 @@ func (x *GetRepositoryCommitsResponse) String() string { func (*GetRepositoryCommitsResponse) ProtoMessage() {} func (x *GetRepositoryCommitsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3633,7 +3647,7 @@ func (x *GetRepositoryCommitsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryCommitsResponse.ProtoReflect.Descriptor instead. func (*GetRepositoryCommitsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{47} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{48} } func (x *GetRepositoryCommitsResponse) GetCommits() []*SimpleCommit { @@ -3659,11 +3673,9 @@ type CreateWebsiteRequest struct { func (x *CreateWebsiteRequest) Reset() { *x = CreateWebsiteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateWebsiteRequest) String() string { @@ -3673,8 +3685,8 @@ func (x *CreateWebsiteRequest) String() string { func (*CreateWebsiteRequest) ProtoMessage() {} func (x *CreateWebsiteRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3686,7 +3698,7 @@ func (x *CreateWebsiteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWebsiteRequest.ProtoReflect.Descriptor instead. func (*CreateWebsiteRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{48} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{49} } func (x *CreateWebsiteRequest) GetFqdn() string { @@ -3748,11 +3760,9 @@ type DeleteWebsiteRequest struct { func (x *DeleteWebsiteRequest) Reset() { *x = DeleteWebsiteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteWebsiteRequest) String() string { @@ -3762,8 +3772,8 @@ func (x *DeleteWebsiteRequest) String() string { func (*DeleteWebsiteRequest) ProtoMessage() {} func (x *DeleteWebsiteRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3775,7 +3785,7 @@ func (x *DeleteWebsiteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWebsiteRequest.ProtoReflect.Descriptor instead. func (*DeleteWebsiteRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{49} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{50} } func (x *DeleteWebsiteRequest) GetId() string { @@ -3801,11 +3811,9 @@ type CreateApplicationRequest struct { func (x *CreateApplicationRequest) Reset() { *x = CreateApplicationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateApplicationRequest) String() string { @@ -3815,8 +3823,8 @@ func (x *CreateApplicationRequest) String() string { func (*CreateApplicationRequest) ProtoMessage() {} func (x *CreateApplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3828,7 +3836,7 @@ func (x *CreateApplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateApplicationRequest.ProtoReflect.Descriptor instead. func (*CreateApplicationRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{50} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{51} } func (x *CreateApplicationRequest) GetName() string { @@ -3891,11 +3899,9 @@ type GetApplicationsRequest struct { func (x *GetApplicationsRequest) Reset() { *x = GetApplicationsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetApplicationsRequest) String() string { @@ -3905,8 +3911,8 @@ func (x *GetApplicationsRequest) String() string { func (*GetApplicationsRequest) ProtoMessage() {} func (x *GetApplicationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3918,7 +3924,7 @@ func (x *GetApplicationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationsRequest.ProtoReflect.Descriptor instead. func (*GetApplicationsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{51} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52} } func (x *GetApplicationsRequest) GetScope() GetApplicationsRequest_Scope { @@ -3952,11 +3958,9 @@ type UpdateApplicationRequest struct { func (x *UpdateApplicationRequest) Reset() { *x = UpdateApplicationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateApplicationRequest) String() string { @@ -3966,8 +3970,8 @@ func (x *UpdateApplicationRequest) String() string { func (*UpdateApplicationRequest) ProtoMessage() {} func (x *UpdateApplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3979,7 +3983,7 @@ func (x *UpdateApplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateApplicationRequest.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53} } func (x *UpdateApplicationRequest) GetId() string { @@ -4048,11 +4052,9 @@ type GetRepositoriesResponse struct { func (x *GetRepositoriesResponse) Reset() { *x = GetRepositoriesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRepositoriesResponse) String() string { @@ -4062,8 +4064,8 @@ func (x *GetRepositoriesResponse) String() string { func (*GetRepositoriesResponse) ProtoMessage() {} func (x *GetRepositoriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4075,7 +4077,7 @@ func (x *GetRepositoriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoriesResponse.ProtoReflect.Descriptor instead. func (*GetRepositoriesResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{54} } func (x *GetRepositoriesResponse) GetRepositories() []*Repository { @@ -4095,11 +4097,9 @@ type GetApplicationsResponse struct { func (x *GetApplicationsResponse) Reset() { *x = GetApplicationsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetApplicationsResponse) String() string { @@ -4109,8 +4109,8 @@ func (x *GetApplicationsResponse) String() string { func (*GetApplicationsResponse) ProtoMessage() {} func (x *GetApplicationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4122,7 +4122,7 @@ func (x *GetApplicationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationsResponse.ProtoReflect.Descriptor instead. func (*GetApplicationsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{54} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{55} } func (x *GetApplicationsResponse) GetApplications() []*Application { @@ -4142,11 +4142,9 @@ type ApplicationIdRequest struct { func (x *ApplicationIdRequest) Reset() { *x = ApplicationIdRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ApplicationIdRequest) String() string { @@ -4156,8 +4154,8 @@ func (x *ApplicationIdRequest) String() string { func (*ApplicationIdRequest) ProtoMessage() {} func (x *ApplicationIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4169,7 +4167,7 @@ func (x *ApplicationIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationIdRequest.ProtoReflect.Descriptor instead. func (*ApplicationIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{55} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{56} } func (x *ApplicationIdRequest) GetId() string { @@ -4191,11 +4189,9 @@ type GetAllBuildsRequest struct { func (x *GetAllBuildsRequest) Reset() { *x = GetAllBuildsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllBuildsRequest) String() string { @@ -4205,8 +4201,8 @@ func (x *GetAllBuildsRequest) String() string { func (*GetAllBuildsRequest) ProtoMessage() {} func (x *GetAllBuildsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4218,7 +4214,7 @@ func (x *GetAllBuildsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllBuildsRequest.ProtoReflect.Descriptor instead. func (*GetAllBuildsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{56} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57} } func (x *GetAllBuildsRequest) GetPage() int32 { @@ -4245,11 +4241,9 @@ type BuildIdRequest struct { func (x *BuildIdRequest) Reset() { *x = BuildIdRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BuildIdRequest) String() string { @@ -4259,8 +4253,8 @@ func (x *BuildIdRequest) String() string { func (*BuildIdRequest) ProtoMessage() {} func (x *BuildIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4272,7 +4266,7 @@ func (x *BuildIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildIdRequest.ProtoReflect.Descriptor instead. func (*BuildIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{58} } func (x *BuildIdRequest) GetBuildId() string { @@ -4292,11 +4286,9 @@ type ArtifactIdRequest struct { func (x *ArtifactIdRequest) Reset() { *x = ArtifactIdRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ArtifactIdRequest) String() string { @@ -4306,8 +4298,8 @@ func (x *ArtifactIdRequest) String() string { func (*ArtifactIdRequest) ProtoMessage() {} func (x *ArtifactIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4319,7 +4311,7 @@ func (x *ArtifactIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactIdRequest.ProtoReflect.Descriptor instead. func (*ArtifactIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{58} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{59} } func (x *ArtifactIdRequest) GetArtifactId() string { @@ -4339,11 +4331,9 @@ type GetBuildsResponse struct { func (x *GetBuildsResponse) Reset() { *x = GetBuildsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBuildsResponse) String() string { @@ -4353,8 +4343,8 @@ func (x *GetBuildsResponse) String() string { func (*GetBuildsResponse) ProtoMessage() {} func (x *GetBuildsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4366,7 +4356,7 @@ func (x *GetBuildsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBuildsResponse.ProtoReflect.Descriptor instead. func (*GetBuildsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{59} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{60} } func (x *GetBuildsResponse) GetBuilds() []*Build { @@ -4388,11 +4378,9 @@ type SetApplicationEnvVarRequest struct { func (x *SetApplicationEnvVarRequest) Reset() { *x = SetApplicationEnvVarRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetApplicationEnvVarRequest) String() string { @@ -4402,8 +4390,8 @@ func (x *SetApplicationEnvVarRequest) String() string { func (*SetApplicationEnvVarRequest) ProtoMessage() {} func (x *SetApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4415,7 +4403,7 @@ func (x *SetApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetApplicationEnvVarRequest.ProtoReflect.Descriptor instead. func (*SetApplicationEnvVarRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{60} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{61} } func (x *SetApplicationEnvVarRequest) GetApplicationId() string { @@ -4450,11 +4438,9 @@ type DeleteApplicationEnvVarRequest struct { func (x *DeleteApplicationEnvVarRequest) Reset() { *x = DeleteApplicationEnvVarRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteApplicationEnvVarRequest) String() string { @@ -4464,8 +4450,8 @@ func (x *DeleteApplicationEnvVarRequest) String() string { func (*DeleteApplicationEnvVarRequest) ProtoMessage() {} func (x *DeleteApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4477,7 +4463,7 @@ func (x *DeleteApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteApplicationEnvVarRequest.ProtoReflect.Descriptor instead. func (*DeleteApplicationEnvVarRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{61} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{62} } func (x *DeleteApplicationEnvVarRequest) GetApplicationId() string { @@ -4507,11 +4493,9 @@ type GetApplicationMetricsRequest struct { func (x *GetApplicationMetricsRequest) Reset() { *x = GetApplicationMetricsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetApplicationMetricsRequest) String() string { @@ -4521,8 +4505,8 @@ func (x *GetApplicationMetricsRequest) String() string { func (*GetApplicationMetricsRequest) ProtoMessage() {} func (x *GetApplicationMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4534,7 +4518,7 @@ func (x *GetApplicationMetricsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationMetricsRequest.ProtoReflect.Descriptor instead. func (*GetApplicationMetricsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{62} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{63} } func (x *GetApplicationMetricsRequest) GetApplicationId() string { @@ -4577,11 +4561,9 @@ type GetOutputRequest struct { func (x *GetOutputRequest) Reset() { *x = GetOutputRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOutputRequest) String() string { @@ -4591,8 +4573,8 @@ func (x *GetOutputRequest) String() string { func (*GetOutputRequest) ProtoMessage() {} func (x *GetOutputRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4604,7 +4586,7 @@ func (x *GetOutputRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutputRequest.ProtoReflect.Descriptor instead. func (*GetOutputRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{63} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{64} } func (x *GetOutputRequest) GetApplicationId() string { @@ -4639,11 +4621,9 @@ type GetOutputStreamRequest struct { func (x *GetOutputStreamRequest) Reset() { *x = GetOutputStreamRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOutputStreamRequest) String() string { @@ -4653,8 +4633,8 @@ func (x *GetOutputStreamRequest) String() string { func (*GetOutputStreamRequest) ProtoMessage() {} func (x *GetOutputStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4666,7 +4646,7 @@ func (x *GetOutputStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutputStreamRequest.ProtoReflect.Descriptor instead. func (*GetOutputStreamRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{64} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{65} } func (x *GetOutputStreamRequest) GetApplicationId() string { @@ -4694,11 +4674,9 @@ type RetryCommitBuildRequest struct { func (x *RetryCommitBuildRequest) Reset() { *x = RetryCommitBuildRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RetryCommitBuildRequest) String() string { @@ -4708,8 +4686,8 @@ func (x *RetryCommitBuildRequest) String() string { func (*RetryCommitBuildRequest) ProtoMessage() {} func (x *RetryCommitBuildRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4721,7 +4699,7 @@ func (x *RetryCommitBuildRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryCommitBuildRequest.ProtoReflect.Descriptor instead. func (*RetryCommitBuildRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{65} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{66} } func (x *RetryCommitBuildRequest) GetApplicationId() string { @@ -4748,11 +4726,9 @@ type GetRepositoryRefsResponse struct { func (x *GetRepositoryRefsResponse) Reset() { *x = GetRepositoryRefsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRepositoryRefsResponse) String() string { @@ -4762,8 +4738,8 @@ func (x *GetRepositoryRefsResponse) String() string { func (*GetRepositoryRefsResponse) ProtoMessage() {} func (x *GetRepositoryRefsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4775,7 +4751,7 @@ func (x *GetRepositoryRefsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryRefsResponse.ProtoReflect.Descriptor instead. func (*GetRepositoryRefsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{66} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{67} } func (x *GetRepositoryRefsResponse) GetRefs() []*GitRef { @@ -4795,11 +4771,9 @@ type UpdateRepositoryRequest_UpdateOwners struct { func (x *UpdateRepositoryRequest_UpdateOwners) Reset() { *x = UpdateRepositoryRequest_UpdateOwners{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateRepositoryRequest_UpdateOwners) String() string { @@ -4809,8 +4783,8 @@ func (x *UpdateRepositoryRequest_UpdateOwners) String() string { func (*UpdateRepositoryRequest_UpdateOwners) ProtoMessage() {} func (x *UpdateRepositoryRequest_UpdateOwners) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4822,7 +4796,7 @@ func (x *UpdateRepositoryRequest_UpdateOwners) ProtoReflect() protoreflect.Messa // Deprecated: Use UpdateRepositoryRequest_UpdateOwners.ProtoReflect.Descriptor instead. func (*UpdateRepositoryRequest_UpdateOwners) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{45, 0} } func (x *UpdateRepositoryRequest_UpdateOwners) GetOwnerIds() []string { @@ -4842,11 +4816,9 @@ type UpdateApplicationRequest_UpdateWebsites struct { func (x *UpdateApplicationRequest_UpdateWebsites) Reset() { *x = UpdateApplicationRequest_UpdateWebsites{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateApplicationRequest_UpdateWebsites) String() string { @@ -4856,8 +4828,8 @@ func (x *UpdateApplicationRequest_UpdateWebsites) String() string { func (*UpdateApplicationRequest_UpdateWebsites) ProtoMessage() {} func (x *UpdateApplicationRequest_UpdateWebsites) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4869,7 +4841,7 @@ func (x *UpdateApplicationRequest_UpdateWebsites) ProtoReflect() protoreflect.Me // Deprecated: Use UpdateApplicationRequest_UpdateWebsites.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest_UpdateWebsites) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53, 0} } func (x *UpdateApplicationRequest_UpdateWebsites) GetWebsites() []*CreateWebsiteRequest { @@ -4889,11 +4861,9 @@ type UpdateApplicationRequest_UpdatePorts struct { func (x *UpdateApplicationRequest_UpdatePorts) Reset() { *x = UpdateApplicationRequest_UpdatePorts{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateApplicationRequest_UpdatePorts) String() string { @@ -4903,8 +4873,8 @@ func (x *UpdateApplicationRequest_UpdatePorts) String() string { func (*UpdateApplicationRequest_UpdatePorts) ProtoMessage() {} func (x *UpdateApplicationRequest_UpdatePorts) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4916,7 +4886,7 @@ func (x *UpdateApplicationRequest_UpdatePorts) ProtoReflect() protoreflect.Messa // Deprecated: Use UpdateApplicationRequest_UpdatePorts.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest_UpdatePorts) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52, 1} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53, 1} } func (x *UpdateApplicationRequest_UpdatePorts) GetPortPublications() []*PortPublication { @@ -4936,11 +4906,9 @@ type UpdateApplicationRequest_UpdateOwners struct { func (x *UpdateApplicationRequest_UpdateOwners) Reset() { *x = UpdateApplicationRequest_UpdateOwners{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateApplicationRequest_UpdateOwners) String() string { @@ -4950,8 +4918,8 @@ func (x *UpdateApplicationRequest_UpdateOwners) String() string { func (*UpdateApplicationRequest_UpdateOwners) ProtoMessage() {} func (x *UpdateApplicationRequest_UpdateOwners) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[71] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4963,7 +4931,7 @@ func (x *UpdateApplicationRequest_UpdateOwners) ProtoReflect() protoreflect.Mess // Deprecated: Use UpdateApplicationRequest_UpdateOwners.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest_UpdateOwners) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52, 2} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53, 2} } func (x *UpdateApplicationRequest_UpdateOwners) GetOwnerIds() []string { @@ -5075,840 +5043,857 @@ var file_neoshowcase_protobuf_gateway_proto_rawDesc = []byte{ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, - 0x6d, 0x61, 0x72, 0x69, 0x61, 0x64, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, - 0x73, 0x65, 0x4d, 0x61, 0x72, 0x69, 0x61, 0x64, 0x62, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, - 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x70, 0x61, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, - 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x15, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x43, 0x6d, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, - 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6d, 0x64, 0x22, 0xad, 0x01, 0x0a, - 0x1c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x4a, 0x0a, - 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x63, - 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x45, 0x0a, 0x0c, - 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, - 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x70, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x73, 0x70, 0x61, 0x22, 0x7f, 0x0a, 0x1a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, - 0x6b, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x12, 0x41, 0x75, 0x74, 0x6f, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x14, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6d, 0x64, 0x12, 0x47, 0x0a, - 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x41, 0x75, 0x74, 0x6f, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, + 0x6f, 0x72, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x22, 0x40, 0x0a, 0x0f, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x0d, + 0x0a, 0x09, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0xda, 0x01, + 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x69, 0x61, 0x64, 0x62, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x4d, 0x61, 0x72, 0x69, 0x61, 0x64, 0x62, + 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, + 0x62, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x4d, 0x0a, 0x0d, 0x61, + 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x61, 0x75, + 0x74, 0x6f, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x0e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x22, 0x9f, 0x01, 0x0a, 0x15, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, - 0x6d, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, - 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, - 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x64, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0xc8, - 0x04, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, - 0x63, 0x6b, 0x48, 0x00, 0x52, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x4e, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, + 0x6d, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x1c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x63, 0x0a, 0x12, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x6f, 0x63, 0x6b, - 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, + 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, + 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x22, 0x45, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x70, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x73, 0x70, 0x61, 0x22, 0x7f, 0x0a, 0x1a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6d, 0x64, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x43, 0x6d, 0x64, 0x12, 0x60, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x5f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x6f, 0x63, 0x6b, 0x65, - 0x72, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x88, 0x02, 0x0a, 0x07, 0x57, 0x65, - 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, - 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, - 0x72, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, - 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x68, 0x74, - 0x74, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x32, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x03, 0x68, 0x32, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x50, 0x6f, - 0x72, 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6e, 0x65, 0x6f, - 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x29, 0x0a, - 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x14, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x43, 0x6d, 0x64, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x22, 0xcb, 0x07, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 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, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, - 0x41, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x09, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x30, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x39, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, - 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, - 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, - 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, - 0x12, 0x52, 0x0a, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x65, - 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, - 0x73, 0x12, 0x56, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x22, 0x6e, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4d, - 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, - 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, - 0x0b, 0x0a, 0x07, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x7a, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0x5b, 0x0a, - 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, - 0x61, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, - 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x08, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 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, 0x19, 0x0a, 0x08, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, - 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x47, 0x0a, 0x0f, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x37, 0x0a, - 0x10, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x59, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2e, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 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, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x57, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x55, 0x0a, 0x11, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 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, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, - 0x67, 0x22, 0x57, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0xd4, 0x04, 0x0a, 0x05, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, - 0x0a, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, - 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x44, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x22, 0x1c, 0x0a, 0x08, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x10, 0x0a, - 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x22, - 0x3b, 0x0a, 0x06, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x17, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x44, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x22, 0x48, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, - 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x65, - 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, + 0x66, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6d, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x1b, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x6f, + 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6f, 0x63, 0x6b, + 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x22, 0xc8, 0x04, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x11, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x10, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x12, 0x4e, 0x0a, 0x0b, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6d, 0x64, 0x48, 0x00, + 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6d, 0x64, 0x12, 0x63, 0x0a, 0x12, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x49, 0x0a, - 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2d, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x42, - 0x61, 0x73, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 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, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x30, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x41, 0x75, 0x74, 0x68, 0x53, 0x53, 0x48, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0xd8, - 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, - 0x42, 0x61, 0x73, 0x69, 0x63, 0x48, 0x00, 0x52, 0x05, 0x62, 0x61, 0x73, 0x69, 0x63, 0x12, 0x41, - 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6e, 0x65, + 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x11, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x53, 0x53, 0x48, 0x48, 0x00, 0x52, 0x03, 0x73, 0x73, - 0x68, 0x42, 0x06, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0x7f, 0x0a, 0x17, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 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, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x75, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, + 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x00, 0x52, + 0x0f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x70, 0x61, 0x63, 0x6b, + 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x63, 0x6d, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6d, 0x64, + 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x43, 0x6d, 0x64, 0x12, 0x60, 0x0a, + 0x11, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, + 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0x99, 0x01, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, - 0x35, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x49, 0x4e, 0x45, - 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x45, 0x41, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, - 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x02, 0x12, 0x07, 0x0a, - 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x22, 0xd1, 0x02, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x43, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x48, 0x02, 0x52, 0x04, - 0x61, 0x75, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6e, 0x65, 0x6f, + 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x42, + 0x0e, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x88, 0x02, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, + 0x71, 0x64, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x32, 0x63, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x68, 0x32, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x68, + 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x68, 0x74, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x50, + 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x49, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0xcb, 0x07, 0x0a, 0x0b, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 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, 0x23, 0x0a, + 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6e, 0x65, 0x6f, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 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, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x48, 0x03, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, - 0x64, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x2b, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, - 0x64, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x3a, 0x0a, 0x13, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x5c, 0x0a, - 0x1c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x08, 0x77, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x56, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x22, + 0x6e, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0c, + 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, + 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, + 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x58, 0x49, + 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x45, 0x44, + 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7a, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x25, 0x0a, 0x0e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x22, 0x5b, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x22, 0xdc, 0x01, 0x0a, 0x08, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 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, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, + 0x47, 0x0a, 0x0f, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x22, 0x37, 0x0a, 0x10, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x59, 0x0a, 0x11, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 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, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x57, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x41, 0x0a, + 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x22, 0x55, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 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, + 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x22, 0x57, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x41, 0x0a, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, - 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, - 0x68, 0x74, 0x74, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x68, 0x74, 0x74, - 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x32, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x03, 0x68, 0x32, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x22, 0xd4, 0x04, 0x0a, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x65, 0x62, - 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf3, 0x02, 0x0a, 0x18, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 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, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, + 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x08, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, + 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6e, 0x65, 0x6f, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, - 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, - 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x77, 0x65, 0x62, - 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x22, 0xca, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x05, - 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6e, 0x65, - 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x22, 0x2a, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x49, 0x4e, - 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, - 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x02, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x22, 0xce, - 0x06, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, - 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, - 0x73, 0x69, 0x74, 0x65, 0x73, 0x48, 0x04, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x48, 0x05, 0x52, 0x10, 0x70, - 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x73, 0x48, 0x06, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x88, 0x01, - 0x01, 0x1a, 0x58, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, - 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x1c, 0x0a, 0x08, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x4c, 0x6f, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x22, 0x3b, 0x0a, 0x06, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x12, + 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, + 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, + 0x65, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4b, 0x65, 0x79, 0x22, 0x44, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x48, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, + 0x65, 0x79, 0x73, 0x22, 0x49, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2d, + 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x22, 0x53, 0x0a, + 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x22, 0x30, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x53, 0x53, 0x48, 0x12, 0x15, 0x0a, + 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, + 0x65, 0x79, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x2c, 0x0a, + 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x47, 0x0a, 0x05, 0x62, + 0x61, 0x73, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6e, 0x65, 0x6f, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x42, 0x61, 0x73, 0x69, 0x63, 0x48, 0x00, 0x52, 0x05, 0x62, + 0x61, 0x73, 0x69, 0x63, 0x12, 0x41, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x53, 0x53, 0x48, + 0x48, 0x00, 0x52, 0x03, 0x73, 0x73, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, + 0x7f, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 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, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, + 0x22, 0x99, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6e, 0x65, 0x6f, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x35, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x08, + 0x0a, 0x04, 0x4d, 0x49, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x43, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x22, 0xd1, 0x02, 0x0a, + 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, + 0x74, 0x68, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, + 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x48, 0x03, 0x52, 0x08, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x2b, 0x0a, 0x0c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, + 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, + 0x74, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x22, 0x3a, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x1b, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, + 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, + 0x68, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x73, 0x22, 0x85, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, + 0x64, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x12, 0x1f, + 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x68, 0x74, 0x74, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x32, 0x63, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x68, 0x32, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x68, + 0x74, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x50, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xf3, 0x02, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 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, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x1a, 0x61, 0x0a, 0x0b, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x70, 0x6f, + 0x74, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, + 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, + 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x22, 0xca, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x48, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x22, 0x2a, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, + 0x08, 0x0a, 0x04, 0x4d, 0x49, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, + 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, + 0x10, 0x02, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x5f, 0x69, 0x64, 0x22, 0xce, 0x06, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x03, 0x52, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x08, 0x77, 0x65, + 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x48, 0x04, 0x52, 0x08, 0x77, + 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6f, - 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2b, - 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1b, - 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x22, - 0x5f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, - 0x22, 0x60, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0c, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x26, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3f, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x2b, 0x0a, 0x0e, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x11, 0x41, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x22, 0x48, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x52, 0x06, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x6c, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x59, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, + 0x73, 0x48, 0x05, 0x52, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6e, 0x65, + 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x48, 0x06, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x58, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x77, 0x65, 0x62, + 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6e, 0x65, + 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x73, 0x1a, 0x61, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, + 0x12, 0x52, 0x0a, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x65, + 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x2b, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, + 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x77, 0x6e, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x44, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, + 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x45, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, + 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x26, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x3f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0x2b, 0x0a, 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x34, + 0x0a, 0x11, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6e, 0x65, 0x6f, 0x73, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x6c, + 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, + 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x59, 0x0a, 0x1e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xc1, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0xc1, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x06, - 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 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, 0x06, + 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, + 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, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0x71, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 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, 0x06, 0x62, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x71, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, - 0x62, 0x65, 0x67, 0x69, 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, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x22, 0x58, - 0x0a, 0x17, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x4d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, - 0x66, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x2a, 0x25, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x2a, 0x31, - 0x0a, 0x12, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x46, 0x46, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x41, 0x52, 0x44, 0x10, - 0x02, 0x2a, 0x2b, 0x0a, 0x17, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, - 0x54, 0x43, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x01, 0x2a, 0x5e, - 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x0a, - 0x06, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x55, 0x49, - 0x4c, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, - 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, - 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x05, 0x32, 0xee, - 0x1b, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x58, 0x0a, - 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x4d, 0x65, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4f, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x62, + 0x65, 0x67, 0x69, 0x6e, 0x22, 0x58, 0x0a, 0x17, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x4d, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x72, + 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, 0x65, 0x6f, 0x73, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x2a, 0x25, 0x0a, + 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52, + 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x43, 0x10, 0x01, 0x2a, 0x31, 0x0a, 0x12, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x46, + 0x46, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x48, 0x41, 0x52, 0x44, 0x10, 0x02, 0x2a, 0x2b, 0x0a, 0x17, 0x50, 0x6f, 0x72, 0x74, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, + 0x44, 0x50, 0x10, 0x01, 0x2a, 0x5e, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, + 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, + 0x45, 0x44, 0x10, 0x05, 0x32, 0xee, 0x1b, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x20, 0x2e, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4b, + 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2d, + 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, + 0x05, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, + 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x4f, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x5a, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, + 0x79, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x2e, 0x6e, 0x65, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, + 0x90, 0x02, 0x01, 0x12, 0x53, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x63, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, 0x2e, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, - 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x29, 0x2e, - 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x53, 0x0a, - 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x2a, + 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x73, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x2c, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x63, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x6e, 0x65, 0x6f, - 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x82, 0x01, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, - 0x01, 0x12, 0x61, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, - 0x03, 0x90, 0x02, 0x01, 0x12, 0x74, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x73, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, - 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, - 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x59, 0x0a, 0x10, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x6e, 0x65, + 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x11, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x61, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, + 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x74, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x66, 0x73, 0x12, + 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x55, 0x0a, - 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x66, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, - 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, - 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x2c, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, - 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, - 0x01, 0x12, 0x64, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x66, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x59, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x11, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x55, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, + 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x66, 0x0a, 0x11, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6e, - 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x57, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, + 0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x64, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5a, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6e, - 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x62, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x26, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6e, 0x65, 0x6f, - 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2c, 0x2e, 0x6e, - 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6e, 0x65, 0x6f, - 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x56, - 0x61, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x73, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x56, - 0x0a, 0x09, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x31, 0x2e, 0x6e, 0x65, - 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x34, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, - 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x55, 0x0a, 0x0f, - 0x53, 0x74, 0x6f, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5b, 0x0a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x57, 0x0a, 0x11, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x09, - 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, + 0x70, 0x74, 0x79, 0x12, 0x5a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x26, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, + 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x62, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x26, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, + 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x6a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x12, 0x2c, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x0a, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x73, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, - 0x90, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, - 0x24, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x73, 0x22, + 0x03, 0x90, 0x02, 0x01, 0x12, 0x56, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x56, 0x61, + 0x72, 0x12, 0x31, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5c, 0x0a, 0x0c, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x12, 0x34, 0x2e, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x10, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, + 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x55, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, + 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x29, 0x2e, 0x6e, 0x65, 0x6f, 0x73, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x12, 0x65, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, + 0x2a, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6e, 0x65, + 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x08, 0x47, 0x65, 0x74, + 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x24, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x59, 0x0a, 0x10, 0x52, 0x65, 0x74, 0x72, 0x79, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2d, 0x2e, 0x6e, 0x65, + 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x12, 0x24, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x58, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x24, - 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x59, 0x0a, + 0x10, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x12, 0x2d, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x24, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, + 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x58, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x24, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x24, - 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, + 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6e, 0x65, 0x6f, + 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x24, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x4c, 0x6f, 0x67, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x6e, 0x65, 0x6f, + 0x64, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, - 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x72, - 0x61, 0x50, 0x74, 0x69, 0x74, 0x65, 0x63, 0x68, 0x2f, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, - 0x63, 0x61, 0x73, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x12, 0x27, 0x2e, 0x6e, 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6e, 0x65, 0x6f, 0x73, + 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x72, 0x61, 0x50, 0x74, 0x69, 0x74, 0x65, 0x63, 0x68, 0x2f, 0x6e, + 0x65, 0x6f, 0x73, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x69, + 0x6e, 0x66, 0x72, 0x61, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x67, 0x72, + 0x70, 0x63, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5923,245 +5908,249 @@ func file_neoshowcase_protobuf_gateway_proto_rawDescGZIP() []byte { return file_neoshowcase_protobuf_gateway_proto_rawDescData } -var file_neoshowcase_protobuf_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_neoshowcase_protobuf_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 71) +var file_neoshowcase_protobuf_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 9) +var file_neoshowcase_protobuf_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 72) var file_neoshowcase_protobuf_gateway_proto_goTypes = []any{ (DeployType)(0), // 0: neoshowcase.protobuf.DeployType (AuthenticationType)(0), // 1: neoshowcase.protobuf.AuthenticationType (PortPublicationProtocol)(0), // 2: neoshowcase.protobuf.PortPublicationProtocol (BuildStatus)(0), // 3: neoshowcase.protobuf.BuildStatus (Repository_AuthMethod)(0), // 4: neoshowcase.protobuf.Repository.AuthMethod - (Application_ContainerState)(0), // 5: neoshowcase.protobuf.Application.ContainerState - (GetRepositoriesRequest_Scope)(0), // 6: neoshowcase.protobuf.GetRepositoriesRequest.Scope - (GetApplicationsRequest_Scope)(0), // 7: neoshowcase.protobuf.GetApplicationsRequest.Scope - (*SSHInfo)(nil), // 8: neoshowcase.protobuf.SSHInfo - (*AvailableDomain)(nil), // 9: neoshowcase.protobuf.AvailableDomain - (*AvailablePort)(nil), // 10: neoshowcase.protobuf.AvailablePort - (*AdditionalLink)(nil), // 11: neoshowcase.protobuf.AdditionalLink - (*SystemInfo)(nil), // 12: neoshowcase.protobuf.SystemInfo - (*User)(nil), // 13: neoshowcase.protobuf.User - (*UserKey)(nil), // 14: neoshowcase.protobuf.UserKey - (*Repository)(nil), // 15: neoshowcase.protobuf.Repository - (*SimpleCommit)(nil), // 16: neoshowcase.protobuf.SimpleCommit - (*RuntimeConfig)(nil), // 17: neoshowcase.protobuf.RuntimeConfig - (*BuildConfigRuntimeBuildpack)(nil), // 18: neoshowcase.protobuf.BuildConfigRuntimeBuildpack - (*BuildConfigRuntimeCmd)(nil), // 19: neoshowcase.protobuf.BuildConfigRuntimeCmd - (*BuildConfigRuntimeDockerfile)(nil), // 20: neoshowcase.protobuf.BuildConfigRuntimeDockerfile - (*StaticConfig)(nil), // 21: neoshowcase.protobuf.StaticConfig - (*BuildConfigStaticBuildpack)(nil), // 22: neoshowcase.protobuf.BuildConfigStaticBuildpack - (*BuildConfigStaticCmd)(nil), // 23: neoshowcase.protobuf.BuildConfigStaticCmd - (*BuildConfigStaticDockerfile)(nil), // 24: neoshowcase.protobuf.BuildConfigStaticDockerfile - (*ApplicationConfig)(nil), // 25: neoshowcase.protobuf.ApplicationConfig - (*Website)(nil), // 26: neoshowcase.protobuf.Website - (*PortPublication)(nil), // 27: neoshowcase.protobuf.PortPublication - (*Application)(nil), // 28: neoshowcase.protobuf.Application - (*ApplicationEnvVar)(nil), // 29: neoshowcase.protobuf.ApplicationEnvVar - (*ApplicationEnvVars)(nil), // 30: neoshowcase.protobuf.ApplicationEnvVars - (*Artifact)(nil), // 31: neoshowcase.protobuf.Artifact - (*ArtifactContent)(nil), // 32: neoshowcase.protobuf.ArtifactContent - (*RuntimeImage)(nil), // 33: neoshowcase.protobuf.RuntimeImage - (*AvailableMetrics)(nil), // 34: neoshowcase.protobuf.AvailableMetrics - (*ApplicationMetric)(nil), // 35: neoshowcase.protobuf.ApplicationMetric - (*ApplicationMetrics)(nil), // 36: neoshowcase.protobuf.ApplicationMetrics - (*ApplicationOutput)(nil), // 37: neoshowcase.protobuf.ApplicationOutput - (*ApplicationOutputs)(nil), // 38: neoshowcase.protobuf.ApplicationOutputs - (*Build)(nil), // 39: neoshowcase.protobuf.Build - (*BuildLog)(nil), // 40: neoshowcase.protobuf.BuildLog - (*GitRef)(nil), // 41: neoshowcase.protobuf.GitRef - (*GenerateKeyPairResponse)(nil), // 42: neoshowcase.protobuf.GenerateKeyPairResponse - (*GetUsersResponse)(nil), // 43: neoshowcase.protobuf.GetUsersResponse - (*GetUserKeysResponse)(nil), // 44: neoshowcase.protobuf.GetUserKeysResponse - (*CreateUserKeyRequest)(nil), // 45: neoshowcase.protobuf.CreateUserKeyRequest - (*DeleteUserKeyRequest)(nil), // 46: neoshowcase.protobuf.DeleteUserKeyRequest - (*CreateRepositoryAuthBasic)(nil), // 47: neoshowcase.protobuf.CreateRepositoryAuthBasic - (*CreateRepositoryAuthSSH)(nil), // 48: neoshowcase.protobuf.CreateRepositoryAuthSSH - (*CreateRepositoryAuth)(nil), // 49: neoshowcase.protobuf.CreateRepositoryAuth - (*CreateRepositoryRequest)(nil), // 50: neoshowcase.protobuf.CreateRepositoryRequest - (*GetRepositoriesRequest)(nil), // 51: neoshowcase.protobuf.GetRepositoriesRequest - (*UpdateRepositoryRequest)(nil), // 52: neoshowcase.protobuf.UpdateRepositoryRequest - (*RepositoryIdRequest)(nil), // 53: neoshowcase.protobuf.RepositoryIdRequest - (*GetRepositoryCommitsRequest)(nil), // 54: neoshowcase.protobuf.GetRepositoryCommitsRequest - (*GetRepositoryCommitsResponse)(nil), // 55: neoshowcase.protobuf.GetRepositoryCommitsResponse - (*CreateWebsiteRequest)(nil), // 56: neoshowcase.protobuf.CreateWebsiteRequest - (*DeleteWebsiteRequest)(nil), // 57: neoshowcase.protobuf.DeleteWebsiteRequest - (*CreateApplicationRequest)(nil), // 58: neoshowcase.protobuf.CreateApplicationRequest - (*GetApplicationsRequest)(nil), // 59: neoshowcase.protobuf.GetApplicationsRequest - (*UpdateApplicationRequest)(nil), // 60: neoshowcase.protobuf.UpdateApplicationRequest - (*GetRepositoriesResponse)(nil), // 61: neoshowcase.protobuf.GetRepositoriesResponse - (*GetApplicationsResponse)(nil), // 62: neoshowcase.protobuf.GetApplicationsResponse - (*ApplicationIdRequest)(nil), // 63: neoshowcase.protobuf.ApplicationIdRequest - (*GetAllBuildsRequest)(nil), // 64: neoshowcase.protobuf.GetAllBuildsRequest - (*BuildIdRequest)(nil), // 65: neoshowcase.protobuf.BuildIdRequest - (*ArtifactIdRequest)(nil), // 66: neoshowcase.protobuf.ArtifactIdRequest - (*GetBuildsResponse)(nil), // 67: neoshowcase.protobuf.GetBuildsResponse - (*SetApplicationEnvVarRequest)(nil), // 68: neoshowcase.protobuf.SetApplicationEnvVarRequest - (*DeleteApplicationEnvVarRequest)(nil), // 69: neoshowcase.protobuf.DeleteApplicationEnvVarRequest - (*GetApplicationMetricsRequest)(nil), // 70: neoshowcase.protobuf.GetApplicationMetricsRequest - (*GetOutputRequest)(nil), // 71: neoshowcase.protobuf.GetOutputRequest - (*GetOutputStreamRequest)(nil), // 72: neoshowcase.protobuf.GetOutputStreamRequest - (*RetryCommitBuildRequest)(nil), // 73: neoshowcase.protobuf.RetryCommitBuildRequest - (*GetRepositoryRefsResponse)(nil), // 74: neoshowcase.protobuf.GetRepositoryRefsResponse - (*UpdateRepositoryRequest_UpdateOwners)(nil), // 75: neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners - (*UpdateApplicationRequest_UpdateWebsites)(nil), // 76: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites - (*UpdateApplicationRequest_UpdatePorts)(nil), // 77: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts - (*UpdateApplicationRequest_UpdateOwners)(nil), // 78: neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners - (*timestamppb.Timestamp)(nil), // 79: google.protobuf.Timestamp - (*NullTimestamp)(nil), // 80: neoshowcase.protobuf.NullTimestamp - (*emptypb.Empty)(nil), // 81: google.protobuf.Empty + (AutoShutdownConfig_StartupBehavior)(0), // 5: neoshowcase.protobuf.AutoShutdownConfig.StartupBehavior + (Application_ContainerState)(0), // 6: neoshowcase.protobuf.Application.ContainerState + (GetRepositoriesRequest_Scope)(0), // 7: neoshowcase.protobuf.GetRepositoriesRequest.Scope + (GetApplicationsRequest_Scope)(0), // 8: neoshowcase.protobuf.GetApplicationsRequest.Scope + (*SSHInfo)(nil), // 9: neoshowcase.protobuf.SSHInfo + (*AvailableDomain)(nil), // 10: neoshowcase.protobuf.AvailableDomain + (*AvailablePort)(nil), // 11: neoshowcase.protobuf.AvailablePort + (*AdditionalLink)(nil), // 12: neoshowcase.protobuf.AdditionalLink + (*SystemInfo)(nil), // 13: neoshowcase.protobuf.SystemInfo + (*User)(nil), // 14: neoshowcase.protobuf.User + (*UserKey)(nil), // 15: neoshowcase.protobuf.UserKey + (*Repository)(nil), // 16: neoshowcase.protobuf.Repository + (*SimpleCommit)(nil), // 17: neoshowcase.protobuf.SimpleCommit + (*AutoShutdownConfig)(nil), // 18: neoshowcase.protobuf.AutoShutdownConfig + (*RuntimeConfig)(nil), // 19: neoshowcase.protobuf.RuntimeConfig + (*BuildConfigRuntimeBuildpack)(nil), // 20: neoshowcase.protobuf.BuildConfigRuntimeBuildpack + (*BuildConfigRuntimeCmd)(nil), // 21: neoshowcase.protobuf.BuildConfigRuntimeCmd + (*BuildConfigRuntimeDockerfile)(nil), // 22: neoshowcase.protobuf.BuildConfigRuntimeDockerfile + (*StaticConfig)(nil), // 23: neoshowcase.protobuf.StaticConfig + (*BuildConfigStaticBuildpack)(nil), // 24: neoshowcase.protobuf.BuildConfigStaticBuildpack + (*BuildConfigStaticCmd)(nil), // 25: neoshowcase.protobuf.BuildConfigStaticCmd + (*BuildConfigStaticDockerfile)(nil), // 26: neoshowcase.protobuf.BuildConfigStaticDockerfile + (*ApplicationConfig)(nil), // 27: neoshowcase.protobuf.ApplicationConfig + (*Website)(nil), // 28: neoshowcase.protobuf.Website + (*PortPublication)(nil), // 29: neoshowcase.protobuf.PortPublication + (*Application)(nil), // 30: neoshowcase.protobuf.Application + (*ApplicationEnvVar)(nil), // 31: neoshowcase.protobuf.ApplicationEnvVar + (*ApplicationEnvVars)(nil), // 32: neoshowcase.protobuf.ApplicationEnvVars + (*Artifact)(nil), // 33: neoshowcase.protobuf.Artifact + (*ArtifactContent)(nil), // 34: neoshowcase.protobuf.ArtifactContent + (*RuntimeImage)(nil), // 35: neoshowcase.protobuf.RuntimeImage + (*AvailableMetrics)(nil), // 36: neoshowcase.protobuf.AvailableMetrics + (*ApplicationMetric)(nil), // 37: neoshowcase.protobuf.ApplicationMetric + (*ApplicationMetrics)(nil), // 38: neoshowcase.protobuf.ApplicationMetrics + (*ApplicationOutput)(nil), // 39: neoshowcase.protobuf.ApplicationOutput + (*ApplicationOutputs)(nil), // 40: neoshowcase.protobuf.ApplicationOutputs + (*Build)(nil), // 41: neoshowcase.protobuf.Build + (*BuildLog)(nil), // 42: neoshowcase.protobuf.BuildLog + (*GitRef)(nil), // 43: neoshowcase.protobuf.GitRef + (*GenerateKeyPairResponse)(nil), // 44: neoshowcase.protobuf.GenerateKeyPairResponse + (*GetUsersResponse)(nil), // 45: neoshowcase.protobuf.GetUsersResponse + (*GetUserKeysResponse)(nil), // 46: neoshowcase.protobuf.GetUserKeysResponse + (*CreateUserKeyRequest)(nil), // 47: neoshowcase.protobuf.CreateUserKeyRequest + (*DeleteUserKeyRequest)(nil), // 48: neoshowcase.protobuf.DeleteUserKeyRequest + (*CreateRepositoryAuthBasic)(nil), // 49: neoshowcase.protobuf.CreateRepositoryAuthBasic + (*CreateRepositoryAuthSSH)(nil), // 50: neoshowcase.protobuf.CreateRepositoryAuthSSH + (*CreateRepositoryAuth)(nil), // 51: neoshowcase.protobuf.CreateRepositoryAuth + (*CreateRepositoryRequest)(nil), // 52: neoshowcase.protobuf.CreateRepositoryRequest + (*GetRepositoriesRequest)(nil), // 53: neoshowcase.protobuf.GetRepositoriesRequest + (*UpdateRepositoryRequest)(nil), // 54: neoshowcase.protobuf.UpdateRepositoryRequest + (*RepositoryIdRequest)(nil), // 55: neoshowcase.protobuf.RepositoryIdRequest + (*GetRepositoryCommitsRequest)(nil), // 56: neoshowcase.protobuf.GetRepositoryCommitsRequest + (*GetRepositoryCommitsResponse)(nil), // 57: neoshowcase.protobuf.GetRepositoryCommitsResponse + (*CreateWebsiteRequest)(nil), // 58: neoshowcase.protobuf.CreateWebsiteRequest + (*DeleteWebsiteRequest)(nil), // 59: neoshowcase.protobuf.DeleteWebsiteRequest + (*CreateApplicationRequest)(nil), // 60: neoshowcase.protobuf.CreateApplicationRequest + (*GetApplicationsRequest)(nil), // 61: neoshowcase.protobuf.GetApplicationsRequest + (*UpdateApplicationRequest)(nil), // 62: neoshowcase.protobuf.UpdateApplicationRequest + (*GetRepositoriesResponse)(nil), // 63: neoshowcase.protobuf.GetRepositoriesResponse + (*GetApplicationsResponse)(nil), // 64: neoshowcase.protobuf.GetApplicationsResponse + (*ApplicationIdRequest)(nil), // 65: neoshowcase.protobuf.ApplicationIdRequest + (*GetAllBuildsRequest)(nil), // 66: neoshowcase.protobuf.GetAllBuildsRequest + (*BuildIdRequest)(nil), // 67: neoshowcase.protobuf.BuildIdRequest + (*ArtifactIdRequest)(nil), // 68: neoshowcase.protobuf.ArtifactIdRequest + (*GetBuildsResponse)(nil), // 69: neoshowcase.protobuf.GetBuildsResponse + (*SetApplicationEnvVarRequest)(nil), // 70: neoshowcase.protobuf.SetApplicationEnvVarRequest + (*DeleteApplicationEnvVarRequest)(nil), // 71: neoshowcase.protobuf.DeleteApplicationEnvVarRequest + (*GetApplicationMetricsRequest)(nil), // 72: neoshowcase.protobuf.GetApplicationMetricsRequest + (*GetOutputRequest)(nil), // 73: neoshowcase.protobuf.GetOutputRequest + (*GetOutputStreamRequest)(nil), // 74: neoshowcase.protobuf.GetOutputStreamRequest + (*RetryCommitBuildRequest)(nil), // 75: neoshowcase.protobuf.RetryCommitBuildRequest + (*GetRepositoryRefsResponse)(nil), // 76: neoshowcase.protobuf.GetRepositoryRefsResponse + (*UpdateRepositoryRequest_UpdateOwners)(nil), // 77: neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners + (*UpdateApplicationRequest_UpdateWebsites)(nil), // 78: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites + (*UpdateApplicationRequest_UpdatePorts)(nil), // 79: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts + (*UpdateApplicationRequest_UpdateOwners)(nil), // 80: neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners + (*timestamppb.Timestamp)(nil), // 81: google.protobuf.Timestamp + (*NullTimestamp)(nil), // 82: neoshowcase.protobuf.NullTimestamp + (*emptypb.Empty)(nil), // 83: google.protobuf.Empty } var file_neoshowcase_protobuf_gateway_proto_depIdxs = []int32{ 2, // 0: neoshowcase.protobuf.AvailablePort.protocol:type_name -> neoshowcase.protobuf.PortPublicationProtocol - 8, // 1: neoshowcase.protobuf.SystemInfo.ssh:type_name -> neoshowcase.protobuf.SSHInfo - 9, // 2: neoshowcase.protobuf.SystemInfo.domains:type_name -> neoshowcase.protobuf.AvailableDomain - 10, // 3: neoshowcase.protobuf.SystemInfo.ports:type_name -> neoshowcase.protobuf.AvailablePort - 11, // 4: neoshowcase.protobuf.SystemInfo.additional_links:type_name -> neoshowcase.protobuf.AdditionalLink - 79, // 5: neoshowcase.protobuf.UserKey.created_at:type_name -> google.protobuf.Timestamp + 9, // 1: neoshowcase.protobuf.SystemInfo.ssh:type_name -> neoshowcase.protobuf.SSHInfo + 10, // 2: neoshowcase.protobuf.SystemInfo.domains:type_name -> neoshowcase.protobuf.AvailableDomain + 11, // 3: neoshowcase.protobuf.SystemInfo.ports:type_name -> neoshowcase.protobuf.AvailablePort + 12, // 4: neoshowcase.protobuf.SystemInfo.additional_links:type_name -> neoshowcase.protobuf.AdditionalLink + 81, // 5: neoshowcase.protobuf.UserKey.created_at:type_name -> google.protobuf.Timestamp 4, // 6: neoshowcase.protobuf.Repository.auth_method:type_name -> neoshowcase.protobuf.Repository.AuthMethod - 79, // 7: neoshowcase.protobuf.SimpleCommit.commit_date:type_name -> google.protobuf.Timestamp - 17, // 8: neoshowcase.protobuf.BuildConfigRuntimeBuildpack.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig - 17, // 9: neoshowcase.protobuf.BuildConfigRuntimeCmd.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig - 17, // 10: neoshowcase.protobuf.BuildConfigRuntimeDockerfile.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig - 21, // 11: neoshowcase.protobuf.BuildConfigStaticBuildpack.static_config:type_name -> neoshowcase.protobuf.StaticConfig - 21, // 12: neoshowcase.protobuf.BuildConfigStaticCmd.static_config:type_name -> neoshowcase.protobuf.StaticConfig - 21, // 13: neoshowcase.protobuf.BuildConfigStaticDockerfile.static_config:type_name -> neoshowcase.protobuf.StaticConfig - 18, // 14: neoshowcase.protobuf.ApplicationConfig.runtime_buildpack:type_name -> neoshowcase.protobuf.BuildConfigRuntimeBuildpack - 19, // 15: neoshowcase.protobuf.ApplicationConfig.runtime_cmd:type_name -> neoshowcase.protobuf.BuildConfigRuntimeCmd - 20, // 16: neoshowcase.protobuf.ApplicationConfig.runtime_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigRuntimeDockerfile - 22, // 17: neoshowcase.protobuf.ApplicationConfig.static_buildpack:type_name -> neoshowcase.protobuf.BuildConfigStaticBuildpack - 23, // 18: neoshowcase.protobuf.ApplicationConfig.static_cmd:type_name -> neoshowcase.protobuf.BuildConfigStaticCmd - 24, // 19: neoshowcase.protobuf.ApplicationConfig.static_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigStaticDockerfile - 1, // 20: neoshowcase.protobuf.Website.authentication:type_name -> neoshowcase.protobuf.AuthenticationType - 2, // 21: neoshowcase.protobuf.PortPublication.protocol:type_name -> neoshowcase.protobuf.PortPublicationProtocol - 0, // 22: neoshowcase.protobuf.Application.deploy_type:type_name -> neoshowcase.protobuf.DeployType - 5, // 23: neoshowcase.protobuf.Application.container:type_name -> neoshowcase.protobuf.Application.ContainerState - 79, // 24: neoshowcase.protobuf.Application.created_at:type_name -> google.protobuf.Timestamp - 79, // 25: neoshowcase.protobuf.Application.updated_at:type_name -> google.protobuf.Timestamp - 25, // 26: neoshowcase.protobuf.Application.config:type_name -> neoshowcase.protobuf.ApplicationConfig - 26, // 27: neoshowcase.protobuf.Application.websites:type_name -> neoshowcase.protobuf.Website - 27, // 28: neoshowcase.protobuf.Application.port_publications:type_name -> neoshowcase.protobuf.PortPublication - 3, // 29: neoshowcase.protobuf.Application.latest_build_status:type_name -> neoshowcase.protobuf.BuildStatus - 29, // 30: neoshowcase.protobuf.ApplicationEnvVars.variables:type_name -> neoshowcase.protobuf.ApplicationEnvVar - 79, // 31: neoshowcase.protobuf.Artifact.created_at:type_name -> google.protobuf.Timestamp - 80, // 32: neoshowcase.protobuf.Artifact.deleted_at:type_name -> neoshowcase.protobuf.NullTimestamp - 79, // 33: neoshowcase.protobuf.RuntimeImage.created_at:type_name -> google.protobuf.Timestamp - 79, // 34: neoshowcase.protobuf.ApplicationMetric.time:type_name -> google.protobuf.Timestamp - 35, // 35: neoshowcase.protobuf.ApplicationMetrics.metrics:type_name -> neoshowcase.protobuf.ApplicationMetric - 79, // 36: neoshowcase.protobuf.ApplicationOutput.time:type_name -> google.protobuf.Timestamp - 37, // 37: neoshowcase.protobuf.ApplicationOutputs.outputs:type_name -> neoshowcase.protobuf.ApplicationOutput - 3, // 38: neoshowcase.protobuf.Build.status:type_name -> neoshowcase.protobuf.BuildStatus - 79, // 39: neoshowcase.protobuf.Build.queued_at:type_name -> google.protobuf.Timestamp - 80, // 40: neoshowcase.protobuf.Build.started_at:type_name -> neoshowcase.protobuf.NullTimestamp - 80, // 41: neoshowcase.protobuf.Build.updated_at:type_name -> neoshowcase.protobuf.NullTimestamp - 80, // 42: neoshowcase.protobuf.Build.finished_at:type_name -> neoshowcase.protobuf.NullTimestamp - 31, // 43: neoshowcase.protobuf.Build.artifacts:type_name -> neoshowcase.protobuf.Artifact - 33, // 44: neoshowcase.protobuf.Build.runtime_image:type_name -> neoshowcase.protobuf.RuntimeImage - 13, // 45: neoshowcase.protobuf.GetUsersResponse.users:type_name -> neoshowcase.protobuf.User - 14, // 46: neoshowcase.protobuf.GetUserKeysResponse.keys:type_name -> neoshowcase.protobuf.UserKey - 81, // 47: neoshowcase.protobuf.CreateRepositoryAuth.none:type_name -> google.protobuf.Empty - 47, // 48: neoshowcase.protobuf.CreateRepositoryAuth.basic:type_name -> neoshowcase.protobuf.CreateRepositoryAuthBasic - 48, // 49: neoshowcase.protobuf.CreateRepositoryAuth.ssh:type_name -> neoshowcase.protobuf.CreateRepositoryAuthSSH - 49, // 50: neoshowcase.protobuf.CreateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth - 6, // 51: neoshowcase.protobuf.GetRepositoriesRequest.scope:type_name -> neoshowcase.protobuf.GetRepositoriesRequest.Scope - 49, // 52: neoshowcase.protobuf.UpdateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth - 75, // 53: neoshowcase.protobuf.UpdateRepositoryRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners - 16, // 54: neoshowcase.protobuf.GetRepositoryCommitsResponse.commits:type_name -> neoshowcase.protobuf.SimpleCommit - 1, // 55: neoshowcase.protobuf.CreateWebsiteRequest.authentication:type_name -> neoshowcase.protobuf.AuthenticationType - 25, // 56: neoshowcase.protobuf.CreateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig - 56, // 57: neoshowcase.protobuf.CreateApplicationRequest.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest - 27, // 58: neoshowcase.protobuf.CreateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.PortPublication - 7, // 59: neoshowcase.protobuf.GetApplicationsRequest.scope:type_name -> neoshowcase.protobuf.GetApplicationsRequest.Scope - 25, // 60: neoshowcase.protobuf.UpdateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig - 76, // 61: neoshowcase.protobuf.UpdateApplicationRequest.websites:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites - 77, // 62: neoshowcase.protobuf.UpdateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts - 78, // 63: neoshowcase.protobuf.UpdateApplicationRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners - 15, // 64: neoshowcase.protobuf.GetRepositoriesResponse.repositories:type_name -> neoshowcase.protobuf.Repository - 28, // 65: neoshowcase.protobuf.GetApplicationsResponse.applications:type_name -> neoshowcase.protobuf.Application - 39, // 66: neoshowcase.protobuf.GetBuildsResponse.builds:type_name -> neoshowcase.protobuf.Build - 79, // 67: neoshowcase.protobuf.GetApplicationMetricsRequest.before:type_name -> google.protobuf.Timestamp - 79, // 68: neoshowcase.protobuf.GetOutputRequest.before:type_name -> google.protobuf.Timestamp - 79, // 69: neoshowcase.protobuf.GetOutputStreamRequest.begin:type_name -> google.protobuf.Timestamp - 41, // 70: neoshowcase.protobuf.GetRepositoryRefsResponse.refs:type_name -> neoshowcase.protobuf.GitRef - 56, // 71: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest - 27, // 72: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts.port_publications:type_name -> neoshowcase.protobuf.PortPublication - 81, // 73: neoshowcase.protobuf.APIService.GetSystemInfo:input_type -> google.protobuf.Empty - 81, // 74: neoshowcase.protobuf.APIService.GenerateKeyPair:input_type -> google.protobuf.Empty - 81, // 75: neoshowcase.protobuf.APIService.GetMe:input_type -> google.protobuf.Empty - 81, // 76: neoshowcase.protobuf.APIService.GetUsers:input_type -> google.protobuf.Empty - 45, // 77: neoshowcase.protobuf.APIService.CreateUserKey:input_type -> neoshowcase.protobuf.CreateUserKeyRequest - 81, // 78: neoshowcase.protobuf.APIService.GetUserKeys:input_type -> google.protobuf.Empty - 46, // 79: neoshowcase.protobuf.APIService.DeleteUserKey:input_type -> neoshowcase.protobuf.DeleteUserKeyRequest - 50, // 80: neoshowcase.protobuf.APIService.CreateRepository:input_type -> neoshowcase.protobuf.CreateRepositoryRequest - 51, // 81: neoshowcase.protobuf.APIService.GetRepositories:input_type -> neoshowcase.protobuf.GetRepositoriesRequest - 54, // 82: neoshowcase.protobuf.APIService.GetRepositoryCommits:input_type -> neoshowcase.protobuf.GetRepositoryCommitsRequest - 53, // 83: neoshowcase.protobuf.APIService.GetRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 53, // 84: neoshowcase.protobuf.APIService.GetRepositoryRefs:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 52, // 85: neoshowcase.protobuf.APIService.UpdateRepository:input_type -> neoshowcase.protobuf.UpdateRepositoryRequest - 53, // 86: neoshowcase.protobuf.APIService.RefreshRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 53, // 87: neoshowcase.protobuf.APIService.DeleteRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 58, // 88: neoshowcase.protobuf.APIService.CreateApplication:input_type -> neoshowcase.protobuf.CreateApplicationRequest - 59, // 89: neoshowcase.protobuf.APIService.GetApplications:input_type -> neoshowcase.protobuf.GetApplicationsRequest - 63, // 90: neoshowcase.protobuf.APIService.GetApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 60, // 91: neoshowcase.protobuf.APIService.UpdateApplication:input_type -> neoshowcase.protobuf.UpdateApplicationRequest - 63, // 92: neoshowcase.protobuf.APIService.DeleteApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 81, // 93: neoshowcase.protobuf.APIService.GetAvailableMetrics:input_type -> google.protobuf.Empty - 70, // 94: neoshowcase.protobuf.APIService.GetApplicationMetrics:input_type -> neoshowcase.protobuf.GetApplicationMetricsRequest - 71, // 95: neoshowcase.protobuf.APIService.GetOutput:input_type -> neoshowcase.protobuf.GetOutputRequest - 72, // 96: neoshowcase.protobuf.APIService.GetOutputStream:input_type -> neoshowcase.protobuf.GetOutputStreamRequest - 63, // 97: neoshowcase.protobuf.APIService.GetEnvVars:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 68, // 98: neoshowcase.protobuf.APIService.SetEnvVar:input_type -> neoshowcase.protobuf.SetApplicationEnvVarRequest - 69, // 99: neoshowcase.protobuf.APIService.DeleteEnvVar:input_type -> neoshowcase.protobuf.DeleteApplicationEnvVarRequest - 63, // 100: neoshowcase.protobuf.APIService.StartApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 63, // 101: neoshowcase.protobuf.APIService.StopApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 64, // 102: neoshowcase.protobuf.APIService.GetAllBuilds:input_type -> neoshowcase.protobuf.GetAllBuildsRequest - 63, // 103: neoshowcase.protobuf.APIService.GetBuilds:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 65, // 104: neoshowcase.protobuf.APIService.GetBuild:input_type -> neoshowcase.protobuf.BuildIdRequest - 73, // 105: neoshowcase.protobuf.APIService.RetryCommitBuild:input_type -> neoshowcase.protobuf.RetryCommitBuildRequest - 65, // 106: neoshowcase.protobuf.APIService.CancelBuild:input_type -> neoshowcase.protobuf.BuildIdRequest - 65, // 107: neoshowcase.protobuf.APIService.GetBuildLog:input_type -> neoshowcase.protobuf.BuildIdRequest - 65, // 108: neoshowcase.protobuf.APIService.GetBuildLogStream:input_type -> neoshowcase.protobuf.BuildIdRequest - 66, // 109: neoshowcase.protobuf.APIService.GetBuildArtifact:input_type -> neoshowcase.protobuf.ArtifactIdRequest - 12, // 110: neoshowcase.protobuf.APIService.GetSystemInfo:output_type -> neoshowcase.protobuf.SystemInfo - 42, // 111: neoshowcase.protobuf.APIService.GenerateKeyPair:output_type -> neoshowcase.protobuf.GenerateKeyPairResponse - 13, // 112: neoshowcase.protobuf.APIService.GetMe:output_type -> neoshowcase.protobuf.User - 43, // 113: neoshowcase.protobuf.APIService.GetUsers:output_type -> neoshowcase.protobuf.GetUsersResponse - 14, // 114: neoshowcase.protobuf.APIService.CreateUserKey:output_type -> neoshowcase.protobuf.UserKey - 44, // 115: neoshowcase.protobuf.APIService.GetUserKeys:output_type -> neoshowcase.protobuf.GetUserKeysResponse - 81, // 116: neoshowcase.protobuf.APIService.DeleteUserKey:output_type -> google.protobuf.Empty - 15, // 117: neoshowcase.protobuf.APIService.CreateRepository:output_type -> neoshowcase.protobuf.Repository - 61, // 118: neoshowcase.protobuf.APIService.GetRepositories:output_type -> neoshowcase.protobuf.GetRepositoriesResponse - 55, // 119: neoshowcase.protobuf.APIService.GetRepositoryCommits:output_type -> neoshowcase.protobuf.GetRepositoryCommitsResponse - 15, // 120: neoshowcase.protobuf.APIService.GetRepository:output_type -> neoshowcase.protobuf.Repository - 74, // 121: neoshowcase.protobuf.APIService.GetRepositoryRefs:output_type -> neoshowcase.protobuf.GetRepositoryRefsResponse - 81, // 122: neoshowcase.protobuf.APIService.UpdateRepository:output_type -> google.protobuf.Empty - 81, // 123: neoshowcase.protobuf.APIService.RefreshRepository:output_type -> google.protobuf.Empty - 81, // 124: neoshowcase.protobuf.APIService.DeleteRepository:output_type -> google.protobuf.Empty - 28, // 125: neoshowcase.protobuf.APIService.CreateApplication:output_type -> neoshowcase.protobuf.Application - 62, // 126: neoshowcase.protobuf.APIService.GetApplications:output_type -> neoshowcase.protobuf.GetApplicationsResponse - 28, // 127: neoshowcase.protobuf.APIService.GetApplication:output_type -> neoshowcase.protobuf.Application - 81, // 128: neoshowcase.protobuf.APIService.UpdateApplication:output_type -> google.protobuf.Empty - 81, // 129: neoshowcase.protobuf.APIService.DeleteApplication:output_type -> google.protobuf.Empty - 34, // 130: neoshowcase.protobuf.APIService.GetAvailableMetrics:output_type -> neoshowcase.protobuf.AvailableMetrics - 36, // 131: neoshowcase.protobuf.APIService.GetApplicationMetrics:output_type -> neoshowcase.protobuf.ApplicationMetrics - 38, // 132: neoshowcase.protobuf.APIService.GetOutput:output_type -> neoshowcase.protobuf.ApplicationOutputs - 37, // 133: neoshowcase.protobuf.APIService.GetOutputStream:output_type -> neoshowcase.protobuf.ApplicationOutput - 30, // 134: neoshowcase.protobuf.APIService.GetEnvVars:output_type -> neoshowcase.protobuf.ApplicationEnvVars - 81, // 135: neoshowcase.protobuf.APIService.SetEnvVar:output_type -> google.protobuf.Empty - 81, // 136: neoshowcase.protobuf.APIService.DeleteEnvVar:output_type -> google.protobuf.Empty - 81, // 137: neoshowcase.protobuf.APIService.StartApplication:output_type -> google.protobuf.Empty - 81, // 138: neoshowcase.protobuf.APIService.StopApplication:output_type -> google.protobuf.Empty - 67, // 139: neoshowcase.protobuf.APIService.GetAllBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse - 67, // 140: neoshowcase.protobuf.APIService.GetBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse - 39, // 141: neoshowcase.protobuf.APIService.GetBuild:output_type -> neoshowcase.protobuf.Build - 81, // 142: neoshowcase.protobuf.APIService.RetryCommitBuild:output_type -> google.protobuf.Empty - 81, // 143: neoshowcase.protobuf.APIService.CancelBuild:output_type -> google.protobuf.Empty - 40, // 144: neoshowcase.protobuf.APIService.GetBuildLog:output_type -> neoshowcase.protobuf.BuildLog - 40, // 145: neoshowcase.protobuf.APIService.GetBuildLogStream:output_type -> neoshowcase.protobuf.BuildLog - 32, // 146: neoshowcase.protobuf.APIService.GetBuildArtifact:output_type -> neoshowcase.protobuf.ArtifactContent - 110, // [110:147] is the sub-list for method output_type - 73, // [73:110] is the sub-list for method input_type - 73, // [73:73] is the sub-list for extension type_name - 73, // [73:73] is the sub-list for extension extendee - 0, // [0:73] is the sub-list for field type_name + 81, // 7: neoshowcase.protobuf.SimpleCommit.commit_date:type_name -> google.protobuf.Timestamp + 5, // 8: neoshowcase.protobuf.AutoShutdownConfig.startup:type_name -> neoshowcase.protobuf.AutoShutdownConfig.StartupBehavior + 18, // 9: neoshowcase.protobuf.RuntimeConfig.auto_shutdown:type_name -> neoshowcase.protobuf.AutoShutdownConfig + 19, // 10: neoshowcase.protobuf.BuildConfigRuntimeBuildpack.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig + 19, // 11: neoshowcase.protobuf.BuildConfigRuntimeCmd.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig + 19, // 12: neoshowcase.protobuf.BuildConfigRuntimeDockerfile.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig + 23, // 13: neoshowcase.protobuf.BuildConfigStaticBuildpack.static_config:type_name -> neoshowcase.protobuf.StaticConfig + 23, // 14: neoshowcase.protobuf.BuildConfigStaticCmd.static_config:type_name -> neoshowcase.protobuf.StaticConfig + 23, // 15: neoshowcase.protobuf.BuildConfigStaticDockerfile.static_config:type_name -> neoshowcase.protobuf.StaticConfig + 20, // 16: neoshowcase.protobuf.ApplicationConfig.runtime_buildpack:type_name -> neoshowcase.protobuf.BuildConfigRuntimeBuildpack + 21, // 17: neoshowcase.protobuf.ApplicationConfig.runtime_cmd:type_name -> neoshowcase.protobuf.BuildConfigRuntimeCmd + 22, // 18: neoshowcase.protobuf.ApplicationConfig.runtime_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigRuntimeDockerfile + 24, // 19: neoshowcase.protobuf.ApplicationConfig.static_buildpack:type_name -> neoshowcase.protobuf.BuildConfigStaticBuildpack + 25, // 20: neoshowcase.protobuf.ApplicationConfig.static_cmd:type_name -> neoshowcase.protobuf.BuildConfigStaticCmd + 26, // 21: neoshowcase.protobuf.ApplicationConfig.static_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigStaticDockerfile + 1, // 22: neoshowcase.protobuf.Website.authentication:type_name -> neoshowcase.protobuf.AuthenticationType + 2, // 23: neoshowcase.protobuf.PortPublication.protocol:type_name -> neoshowcase.protobuf.PortPublicationProtocol + 0, // 24: neoshowcase.protobuf.Application.deploy_type:type_name -> neoshowcase.protobuf.DeployType + 6, // 25: neoshowcase.protobuf.Application.container:type_name -> neoshowcase.protobuf.Application.ContainerState + 81, // 26: neoshowcase.protobuf.Application.created_at:type_name -> google.protobuf.Timestamp + 81, // 27: neoshowcase.protobuf.Application.updated_at:type_name -> google.protobuf.Timestamp + 27, // 28: neoshowcase.protobuf.Application.config:type_name -> neoshowcase.protobuf.ApplicationConfig + 28, // 29: neoshowcase.protobuf.Application.websites:type_name -> neoshowcase.protobuf.Website + 29, // 30: neoshowcase.protobuf.Application.port_publications:type_name -> neoshowcase.protobuf.PortPublication + 3, // 31: neoshowcase.protobuf.Application.latest_build_status:type_name -> neoshowcase.protobuf.BuildStatus + 31, // 32: neoshowcase.protobuf.ApplicationEnvVars.variables:type_name -> neoshowcase.protobuf.ApplicationEnvVar + 81, // 33: neoshowcase.protobuf.Artifact.created_at:type_name -> google.protobuf.Timestamp + 82, // 34: neoshowcase.protobuf.Artifact.deleted_at:type_name -> neoshowcase.protobuf.NullTimestamp + 81, // 35: neoshowcase.protobuf.RuntimeImage.created_at:type_name -> google.protobuf.Timestamp + 81, // 36: neoshowcase.protobuf.ApplicationMetric.time:type_name -> google.protobuf.Timestamp + 37, // 37: neoshowcase.protobuf.ApplicationMetrics.metrics:type_name -> neoshowcase.protobuf.ApplicationMetric + 81, // 38: neoshowcase.protobuf.ApplicationOutput.time:type_name -> google.protobuf.Timestamp + 39, // 39: neoshowcase.protobuf.ApplicationOutputs.outputs:type_name -> neoshowcase.protobuf.ApplicationOutput + 3, // 40: neoshowcase.protobuf.Build.status:type_name -> neoshowcase.protobuf.BuildStatus + 81, // 41: neoshowcase.protobuf.Build.queued_at:type_name -> google.protobuf.Timestamp + 82, // 42: neoshowcase.protobuf.Build.started_at:type_name -> neoshowcase.protobuf.NullTimestamp + 82, // 43: neoshowcase.protobuf.Build.updated_at:type_name -> neoshowcase.protobuf.NullTimestamp + 82, // 44: neoshowcase.protobuf.Build.finished_at:type_name -> neoshowcase.protobuf.NullTimestamp + 33, // 45: neoshowcase.protobuf.Build.artifacts:type_name -> neoshowcase.protobuf.Artifact + 35, // 46: neoshowcase.protobuf.Build.runtime_image:type_name -> neoshowcase.protobuf.RuntimeImage + 14, // 47: neoshowcase.protobuf.GetUsersResponse.users:type_name -> neoshowcase.protobuf.User + 15, // 48: neoshowcase.protobuf.GetUserKeysResponse.keys:type_name -> neoshowcase.protobuf.UserKey + 83, // 49: neoshowcase.protobuf.CreateRepositoryAuth.none:type_name -> google.protobuf.Empty + 49, // 50: neoshowcase.protobuf.CreateRepositoryAuth.basic:type_name -> neoshowcase.protobuf.CreateRepositoryAuthBasic + 50, // 51: neoshowcase.protobuf.CreateRepositoryAuth.ssh:type_name -> neoshowcase.protobuf.CreateRepositoryAuthSSH + 51, // 52: neoshowcase.protobuf.CreateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth + 7, // 53: neoshowcase.protobuf.GetRepositoriesRequest.scope:type_name -> neoshowcase.protobuf.GetRepositoriesRequest.Scope + 51, // 54: neoshowcase.protobuf.UpdateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth + 77, // 55: neoshowcase.protobuf.UpdateRepositoryRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners + 17, // 56: neoshowcase.protobuf.GetRepositoryCommitsResponse.commits:type_name -> neoshowcase.protobuf.SimpleCommit + 1, // 57: neoshowcase.protobuf.CreateWebsiteRequest.authentication:type_name -> neoshowcase.protobuf.AuthenticationType + 27, // 58: neoshowcase.protobuf.CreateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig + 58, // 59: neoshowcase.protobuf.CreateApplicationRequest.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest + 29, // 60: neoshowcase.protobuf.CreateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.PortPublication + 8, // 61: neoshowcase.protobuf.GetApplicationsRequest.scope:type_name -> neoshowcase.protobuf.GetApplicationsRequest.Scope + 27, // 62: neoshowcase.protobuf.UpdateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig + 78, // 63: neoshowcase.protobuf.UpdateApplicationRequest.websites:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites + 79, // 64: neoshowcase.protobuf.UpdateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts + 80, // 65: neoshowcase.protobuf.UpdateApplicationRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners + 16, // 66: neoshowcase.protobuf.GetRepositoriesResponse.repositories:type_name -> neoshowcase.protobuf.Repository + 30, // 67: neoshowcase.protobuf.GetApplicationsResponse.applications:type_name -> neoshowcase.protobuf.Application + 41, // 68: neoshowcase.protobuf.GetBuildsResponse.builds:type_name -> neoshowcase.protobuf.Build + 81, // 69: neoshowcase.protobuf.GetApplicationMetricsRequest.before:type_name -> google.protobuf.Timestamp + 81, // 70: neoshowcase.protobuf.GetOutputRequest.before:type_name -> google.protobuf.Timestamp + 81, // 71: neoshowcase.protobuf.GetOutputStreamRequest.begin:type_name -> google.protobuf.Timestamp + 43, // 72: neoshowcase.protobuf.GetRepositoryRefsResponse.refs:type_name -> neoshowcase.protobuf.GitRef + 58, // 73: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest + 29, // 74: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts.port_publications:type_name -> neoshowcase.protobuf.PortPublication + 83, // 75: neoshowcase.protobuf.APIService.GetSystemInfo:input_type -> google.protobuf.Empty + 83, // 76: neoshowcase.protobuf.APIService.GenerateKeyPair:input_type -> google.protobuf.Empty + 83, // 77: neoshowcase.protobuf.APIService.GetMe:input_type -> google.protobuf.Empty + 83, // 78: neoshowcase.protobuf.APIService.GetUsers:input_type -> google.protobuf.Empty + 47, // 79: neoshowcase.protobuf.APIService.CreateUserKey:input_type -> neoshowcase.protobuf.CreateUserKeyRequest + 83, // 80: neoshowcase.protobuf.APIService.GetUserKeys:input_type -> google.protobuf.Empty + 48, // 81: neoshowcase.protobuf.APIService.DeleteUserKey:input_type -> neoshowcase.protobuf.DeleteUserKeyRequest + 52, // 82: neoshowcase.protobuf.APIService.CreateRepository:input_type -> neoshowcase.protobuf.CreateRepositoryRequest + 53, // 83: neoshowcase.protobuf.APIService.GetRepositories:input_type -> neoshowcase.protobuf.GetRepositoriesRequest + 56, // 84: neoshowcase.protobuf.APIService.GetRepositoryCommits:input_type -> neoshowcase.protobuf.GetRepositoryCommitsRequest + 55, // 85: neoshowcase.protobuf.APIService.GetRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 55, // 86: neoshowcase.protobuf.APIService.GetRepositoryRefs:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 54, // 87: neoshowcase.protobuf.APIService.UpdateRepository:input_type -> neoshowcase.protobuf.UpdateRepositoryRequest + 55, // 88: neoshowcase.protobuf.APIService.RefreshRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 55, // 89: neoshowcase.protobuf.APIService.DeleteRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 60, // 90: neoshowcase.protobuf.APIService.CreateApplication:input_type -> neoshowcase.protobuf.CreateApplicationRequest + 61, // 91: neoshowcase.protobuf.APIService.GetApplications:input_type -> neoshowcase.protobuf.GetApplicationsRequest + 65, // 92: neoshowcase.protobuf.APIService.GetApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 62, // 93: neoshowcase.protobuf.APIService.UpdateApplication:input_type -> neoshowcase.protobuf.UpdateApplicationRequest + 65, // 94: neoshowcase.protobuf.APIService.DeleteApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 83, // 95: neoshowcase.protobuf.APIService.GetAvailableMetrics:input_type -> google.protobuf.Empty + 72, // 96: neoshowcase.protobuf.APIService.GetApplicationMetrics:input_type -> neoshowcase.protobuf.GetApplicationMetricsRequest + 73, // 97: neoshowcase.protobuf.APIService.GetOutput:input_type -> neoshowcase.protobuf.GetOutputRequest + 74, // 98: neoshowcase.protobuf.APIService.GetOutputStream:input_type -> neoshowcase.protobuf.GetOutputStreamRequest + 65, // 99: neoshowcase.protobuf.APIService.GetEnvVars:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 70, // 100: neoshowcase.protobuf.APIService.SetEnvVar:input_type -> neoshowcase.protobuf.SetApplicationEnvVarRequest + 71, // 101: neoshowcase.protobuf.APIService.DeleteEnvVar:input_type -> neoshowcase.protobuf.DeleteApplicationEnvVarRequest + 65, // 102: neoshowcase.protobuf.APIService.StartApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 65, // 103: neoshowcase.protobuf.APIService.StopApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 66, // 104: neoshowcase.protobuf.APIService.GetAllBuilds:input_type -> neoshowcase.protobuf.GetAllBuildsRequest + 65, // 105: neoshowcase.protobuf.APIService.GetBuilds:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 67, // 106: neoshowcase.protobuf.APIService.GetBuild:input_type -> neoshowcase.protobuf.BuildIdRequest + 75, // 107: neoshowcase.protobuf.APIService.RetryCommitBuild:input_type -> neoshowcase.protobuf.RetryCommitBuildRequest + 67, // 108: neoshowcase.protobuf.APIService.CancelBuild:input_type -> neoshowcase.protobuf.BuildIdRequest + 67, // 109: neoshowcase.protobuf.APIService.GetBuildLog:input_type -> neoshowcase.protobuf.BuildIdRequest + 67, // 110: neoshowcase.protobuf.APIService.GetBuildLogStream:input_type -> neoshowcase.protobuf.BuildIdRequest + 68, // 111: neoshowcase.protobuf.APIService.GetBuildArtifact:input_type -> neoshowcase.protobuf.ArtifactIdRequest + 13, // 112: neoshowcase.protobuf.APIService.GetSystemInfo:output_type -> neoshowcase.protobuf.SystemInfo + 44, // 113: neoshowcase.protobuf.APIService.GenerateKeyPair:output_type -> neoshowcase.protobuf.GenerateKeyPairResponse + 14, // 114: neoshowcase.protobuf.APIService.GetMe:output_type -> neoshowcase.protobuf.User + 45, // 115: neoshowcase.protobuf.APIService.GetUsers:output_type -> neoshowcase.protobuf.GetUsersResponse + 15, // 116: neoshowcase.protobuf.APIService.CreateUserKey:output_type -> neoshowcase.protobuf.UserKey + 46, // 117: neoshowcase.protobuf.APIService.GetUserKeys:output_type -> neoshowcase.protobuf.GetUserKeysResponse + 83, // 118: neoshowcase.protobuf.APIService.DeleteUserKey:output_type -> google.protobuf.Empty + 16, // 119: neoshowcase.protobuf.APIService.CreateRepository:output_type -> neoshowcase.protobuf.Repository + 63, // 120: neoshowcase.protobuf.APIService.GetRepositories:output_type -> neoshowcase.protobuf.GetRepositoriesResponse + 57, // 121: neoshowcase.protobuf.APIService.GetRepositoryCommits:output_type -> neoshowcase.protobuf.GetRepositoryCommitsResponse + 16, // 122: neoshowcase.protobuf.APIService.GetRepository:output_type -> neoshowcase.protobuf.Repository + 76, // 123: neoshowcase.protobuf.APIService.GetRepositoryRefs:output_type -> neoshowcase.protobuf.GetRepositoryRefsResponse + 83, // 124: neoshowcase.protobuf.APIService.UpdateRepository:output_type -> google.protobuf.Empty + 83, // 125: neoshowcase.protobuf.APIService.RefreshRepository:output_type -> google.protobuf.Empty + 83, // 126: neoshowcase.protobuf.APIService.DeleteRepository:output_type -> google.protobuf.Empty + 30, // 127: neoshowcase.protobuf.APIService.CreateApplication:output_type -> neoshowcase.protobuf.Application + 64, // 128: neoshowcase.protobuf.APIService.GetApplications:output_type -> neoshowcase.protobuf.GetApplicationsResponse + 30, // 129: neoshowcase.protobuf.APIService.GetApplication:output_type -> neoshowcase.protobuf.Application + 83, // 130: neoshowcase.protobuf.APIService.UpdateApplication:output_type -> google.protobuf.Empty + 83, // 131: neoshowcase.protobuf.APIService.DeleteApplication:output_type -> google.protobuf.Empty + 36, // 132: neoshowcase.protobuf.APIService.GetAvailableMetrics:output_type -> neoshowcase.protobuf.AvailableMetrics + 38, // 133: neoshowcase.protobuf.APIService.GetApplicationMetrics:output_type -> neoshowcase.protobuf.ApplicationMetrics + 40, // 134: neoshowcase.protobuf.APIService.GetOutput:output_type -> neoshowcase.protobuf.ApplicationOutputs + 39, // 135: neoshowcase.protobuf.APIService.GetOutputStream:output_type -> neoshowcase.protobuf.ApplicationOutput + 32, // 136: neoshowcase.protobuf.APIService.GetEnvVars:output_type -> neoshowcase.protobuf.ApplicationEnvVars + 83, // 137: neoshowcase.protobuf.APIService.SetEnvVar:output_type -> google.protobuf.Empty + 83, // 138: neoshowcase.protobuf.APIService.DeleteEnvVar:output_type -> google.protobuf.Empty + 83, // 139: neoshowcase.protobuf.APIService.StartApplication:output_type -> google.protobuf.Empty + 83, // 140: neoshowcase.protobuf.APIService.StopApplication:output_type -> google.protobuf.Empty + 69, // 141: neoshowcase.protobuf.APIService.GetAllBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse + 69, // 142: neoshowcase.protobuf.APIService.GetBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse + 41, // 143: neoshowcase.protobuf.APIService.GetBuild:output_type -> neoshowcase.protobuf.Build + 83, // 144: neoshowcase.protobuf.APIService.RetryCommitBuild:output_type -> google.protobuf.Empty + 83, // 145: neoshowcase.protobuf.APIService.CancelBuild:output_type -> google.protobuf.Empty + 42, // 146: neoshowcase.protobuf.APIService.GetBuildLog:output_type -> neoshowcase.protobuf.BuildLog + 42, // 147: neoshowcase.protobuf.APIService.GetBuildLogStream:output_type -> neoshowcase.protobuf.BuildLog + 34, // 148: neoshowcase.protobuf.APIService.GetBuildArtifact:output_type -> neoshowcase.protobuf.ArtifactContent + 112, // [112:149] is the sub-list for method output_type + 75, // [75:112] is the sub-list for method input_type + 75, // [75:75] is the sub-list for extension type_name + 75, // [75:75] is the sub-list for extension extendee + 0, // [0:75] is the sub-list for field type_name } func init() { file_neoshowcase_protobuf_gateway_proto_init() } @@ -6170,861 +6159,7 @@ func file_neoshowcase_protobuf_gateway_proto_init() { return } file_neoshowcase_protobuf_null_proto_init() - if !protoimpl.UnsafeEnabled { - file_neoshowcase_protobuf_gateway_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*SSHInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AvailableDomain); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*AvailablePort); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*AdditionalLink); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*SystemInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UserKey); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Repository); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*SimpleCommit); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*RuntimeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*BuildConfigRuntimeBuildpack); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*BuildConfigRuntimeCmd); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*BuildConfigRuntimeDockerfile); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*StaticConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*BuildConfigStaticBuildpack); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*BuildConfigStaticCmd); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*BuildConfigStaticDockerfile); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*Website); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*PortPublication); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*Application); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationEnvVar); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationEnvVars); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*Artifact); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*ArtifactContent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*RuntimeImage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*AvailableMetrics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationMetric); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationMetrics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationOutput); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationOutputs); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*Build); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*BuildLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*GitRef); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*GenerateKeyPairResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*GetUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*GetUserKeysResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*CreateUserKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUserKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*CreateRepositoryAuthBasic); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*CreateRepositoryAuthSSH); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*CreateRepositoryAuth); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*CreateRepositoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoriesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*UpdateRepositoryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*RepositoryIdRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryCommitsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryCommitsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*CreateWebsiteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*DeleteWebsiteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*CreateApplicationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*GetApplicationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*UpdateApplicationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoriesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*GetApplicationsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*ApplicationIdRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*GetAllBuildsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*BuildIdRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*ArtifactIdRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*GetBuildsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*SetApplicationEnvVarRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*DeleteApplicationEnvVarRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*GetApplicationMetricsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*GetOutputRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*GetOutputStreamRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*RetryCommitBuildRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*GetRepositoryRefsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*UpdateRepositoryRequest_UpdateOwners); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*UpdateApplicationRequest_UpdateWebsites); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*UpdateApplicationRequest_UpdatePorts); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*UpdateApplicationRequest_UpdateOwners); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_neoshowcase_protobuf_gateway_proto_msgTypes[17].OneofWrappers = []any{ + file_neoshowcase_protobuf_gateway_proto_msgTypes[18].OneofWrappers = []any{ (*ApplicationConfig_RuntimeBuildpack)(nil), (*ApplicationConfig_RuntimeCmd)(nil), (*ApplicationConfig_RuntimeDockerfile)(nil), @@ -7032,23 +6167,23 @@ func file_neoshowcase_protobuf_gateway_proto_init() { (*ApplicationConfig_StaticCmd)(nil), (*ApplicationConfig_StaticDockerfile)(nil), } - file_neoshowcase_protobuf_gateway_proto_msgTypes[20].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[31].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[41].OneofWrappers = []any{ + file_neoshowcase_protobuf_gateway_proto_msgTypes[21].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[32].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[42].OneofWrappers = []any{ (*CreateRepositoryAuth_None)(nil), (*CreateRepositoryAuth_Basic)(nil), (*CreateRepositoryAuth_Ssh)(nil), } - file_neoshowcase_protobuf_gateway_proto_msgTypes[44].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[51].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[45].OneofWrappers = []any{} file_neoshowcase_protobuf_gateway_proto_msgTypes[52].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[53].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_neoshowcase_protobuf_gateway_proto_rawDesc, - NumEnums: 8, - NumMessages: 71, + NumEnums: 9, + NumMessages: 72, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/infrastructure/grpc/pb/null.pb.go b/pkg/infrastructure/grpc/pb/null.pb.go index a915784f..5ee4446c 100644 --- a/pkg/infrastructure/grpc/pb/null.pb.go +++ b/pkg/infrastructure/grpc/pb/null.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.2 // protoc v5.27.1 // source: neoshowcase/protobuf/null.proto @@ -32,11 +32,9 @@ type NullTimestamp struct { func (x *NullTimestamp) Reset() { *x = NullTimestamp{} - if protoimpl.UnsafeEnabled { - mi := &file_neoshowcase_protobuf_null_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_neoshowcase_protobuf_null_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NullTimestamp) String() string { @@ -47,7 +45,7 @@ func (*NullTimestamp) ProtoMessage() {} func (x *NullTimestamp) ProtoReflect() protoreflect.Message { mi := &file_neoshowcase_protobuf_null_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -129,20 +127,6 @@ func file_neoshowcase_protobuf_null_proto_init() { if File_neoshowcase_protobuf_null_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_neoshowcase_protobuf_null_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*NullTimestamp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/pkg/infrastructure/grpc/pbconvert/application_config.go b/pkg/infrastructure/grpc/pbconvert/application_config.go index 5fb8bdf2..aa3178ae 100644 --- a/pkg/infrastructure/grpc/pbconvert/application_config.go +++ b/pkg/infrastructure/grpc/pbconvert/application_config.go @@ -7,19 +7,21 @@ import ( func FromPBRuntimeConfig(c *pb.RuntimeConfig) domain.RuntimeConfig { return domain.RuntimeConfig{ - UseMariaDB: c.UseMariadb, - UseMongoDB: c.UseMongodb, - Entrypoint: c.Entrypoint, - Command: c.Command, + UseMariaDB: c.UseMariadb, + UseMongoDB: c.UseMongodb, + Entrypoint: c.Entrypoint, + Command: c.Command, + AutoShutdown: FromPBAutoShutdown(c.AutoShutdown), } } func ToPBRuntimeConfig(c *domain.RuntimeConfig) *pb.RuntimeConfig { return &pb.RuntimeConfig{ - UseMariadb: c.UseMariaDB, - UseMongodb: c.UseMongoDB, - Entrypoint: c.Entrypoint, - Command: c.Command, + UseMariadb: c.UseMariaDB, + UseMongodb: c.UseMongoDB, + Entrypoint: c.Entrypoint, + Command: c.Command, + AutoShutdown: ToPBAutoShutdown(c.AutoShutdown), } } @@ -136,3 +138,43 @@ func ToPBApplicationConfig(c domain.ApplicationConfig) *pb.ApplicationConfig { panic("unknown domain build config type") } } + +func FromPBAutoShutdown(as *pb.AutoShutdownConfig) domain.AutoShutdownConfig { + return domain.AutoShutdownConfig{ + Enabled: as.Enabled, + Startup: fromPBStartupBehavior(as.Startup), + } +} + +func fromPBStartupBehavior(sb pb.AutoShutdownConfig_StartupBehavior) domain.StartupBehavior { + switch sb { + case pb.AutoShutdownConfig_UNDEFINED: + return domain.StartupBehaviorUndefined + case pb.AutoShutdownConfig_LOADING_PAGE: + return domain.StartupBehaviorLoadingPage + case pb.AutoShutdownConfig_BLOCKING: + return domain.StartupBehaviorBlocking + default: + panic("unknown pb startup behavior") + } +} + +func ToPBAutoShutdown(as domain.AutoShutdownConfig) *pb.AutoShutdownConfig { + return &pb.AutoShutdownConfig{ + Enabled: as.Enabled, + Startup: toPBStartupBehavior(as.Startup), + } +} + +func toPBStartupBehavior(sb domain.StartupBehavior) pb.AutoShutdownConfig_StartupBehavior { + switch sb { + case domain.StartupBehaviorUndefined: + return pb.AutoShutdownConfig_UNDEFINED + case domain.StartupBehaviorLoadingPage: + return pb.AutoShutdownConfig_LOADING_PAGE + case domain.StartupBehaviorBlocking: + return pb.AutoShutdownConfig_BLOCKING + default: + panic("unknown domain startup behavior") + } +} diff --git a/pkg/infrastructure/repository/models/application_config.go b/pkg/infrastructure/repository/models/application_config.go index 75fa577d..aa402ee2 100644 --- a/pkg/infrastructure/repository/models/application_config.go +++ b/pkg/infrastructure/repository/models/application_config.go @@ -28,6 +28,10 @@ type ApplicationConfig struct { // アプリケーションID UseMariadb bool `boil:"use_mariadb" json:"use_mariadb" toml:"use_mariadb" yaml:"use_mariadb"` // MongoDBを使用するか UseMongodb bool `boil:"use_mongodb" json:"use_mongodb" toml:"use_mongodb" yaml:"use_mongodb"` + // アプリケーションの自動シャットダウン + AutoShutdown bool `boil:"auto_shutdown" json:"auto_shutdown" toml:"auto_shutdown" yaml:"auto_shutdown"` + // アプリ起動時の振る舞い + StartupBehavior string `boil:"startup_behavior" json:"startup_behavior" toml:"startup_behavior" yaml:"startup_behavior"` // ビルドタイプ BuildType string `boil:"build_type" json:"build_type" toml:"build_type" yaml:"build_type"` // ベースイメージの名前 @@ -52,59 +56,67 @@ type ApplicationConfig struct { // アプリケーションID } var ApplicationConfigColumns = struct { - ApplicationID string - UseMariadb string - UseMongodb string - BuildType string - BaseImage string - BuildCMD string - ArtifactPath string - Spa string - DockerfileName string - Context string - Entrypoint string - Command string + ApplicationID string + UseMariadb string + UseMongodb string + AutoShutdown string + StartupBehavior string + BuildType string + BaseImage string + BuildCMD string + ArtifactPath string + Spa string + DockerfileName string + Context string + Entrypoint string + Command string }{ - ApplicationID: "application_id", - UseMariadb: "use_mariadb", - UseMongodb: "use_mongodb", - BuildType: "build_type", - BaseImage: "base_image", - BuildCMD: "build_cmd", - ArtifactPath: "artifact_path", - Spa: "spa", - DockerfileName: "dockerfile_name", - Context: "context", - Entrypoint: "entrypoint", - Command: "command", + ApplicationID: "application_id", + UseMariadb: "use_mariadb", + UseMongodb: "use_mongodb", + AutoShutdown: "auto_shutdown", + StartupBehavior: "startup_behavior", + BuildType: "build_type", + BaseImage: "base_image", + BuildCMD: "build_cmd", + ArtifactPath: "artifact_path", + Spa: "spa", + DockerfileName: "dockerfile_name", + Context: "context", + Entrypoint: "entrypoint", + Command: "command", } var ApplicationConfigTableColumns = struct { - ApplicationID string - UseMariadb string - UseMongodb string - BuildType string - BaseImage string - BuildCMD string - ArtifactPath string - Spa string - DockerfileName string - Context string - Entrypoint string - Command string + ApplicationID string + UseMariadb string + UseMongodb string + AutoShutdown string + StartupBehavior string + BuildType string + BaseImage string + BuildCMD string + ArtifactPath string + Spa string + DockerfileName string + Context string + Entrypoint string + Command string }{ - ApplicationID: "application_config.application_id", - UseMariadb: "application_config.use_mariadb", - UseMongodb: "application_config.use_mongodb", - BuildType: "application_config.build_type", - BaseImage: "application_config.base_image", - BuildCMD: "application_config.build_cmd", - ArtifactPath: "application_config.artifact_path", - Spa: "application_config.spa", - DockerfileName: "application_config.dockerfile_name", - Context: "application_config.context", - Entrypoint: "application_config.entrypoint", - Command: "application_config.command", + ApplicationID: "application_config.application_id", + UseMariadb: "application_config.use_mariadb", + UseMongodb: "application_config.use_mongodb", + AutoShutdown: "application_config.auto_shutdown", + StartupBehavior: "application_config.startup_behavior", + BuildType: "application_config.build_type", + BaseImage: "application_config.base_image", + BuildCMD: "application_config.build_cmd", + ArtifactPath: "application_config.artifact_path", + Spa: "application_config.spa", + DockerfileName: "application_config.dockerfile_name", + Context: "application_config.context", + Entrypoint: "application_config.entrypoint", + Command: "application_config.command", } // Generated where @@ -144,31 +156,35 @@ func (w whereHelperbool) GT(x bool) qm.QueryMod { return qmhelper.Where(w.field func (w whereHelperbool) GTE(x bool) qm.QueryMod { return qmhelper.Where(w.field, qmhelper.GTE, x) } var ApplicationConfigWhere = struct { - ApplicationID whereHelperstring - UseMariadb whereHelperbool - UseMongodb whereHelperbool - BuildType whereHelperstring - BaseImage whereHelperstring - BuildCMD whereHelperstring - ArtifactPath whereHelperstring - Spa whereHelperbool - DockerfileName whereHelperstring - Context whereHelperstring - Entrypoint whereHelperstring - Command whereHelperstring + ApplicationID whereHelperstring + UseMariadb whereHelperbool + UseMongodb whereHelperbool + AutoShutdown whereHelperbool + StartupBehavior whereHelperstring + BuildType whereHelperstring + BaseImage whereHelperstring + BuildCMD whereHelperstring + ArtifactPath whereHelperstring + Spa whereHelperbool + DockerfileName whereHelperstring + Context whereHelperstring + Entrypoint whereHelperstring + Command whereHelperstring }{ - ApplicationID: whereHelperstring{field: "`application_config`.`application_id`"}, - UseMariadb: whereHelperbool{field: "`application_config`.`use_mariadb`"}, - UseMongodb: whereHelperbool{field: "`application_config`.`use_mongodb`"}, - BuildType: whereHelperstring{field: "`application_config`.`build_type`"}, - BaseImage: whereHelperstring{field: "`application_config`.`base_image`"}, - BuildCMD: whereHelperstring{field: "`application_config`.`build_cmd`"}, - ArtifactPath: whereHelperstring{field: "`application_config`.`artifact_path`"}, - Spa: whereHelperbool{field: "`application_config`.`spa`"}, - DockerfileName: whereHelperstring{field: "`application_config`.`dockerfile_name`"}, - Context: whereHelperstring{field: "`application_config`.`context`"}, - Entrypoint: whereHelperstring{field: "`application_config`.`entrypoint`"}, - Command: whereHelperstring{field: "`application_config`.`command`"}, + ApplicationID: whereHelperstring{field: "`application_config`.`application_id`"}, + UseMariadb: whereHelperbool{field: "`application_config`.`use_mariadb`"}, + UseMongodb: whereHelperbool{field: "`application_config`.`use_mongodb`"}, + AutoShutdown: whereHelperbool{field: "`application_config`.`auto_shutdown`"}, + StartupBehavior: whereHelperstring{field: "`application_config`.`startup_behavior`"}, + BuildType: whereHelperstring{field: "`application_config`.`build_type`"}, + BaseImage: whereHelperstring{field: "`application_config`.`base_image`"}, + BuildCMD: whereHelperstring{field: "`application_config`.`build_cmd`"}, + ArtifactPath: whereHelperstring{field: "`application_config`.`artifact_path`"}, + Spa: whereHelperbool{field: "`application_config`.`spa`"}, + DockerfileName: whereHelperstring{field: "`application_config`.`dockerfile_name`"}, + Context: whereHelperstring{field: "`application_config`.`context`"}, + Entrypoint: whereHelperstring{field: "`application_config`.`entrypoint`"}, + Command: whereHelperstring{field: "`application_config`.`command`"}, } // ApplicationConfigRels is where relationship names are stored. @@ -199,9 +215,9 @@ func (r *applicationConfigR) GetApplication() *Application { type applicationConfigL struct{} var ( - applicationConfigAllColumns = []string{"application_id", "use_mariadb", "use_mongodb", "build_type", "base_image", "build_cmd", "artifact_path", "spa", "dockerfile_name", "context", "entrypoint", "command"} + applicationConfigAllColumns = []string{"application_id", "use_mariadb", "use_mongodb", "auto_shutdown", "startup_behavior", "build_type", "base_image", "build_cmd", "artifact_path", "spa", "dockerfile_name", "context", "entrypoint", "command"} applicationConfigColumnsWithoutDefault = []string{"application_id", "use_mariadb", "use_mongodb", "build_type", "base_image", "build_cmd", "artifact_path", "spa", "dockerfile_name", "context", "entrypoint", "command"} - applicationConfigColumnsWithDefault = []string{} + applicationConfigColumnsWithDefault = []string{"auto_shutdown", "startup_behavior"} applicationConfigPrimaryKeyColumns = []string{"application_id"} applicationConfigGeneratedColumns = []string{} ) diff --git a/pkg/infrastructure/repository/models/boil_types.go b/pkg/infrastructure/repository/models/boil_types.go index a7d3db28..41f07f34 100644 --- a/pkg/infrastructure/repository/models/boil_types.go +++ b/pkg/infrastructure/repository/models/boil_types.go @@ -51,6 +51,19 @@ func makeCacheKey(cols boil.Columns, nzDefaults []string) string { return str } +// Enum values for ApplicationConfigStartupBehavior +const ( + ApplicationConfigStartupBehaviorLoadingPage string = "loading-page" + ApplicationConfigStartupBehaviorBlocking string = "blocking" +) + +func AllApplicationConfigStartupBehavior() []string { + return []string{ + ApplicationConfigStartupBehaviorLoadingPage, + ApplicationConfigStartupBehaviorBlocking, + } +} + // Enum values for ApplicationConfigBuildType const ( ApplicationConfigBuildTypeRuntimeBuildpack string = "runtime-buildpack" diff --git a/pkg/infrastructure/repository/repoconvert/application_config.go b/pkg/infrastructure/repository/repoconvert/application_config.go index fd7086d5..6310c05f 100644 --- a/pkg/infrastructure/repository/repoconvert/application_config.go +++ b/pkg/infrastructure/repository/repoconvert/application_config.go @@ -30,19 +30,37 @@ var BuildTypeMapper = mapper.MustNewValueMapper(map[string]domain.BuildType{ models.ApplicationConfigBuildTypeStaticDockerfile: domain.BuildTypeStaticDockerfile, }) +var StartupBehaviorMapper = mapper.MustNewValueMapper(map[string]domain.StartupBehavior{ + models.ApplicationConfigStartupBehaviorLoadingPage: domain.StartupBehaviorLoadingPage, + models.ApplicationConfigStartupBehaviorBlocking: domain.StartupBehaviorBlocking, +}) + func assignRuntimeConfig(mc *models.ApplicationConfig, c *domain.RuntimeConfig) { mc.UseMariadb = c.UseMariaDB mc.UseMongodb = c.UseMongoDB + mc.AutoShutdown = c.AutoShutdown.Enabled + if c.AutoShutdown.Enabled { + mc.StartupBehavior = StartupBehaviorMapper.FromMust(c.AutoShutdown.Startup) + } mc.Entrypoint = c.Entrypoint mc.Command = c.Command } func ToDomainRuntimeConfig(c *models.ApplicationConfig) domain.RuntimeConfig { + autoShutdownConf := domain.AutoShutdownConfig{ + Enabled: c.AutoShutdown, + } + if autoShutdownConf.Enabled { + autoShutdownConf.Startup = StartupBehaviorMapper.IntoMust(c.StartupBehavior) + } else { + autoShutdownConf.Startup = domain.StartupBehaviorUndefined + } return domain.RuntimeConfig{ - UseMariaDB: c.UseMariadb, - UseMongoDB: c.UseMongodb, - Entrypoint: c.Entrypoint, - Command: c.Command, + UseMariaDB: c.UseMariadb, + UseMongoDB: c.UseMongodb, + AutoShutdown: autoShutdownConf, + Entrypoint: c.Entrypoint, + Command: c.Command, } }