// Code generated by go2proto. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 // protoc v4.25.1 // source: types.proto package proto import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type App struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` WorkspaceId uint32 `protobuf:"varint,5,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` DeletedAt *NullTime `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` } func (x *App) Reset() { *x = App{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *App) String() string { return protoimpl.X.MessageStringOf(x) } func (*App) ProtoMessage() {} func (x *App) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use App.ProtoReflect.Descriptor instead. func (*App) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{0} } func (x *App) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *App) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *App) GetName() string { if x != nil { return x.Name } return "" } func (x *App) GetDescription() string { if x != nil { return x.Description } return "" } func (x *App) GetWorkspaceId() uint32 { if x != nil { return x.WorkspaceId } return 0 } func (x *App) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *App) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *App) GetDeletedAt() *NullTime { if x != nil { return x.DeletedAt } return nil } type BuildOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourceImage string `protobuf:"bytes,1,opt,name=source_image,json=sourceImage,proto3" json:"source_image,omitempty"` Dockerfile string `protobuf:"bytes,2,opt,name=dockerfile,proto3" json:"dockerfile,omitempty"` BuildCtxObject string `protobuf:"bytes,3,opt,name=build_ctx_object,json=buildCtxObject,proto3" json:"build_ctx_object,omitempty"` SourceImageCreds string `protobuf:"bytes,4,opt,name=source_image_creds,json=sourceImageCreds,proto3" json:"source_image_creds,omitempty"` BuildSecrets []string `protobuf:"bytes,5,rep,name=build_secrets,json=buildSecrets,proto3" json:"build_secrets,omitempty"` GitSource *GitSource `protobuf:"bytes,6,opt,name=git_source,json=gitSource,proto3" json:"git_source,omitempty"` } func (x *BuildOptions) Reset() { *x = BuildOptions{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BuildOptions) String() string { return protoimpl.X.MessageStringOf(x) } func (*BuildOptions) ProtoMessage() {} func (x *BuildOptions) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BuildOptions.ProtoReflect.Descriptor instead. func (*BuildOptions) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{1} } func (x *BuildOptions) GetSourceImage() string { if x != nil { return x.SourceImage } return "" } func (x *BuildOptions) GetDockerfile() string { if x != nil { return x.Dockerfile } return "" } func (x *BuildOptions) GetBuildCtxObject() string { if x != nil { return x.BuildCtxObject } return "" } func (x *BuildOptions) GetSourceImageCreds() string { if x != nil { return x.SourceImageCreds } return "" } func (x *BuildOptions) GetBuildSecrets() []string { if x != nil { return x.BuildSecrets } return nil } func (x *BuildOptions) GetGitSource() *GitSource { if x != nil { return x.GitSource } return nil } type Checkpoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CheckpointId string `protobuf:"bytes,2,opt,name=checkpoint_id,json=checkpointId,proto3" json:"checkpoint_id,omitempty"` ExternalId string `protobuf:"bytes,3,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` SourceContainerId string `protobuf:"bytes,4,opt,name=source_container_id,json=sourceContainerId,proto3" json:"source_container_id,omitempty"` ContainerIp string `protobuf:"bytes,5,opt,name=container_ip,json=containerIp,proto3" json:"container_ip,omitempty"` Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` RemoteKey string `protobuf:"bytes,7,opt,name=remote_key,json=remoteKey,proto3" json:"remote_key,omitempty"` StubType string `protobuf:"bytes,10,opt,name=stub_type,json=stubType,proto3" json:"stub_type,omitempty"` ExposedPorts []uint32 `protobuf:"varint,12,rep,packed,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` LastRestoredAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=last_restored_at,json=lastRestoredAt,proto3" json:"last_restored_at,omitempty"` DeletedAt *NullTime `protobuf:"bytes,15,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` CacheHash string `protobuf:"bytes,16,opt,name=cache_hash,json=cacheHash,proto3" json:"cache_hash,omitempty"` CacheSizeBytes int64 `protobuf:"varint,17,opt,name=cache_size_bytes,json=cacheSizeBytes,proto3" json:"cache_size_bytes,omitempty"` OriginKey string `protobuf:"bytes,18,opt,name=origin_key,json=originKey,proto3" json:"origin_key,omitempty"` Locality string `protobuf:"bytes,19,opt,name=locality,proto3" json:"locality,omitempty"` Accelerator string `protobuf:"bytes,20,opt,name=accelerator,proto3" json:"accelerator,omitempty"` Runtime string `protobuf:"bytes,21,opt,name=runtime,proto3" json:"runtime,omitempty"` } func (x *Checkpoint) Reset() { *x = Checkpoint{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Checkpoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*Checkpoint) ProtoMessage() {} func (x *Checkpoint) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Checkpoint.ProtoReflect.Descriptor instead. func (*Checkpoint) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{2} } func (x *Checkpoint) GetCheckpointId() string { if x != nil { return x.CheckpointId } return "" } func (x *Checkpoint) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *Checkpoint) GetSourceContainerId() string { if x != nil { return x.SourceContainerId } return "" } func (x *Checkpoint) GetContainerIp() string { if x != nil { return x.ContainerIp } return "" } func (x *Checkpoint) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Checkpoint) GetRemoteKey() string { if x != nil { return x.RemoteKey } return "" } func (x *Checkpoint) GetStubType() string { if x != nil { return x.StubType } return "" } func (x *Checkpoint) GetExposedPorts() []uint32 { if x != nil { return x.ExposedPorts } return nil } func (x *Checkpoint) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Checkpoint) GetLastRestoredAt() *timestamppb.Timestamp { if x != nil { return x.LastRestoredAt } return nil } func (x *Checkpoint) GetDeletedAt() *NullTime { if x != nil { return x.DeletedAt } return nil } func (x *Checkpoint) GetCacheHash() string { if x != nil { return x.CacheHash } return "" } func (x *Checkpoint) GetCacheSizeBytes() int64 { if x != nil { return x.CacheSizeBytes } return 0 } func (x *Checkpoint) GetOriginKey() string { if x != nil { return x.OriginKey } return "" } func (x *Checkpoint) GetLocality() string { if x != nil { return x.Locality } return "" } func (x *Checkpoint) GetAccelerator() string { if x != nil { return x.Accelerator } return "" } func (x *Checkpoint) GetRuntime() string { if x != nil { return x.Runtime } return "" } type CheckpointTrigger struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` HttpPath string `protobuf:"bytes,2,opt,name=http_path,json=httpPath,proto3" json:"http_path,omitempty"` HttpPort uint32 `protobuf:"varint,3,opt,name=http_port,json=httpPort,proto3" json:"http_port,omitempty"` TimeoutSeconds uint32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` IntervalSeconds uint32 `protobuf:"varint,5,opt,name=interval_seconds,json=intervalSeconds,proto3" json:"interval_seconds,omitempty"` } func (x *CheckpointTrigger) Reset() { *x = CheckpointTrigger{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckpointTrigger) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckpointTrigger) ProtoMessage() {} func (x *CheckpointTrigger) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CheckpointTrigger.ProtoReflect.Descriptor instead. func (*CheckpointTrigger) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{3} } func (x *CheckpointTrigger) GetType() string { if x != nil { return x.Type } return "" } func (x *CheckpointTrigger) GetHttpPath() string { if x != nil { return x.HttpPath } return "" } func (x *CheckpointTrigger) GetHttpPort() uint32 { if x != nil { return x.HttpPort } return 0 } func (x *CheckpointTrigger) GetTimeoutSeconds() uint32 { if x != nil { return x.TimeoutSeconds } return 0 } func (x *CheckpointTrigger) GetIntervalSeconds() uint32 { if x != nil { return x.IntervalSeconds } return 0 } type ConcurrencyLimit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` WorkspaceId uint32 `protobuf:"varint,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` GpuLimit uint32 `protobuf:"varint,4,opt,name=gpu_limit,json=gpuLimit,proto3" json:"gpu_limit,omitempty"` CpuMillicoreLimit uint32 `protobuf:"varint,5,opt,name=cpu_millicore_limit,json=cpuMillicoreLimit,proto3" json:"cpu_millicore_limit,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *ConcurrencyLimit) Reset() { *x = ConcurrencyLimit{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ConcurrencyLimit) String() string { return protoimpl.X.MessageStringOf(x) } func (*ConcurrencyLimit) ProtoMessage() {} func (x *ConcurrencyLimit) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ConcurrencyLimit.ProtoReflect.Descriptor instead. func (*ConcurrencyLimit) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{4} } func (x *ConcurrencyLimit) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *ConcurrencyLimit) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *ConcurrencyLimit) GetWorkspaceId() uint32 { if x != nil { return x.WorkspaceId } return 0 } func (x *ConcurrencyLimit) GetGpuLimit() uint32 { if x != nil { return x.GpuLimit } return 0 } func (x *ConcurrencyLimit) GetCpuMillicoreLimit() uint32 { if x != nil { return x.CpuMillicoreLimit } return 0 } func (x *ConcurrencyLimit) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ConcurrencyLimit) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } type Container struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` StubId string `protobuf:"bytes,2,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` ScheduledAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=scheduled_at,json=scheduledAt,proto3" json:"scheduled_at,omitempty"` StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` WorkspaceId string `protobuf:"bytes,6,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` WorkerId string `protobuf:"bytes,7,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` MachineId string `protobuf:"bytes,8,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` DeploymentId string `protobuf:"bytes,9,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` } func (x *Container) Reset() { *x = Container{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Container) String() string { return protoimpl.X.MessageStringOf(x) } func (*Container) ProtoMessage() {} func (x *Container) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Container.ProtoReflect.Descriptor instead. func (*Container) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{5} } func (x *Container) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *Container) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *Container) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Container) GetScheduledAt() *timestamppb.Timestamp { if x != nil { return x.ScheduledAt } return nil } func (x *Container) GetStartedAt() *timestamppb.Timestamp { if x != nil { return x.StartedAt } return nil } func (x *Container) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *Container) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *Container) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *Container) GetDeploymentId() string { if x != nil { return x.DeploymentId } return "" } type ContainerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` EntryPoint []string `protobuf:"bytes,2,rep,name=entry_point,json=entryPoint,proto3" json:"entry_point,omitempty"` Env []string `protobuf:"bytes,3,rep,name=env,proto3" json:"env,omitempty"` Cpu int64 `protobuf:"varint,4,opt,name=cpu,proto3" json:"cpu,omitempty"` Memory int64 `protobuf:"varint,5,opt,name=memory,proto3" json:"memory,omitempty"` Gpu string `protobuf:"bytes,6,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuRequest []string `protobuf:"bytes,7,rep,name=gpu_request,json=gpuRequest,proto3" json:"gpu_request,omitempty"` GpuCount uint32 `protobuf:"varint,8,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` ImageId string `protobuf:"bytes,9,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` StubId string `protobuf:"bytes,10,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` WorkspaceId string `protobuf:"bytes,11,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` Workspace *Workspace `protobuf:"bytes,12,opt,name=workspace,proto3" json:"workspace,omitempty"` Stub *StubWithRelated `protobuf:"bytes,13,opt,name=stub,proto3" json:"stub,omitempty"` Timestamp *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Mounts []*Mount `protobuf:"bytes,15,rep,name=mounts,proto3" json:"mounts,omitempty"` RetryCount int64 `protobuf:"varint,16,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` PoolSelector string `protobuf:"bytes,17,opt,name=pool_selector,json=poolSelector,proto3" json:"pool_selector,omitempty"` Preemptable bool `protobuf:"varint,18,opt,name=preemptable,proto3" json:"preemptable,omitempty"` CheckpointEnabled bool `protobuf:"varint,19,opt,name=checkpoint_enabled,json=checkpointEnabled,proto3" json:"checkpoint_enabled,omitempty"` BuildOptions *BuildOptions `protobuf:"bytes,20,opt,name=build_options,json=buildOptions,proto3" json:"build_options,omitempty"` Ports []uint32 `protobuf:"varint,21,rep,packed,name=ports,proto3" json:"ports,omitempty"` CostPerMs float64 `protobuf:"fixed64,22,opt,name=cost_per_ms,json=costPerMs,proto3" json:"cost_per_ms,omitempty"` AppId string `protobuf:"bytes,23,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` Checkpoint *Checkpoint `protobuf:"bytes,24,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"` ConfigPath string `protobuf:"bytes,25,opt,name=config_path,json=configPath,proto3" json:"config_path,omitempty"` ImageCredentials string `protobuf:"bytes,26,opt,name=image_credentials,json=imageCredentials,proto3" json:"image_credentials,omitempty"` BuildRegistryCredentials string `protobuf:"bytes,27,opt,name=build_registry_credentials,json=buildRegistryCredentials,proto3" json:"build_registry_credentials,omitempty"` BlockNetwork bool `protobuf:"varint,28,opt,name=block_network,json=blockNetwork,proto3" json:"block_network,omitempty"` AllowList []string `protobuf:"bytes,29,rep,name=allow_list,json=allowList,proto3" json:"allow_list,omitempty"` DockerEnabled bool `protobuf:"varint,30,opt,name=docker_enabled,json=dockerEnabled,proto3" json:"docker_enabled,omitempty"` RuntimeSecretNames []string `protobuf:"bytes,31,rep,name=runtime_secret_names,json=runtimeSecretNames,proto3" json:"runtime_secret_names,omitempty"` RuntimeTokenRequired bool `protobuf:"varint,32,opt,name=runtime_token_required,json=runtimeTokenRequired,proto3" json:"runtime_token_required,omitempty"` MachineId string `protobuf:"bytes,34,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` CheckpointTrigger *CheckpointTrigger `protobuf:"bytes,35,opt,name=checkpoint_trigger,json=checkpointTrigger,proto3" json:"checkpoint_trigger,omitempty"` TaskId string `protobuf:"bytes,36,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` Hostname string `protobuf:"bytes,38,opt,name=hostname,proto3" json:"hostname,omitempty"` Evictable bool `protobuf:"varint,40,opt,name=evictable,proto3" json:"evictable,omitempty"` OpportunisticOnly bool `protobuf:"varint,41,opt,name=opportunistic_only,json=opportunisticOnly,proto3" json:"opportunistic_only,omitempty"` EvictContainerIds []string `protobuf:"bytes,42,rep,name=evict_container_ids,json=evictContainerIds,proto3" json:"evict_container_ids,omitempty"` EvictDrainSeconds uint32 `protobuf:"varint,43,opt,name=evict_drain_seconds,json=evictDrainSeconds,proto3" json:"evict_drain_seconds,omitempty"` DrainSeconds uint32 `protobuf:"varint,44,opt,name=drain_seconds,json=drainSeconds,proto3" json:"drain_seconds,omitempty"` EvictOrder int32 `protobuf:"varint,45,opt,name=evict_order,json=evictOrder,proto3" json:"evict_order,omitempty"` UseVm bool `protobuf:"varint,46,opt,name=use_vm,json=useVm,proto3" json:"use_vm,omitempty"` SecretBindings []*SecretBinding `protobuf:"bytes,47,rep,name=secret_bindings,json=secretBindings,proto3" json:"secret_bindings,omitempty"` } func (x *ContainerRequest) Reset() { *x = ContainerRequest{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ContainerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContainerRequest) ProtoMessage() {} func (x *ContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ContainerRequest.ProtoReflect.Descriptor instead. func (*ContainerRequest) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{6} } func (x *ContainerRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *ContainerRequest) GetEntryPoint() []string { if x != nil { return x.EntryPoint } return nil } func (x *ContainerRequest) GetEnv() []string { if x != nil { return x.Env } return nil } func (x *ContainerRequest) GetCpu() int64 { if x != nil { return x.Cpu } return 0 } func (x *ContainerRequest) GetMemory() int64 { if x != nil { return x.Memory } return 0 } func (x *ContainerRequest) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *ContainerRequest) GetGpuRequest() []string { if x != nil { return x.GpuRequest } return nil } func (x *ContainerRequest) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *ContainerRequest) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *ContainerRequest) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *ContainerRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *ContainerRequest) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } func (x *ContainerRequest) GetStub() *StubWithRelated { if x != nil { return x.Stub } return nil } func (x *ContainerRequest) GetTimestamp() *timestamppb.Timestamp { if x != nil { return x.Timestamp } return nil } func (x *ContainerRequest) GetMounts() []*Mount { if x != nil { return x.Mounts } return nil } func (x *ContainerRequest) GetRetryCount() int64 { if x != nil { return x.RetryCount } return 0 } func (x *ContainerRequest) GetPoolSelector() string { if x != nil { return x.PoolSelector } return "" } func (x *ContainerRequest) GetPreemptable() bool { if x != nil { return x.Preemptable } return false } func (x *ContainerRequest) GetCheckpointEnabled() bool { if x != nil { return x.CheckpointEnabled } return false } func (x *ContainerRequest) GetBuildOptions() *BuildOptions { if x != nil { return x.BuildOptions } return nil } func (x *ContainerRequest) GetPorts() []uint32 { if x != nil { return x.Ports } return nil } func (x *ContainerRequest) GetCostPerMs() float64 { if x != nil { return x.CostPerMs } return 0 } func (x *ContainerRequest) GetAppId() string { if x != nil { return x.AppId } return "" } func (x *ContainerRequest) GetCheckpoint() *Checkpoint { if x != nil { return x.Checkpoint } return nil } func (x *ContainerRequest) GetConfigPath() string { if x != nil { return x.ConfigPath } return "" } func (x *ContainerRequest) GetImageCredentials() string { if x != nil { return x.ImageCredentials } return "" } func (x *ContainerRequest) GetBuildRegistryCredentials() string { if x != nil { return x.BuildRegistryCredentials } return "" } func (x *ContainerRequest) GetBlockNetwork() bool { if x != nil { return x.BlockNetwork } return false } func (x *ContainerRequest) GetAllowList() []string { if x != nil { return x.AllowList } return nil } func (x *ContainerRequest) GetDockerEnabled() bool { if x != nil { return x.DockerEnabled } return false } func (x *ContainerRequest) GetRuntimeSecretNames() []string { if x != nil { return x.RuntimeSecretNames } return nil } func (x *ContainerRequest) GetRuntimeTokenRequired() bool { if x != nil { return x.RuntimeTokenRequired } return false } func (x *ContainerRequest) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *ContainerRequest) GetCheckpointTrigger() *CheckpointTrigger { if x != nil { return x.CheckpointTrigger } return nil } func (x *ContainerRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *ContainerRequest) GetHostname() string { if x != nil { return x.Hostname } return "" } func (x *ContainerRequest) GetEvictable() bool { if x != nil { return x.Evictable } return false } func (x *ContainerRequest) GetOpportunisticOnly() bool { if x != nil { return x.OpportunisticOnly } return false } func (x *ContainerRequest) GetEvictContainerIds() []string { if x != nil { return x.EvictContainerIds } return nil } func (x *ContainerRequest) GetEvictDrainSeconds() uint32 { if x != nil { return x.EvictDrainSeconds } return 0 } func (x *ContainerRequest) GetDrainSeconds() uint32 { if x != nil { return x.DrainSeconds } return 0 } func (x *ContainerRequest) GetEvictOrder() int32 { if x != nil { return x.EvictOrder } return 0 } func (x *ContainerRequest) GetUseVm() bool { if x != nil { return x.UseVm } return false } func (x *ContainerRequest) GetSecretBindings() []*SecretBinding { if x != nil { return x.SecretBindings } return nil } type ContainerState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` StubId string `protobuf:"bytes,2,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` ScheduledAt int64 `protobuf:"varint,4,opt,name=scheduled_at,json=scheduledAt,proto3" json:"scheduled_at,omitempty"` WorkspaceId string `protobuf:"bytes,5,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` Gpu string `protobuf:"bytes,6,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,7,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` Cpu int64 `protobuf:"varint,8,opt,name=cpu,proto3" json:"cpu,omitempty"` Memory int64 `protobuf:"varint,9,opt,name=memory,proto3" json:"memory,omitempty"` StartedAt int64 `protobuf:"varint,10,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` WorkerId string `protobuf:"bytes,11,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` MachineId string `protobuf:"bytes,12,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` Evictable bool `protobuf:"varint,13,opt,name=evictable,proto3" json:"evictable,omitempty"` Evicting bool `protobuf:"varint,14,opt,name=evicting,proto3" json:"evicting,omitempty"` DrainSeconds uint32 `protobuf:"varint,15,opt,name=drain_seconds,json=drainSeconds,proto3" json:"drain_seconds,omitempty"` EvictOrder int32 `protobuf:"varint,16,opt,name=evict_order,json=evictOrder,proto3" json:"evict_order,omitempty"` } func (x *ContainerState) Reset() { *x = ContainerState{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ContainerState) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContainerState) ProtoMessage() {} func (x *ContainerState) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ContainerState.ProtoReflect.Descriptor instead. func (*ContainerState) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{7} } func (x *ContainerState) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *ContainerState) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *ContainerState) GetStatus() string { if x != nil { return x.Status } return "" } func (x *ContainerState) GetScheduledAt() int64 { if x != nil { return x.ScheduledAt } return 0 } func (x *ContainerState) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *ContainerState) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *ContainerState) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *ContainerState) GetCpu() int64 { if x != nil { return x.Cpu } return 0 } func (x *ContainerState) GetMemory() int64 { if x != nil { return x.Memory } return 0 } func (x *ContainerState) GetStartedAt() int64 { if x != nil { return x.StartedAt } return 0 } func (x *ContainerState) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *ContainerState) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *ContainerState) GetEvictable() bool { if x != nil { return x.Evictable } return false } func (x *ContainerState) GetEvicting() bool { if x != nil { return x.Evicting } return false } func (x *ContainerState) GetDrainSeconds() uint32 { if x != nil { return x.DrainSeconds } return 0 } func (x *ContainerState) GetEvictOrder() int32 { if x != nil { return x.EvictOrder } return 0 } type DurableDiskMountConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Size string `protobuf:"bytes,2,opt,name=size,proto3" json:"size,omitempty"` Filesystem string `protobuf:"bytes,3,opt,name=filesystem,proto3" json:"filesystem,omitempty"` Driver string `protobuf:"bytes,4,opt,name=driver,proto3" json:"driver,omitempty"` SourceSnapshotId string `protobuf:"bytes,5,opt,name=source_snapshot_id,json=sourceSnapshotId,proto3" json:"source_snapshot_id,omitempty"` } func (x *DurableDiskMountConfig) Reset() { *x = DurableDiskMountConfig{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DurableDiskMountConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*DurableDiskMountConfig) ProtoMessage() {} func (x *DurableDiskMountConfig) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DurableDiskMountConfig.ProtoReflect.Descriptor instead. func (*DurableDiskMountConfig) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{8} } func (x *DurableDiskMountConfig) GetName() string { if x != nil { return x.Name } return "" } func (x *DurableDiskMountConfig) GetSize() string { if x != nil { return x.Size } return "" } func (x *DurableDiskMountConfig) GetFilesystem() string { if x != nil { return x.Filesystem } return "" } func (x *DurableDiskMountConfig) GetDriver() string { if x != nil { return x.Driver } return "" } func (x *DurableDiskMountConfig) GetSourceSnapshotId() string { if x != nil { return x.SourceSnapshotId } return "" } type FileInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` IsDir bool `protobuf:"varint,2,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` Mode int32 `protobuf:"varint,4,opt,name=mode,proto3" json:"mode,omitempty"` ModTime int64 `protobuf:"varint,5,opt,name=mod_time,json=modTime,proto3" json:"mod_time,omitempty"` Owner string `protobuf:"bytes,6,opt,name=owner,proto3" json:"owner,omitempty"` Group string `protobuf:"bytes,7,opt,name=group,proto3" json:"group,omitempty"` Path string `protobuf:"bytes,8,opt,name=path,proto3" json:"path,omitempty"` Permissions uint32 `protobuf:"varint,9,opt,name=permissions,proto3" json:"permissions,omitempty"` } func (x *FileInfo) Reset() { *x = FileInfo{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileInfo) ProtoMessage() {} func (x *FileInfo) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FileInfo.ProtoReflect.Descriptor instead. func (*FileInfo) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{9} } func (x *FileInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *FileInfo) GetIsDir() bool { if x != nil { return x.IsDir } return false } func (x *FileInfo) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *FileInfo) GetMode() int32 { if x != nil { return x.Mode } return 0 } func (x *FileInfo) GetModTime() int64 { if x != nil { return x.ModTime } return 0 } func (x *FileInfo) GetOwner() string { if x != nil { return x.Owner } return "" } func (x *FileInfo) GetGroup() string { if x != nil { return x.Group } return "" } func (x *FileInfo) GetPath() string { if x != nil { return x.Path } return "" } func (x *FileInfo) GetPermissions() uint32 { if x != nil { return x.Permissions } return 0 } type FileSearchMatch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Range *FileSearchRange `protobuf:"bytes,1,opt,name=range,proto3" json:"range,omitempty"` Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"` } func (x *FileSearchMatch) Reset() { *x = FileSearchMatch{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileSearchMatch) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileSearchMatch) ProtoMessage() {} func (x *FileSearchMatch) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FileSearchMatch.ProtoReflect.Descriptor instead. func (*FileSearchMatch) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{10} } func (x *FileSearchMatch) GetRange() *FileSearchRange { if x != nil { return x.Range } return nil } func (x *FileSearchMatch) GetContent() string { if x != nil { return x.Content } return "" } type FileSearchPosition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Line int32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` Column int32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` } func (x *FileSearchPosition) Reset() { *x = FileSearchPosition{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileSearchPosition) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileSearchPosition) ProtoMessage() {} func (x *FileSearchPosition) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FileSearchPosition.ProtoReflect.Descriptor instead. func (*FileSearchPosition) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{11} } func (x *FileSearchPosition) GetLine() int32 { if x != nil { return x.Line } return 0 } func (x *FileSearchPosition) GetColumn() int32 { if x != nil { return x.Column } return 0 } type FileSearchRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Start *FileSearchPosition `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` End *FileSearchPosition `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` } func (x *FileSearchRange) Reset() { *x = FileSearchRange{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileSearchRange) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileSearchRange) ProtoMessage() {} func (x *FileSearchRange) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FileSearchRange.ProtoReflect.Descriptor instead. func (*FileSearchRange) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{12} } func (x *FileSearchRange) GetStart() *FileSearchPosition { if x != nil { return x.Start } return nil } func (x *FileSearchRange) GetEnd() *FileSearchPosition { if x != nil { return x.End } return nil } type FileSearchResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` Matches []*FileSearchMatch `protobuf:"bytes,2,rep,name=matches,proto3" json:"matches,omitempty"` } func (x *FileSearchResult) Reset() { *x = FileSearchResult{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileSearchResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileSearchResult) ProtoMessage() {} func (x *FileSearchResult) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FileSearchResult.ProtoReflect.Descriptor instead. func (*FileSearchResult) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{13} } func (x *FileSearchResult) GetPath() string { if x != nil { return x.Path } return "" } func (x *FileSearchResult) GetMatches() []*FileSearchMatch { if x != nil { return x.Matches } return nil } type GitSource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RepoUrl string `protobuf:"bytes,1,opt,name=repo_url,json=repoUrl,proto3" json:"repo_url,omitempty"` Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"` Commit string `protobuf:"bytes,3,opt,name=commit,proto3" json:"commit,omitempty"` Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` WorkingDir string `protobuf:"bytes,5,opt,name=working_dir,json=workingDir,proto3" json:"working_dir,omitempty"` DockerfilePath string `protobuf:"bytes,6,opt,name=dockerfile_path,json=dockerfilePath,proto3" json:"dockerfile_path,omitempty"` StartCommand string `protobuf:"bytes,7,opt,name=start_command,json=startCommand,proto3" json:"start_command,omitempty"` BuildCommand string `protobuf:"bytes,8,opt,name=build_command,json=buildCommand,proto3" json:"build_command,omitempty"` Dockerfile string `protobuf:"bytes,9,opt,name=dockerfile,proto3" json:"dockerfile,omitempty"` } func (x *GitSource) Reset() { *x = GitSource{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GitSource) String() string { return protoimpl.X.MessageStringOf(x) } func (*GitSource) ProtoMessage() {} func (x *GitSource) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GitSource.ProtoReflect.Descriptor instead. func (*GitSource) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{14} } func (x *GitSource) GetRepoUrl() string { if x != nil { return x.RepoUrl } return "" } func (x *GitSource) GetRef() string { if x != nil { return x.Ref } return "" } func (x *GitSource) GetCommit() string { if x != nil { return x.Commit } return "" } func (x *GitSource) GetToken() string { if x != nil { return x.Token } return "" } func (x *GitSource) GetWorkingDir() string { if x != nil { return x.WorkingDir } return "" } func (x *GitSource) GetDockerfilePath() string { if x != nil { return x.DockerfilePath } return "" } func (x *GitSource) GetStartCommand() string { if x != nil { return x.StartCommand } return "" } func (x *GitSource) GetBuildCommand() string { if x != nil { return x.BuildCommand } return "" } func (x *GitSource) GetDockerfile() string { if x != nil { return x.Dockerfile } return "" } type Mount struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocalPath string `protobuf:"bytes,1,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"` MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` LinkPath string `protobuf:"bytes,3,opt,name=link_path,json=linkPath,proto3" json:"link_path,omitempty"` ReadOnly bool `protobuf:"varint,4,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` MountType string `protobuf:"bytes,5,opt,name=mount_type,json=mountType,proto3" json:"mount_type,omitempty"` MountPointConfig *MountPointConfig `protobuf:"bytes,6,opt,name=mount_point_config,json=mountPointConfig,proto3" json:"mount_point_config,omitempty"` DurableDisk *DurableDiskMountConfig `protobuf:"bytes,7,opt,name=durable_disk,json=durableDisk,proto3" json:"durable_disk,omitempty"` } func (x *Mount) Reset() { *x = Mount{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Mount) String() string { return protoimpl.X.MessageStringOf(x) } func (*Mount) ProtoMessage() {} func (x *Mount) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Mount.ProtoReflect.Descriptor instead. func (*Mount) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{15} } func (x *Mount) GetLocalPath() string { if x != nil { return x.LocalPath } return "" } func (x *Mount) GetMountPath() string { if x != nil { return x.MountPath } return "" } func (x *Mount) GetLinkPath() string { if x != nil { return x.LinkPath } return "" } func (x *Mount) GetReadOnly() bool { if x != nil { return x.ReadOnly } return false } func (x *Mount) GetMountType() string { if x != nil { return x.MountType } return "" } func (x *Mount) GetMountPointConfig() *MountPointConfig { if x != nil { return x.MountPointConfig } return nil } func (x *Mount) GetDurableDisk() *DurableDiskMountConfig { if x != nil { return x.DurableDisk } return nil } type MountPointConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BucketName string `protobuf:"bytes,1,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` AccessKey string `protobuf:"bytes,2,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` SecretKey string `protobuf:"bytes,3,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` EndpointUrl string `protobuf:"bytes,4,opt,name=endpoint_url,json=endpointUrl,proto3" json:"endpoint_url,omitempty"` Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` ReadOnly bool `protobuf:"varint,6,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` ForcePathStyle bool `protobuf:"varint,7,opt,name=force_path_style,json=forcePathStyle,proto3" json:"force_path_style,omitempty"` } func (x *MountPointConfig) Reset() { *x = MountPointConfig{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MountPointConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*MountPointConfig) ProtoMessage() {} func (x *MountPointConfig) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MountPointConfig.ProtoReflect.Descriptor instead. func (*MountPointConfig) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{16} } func (x *MountPointConfig) GetBucketName() string { if x != nil { return x.BucketName } return "" } func (x *MountPointConfig) GetAccessKey() string { if x != nil { return x.AccessKey } return "" } func (x *MountPointConfig) GetSecretKey() string { if x != nil { return x.SecretKey } return "" } func (x *MountPointConfig) GetEndpointUrl() string { if x != nil { return x.EndpointUrl } return "" } func (x *MountPointConfig) GetRegion() string { if x != nil { return x.Region } return "" } func (x *MountPointConfig) GetReadOnly() bool { if x != nil { return x.ReadOnly } return false } func (x *MountPointConfig) GetForcePathStyle() bool { if x != nil { return x.ForcePathStyle } return false } type NullTime struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"` Valid bool `protobuf:"varint,2,opt,name=valid,proto3" json:"valid,omitempty"` } func (x *NullTime) Reset() { *x = NullTime{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *NullTime) String() string { return protoimpl.X.MessageStringOf(x) } func (*NullTime) ProtoMessage() {} func (x *NullTime) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NullTime.ProtoReflect.Descriptor instead. func (*NullTime) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{17} } func (x *NullTime) GetTime() *timestamppb.Timestamp { if x != nil { return x.Time } return nil } func (x *NullTime) GetValid() bool { if x != nil { return x.Valid } return false } type Object struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` WorkspaceId uint32 `protobuf:"varint,5,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` } func (x *Object) Reset() { *x = Object{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Object) String() string { return protoimpl.X.MessageStringOf(x) } func (*Object) ProtoMessage() {} func (x *Object) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Object.ProtoReflect.Descriptor instead. func (*Object) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{18} } func (x *Object) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *Object) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *Object) GetHash() string { if x != nil { return x.Hash } return "" } func (x *Object) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *Object) GetWorkspaceId() uint32 { if x != nil { return x.WorkspaceId } return 0 } func (x *Object) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } type ProcessInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Running bool `protobuf:"varint,1,opt,name=running,proto3" json:"running,omitempty"` Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"` Cmd string `protobuf:"bytes,3,opt,name=cmd,proto3" json:"cmd,omitempty"` Cwd string `protobuf:"bytes,4,opt,name=cwd,proto3" json:"cwd,omitempty"` Env []string `protobuf:"bytes,5,rep,name=env,proto3" json:"env,omitempty"` ExitCode int32 `protobuf:"varint,6,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` } func (x *ProcessInfo) Reset() { *x = ProcessInfo{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ProcessInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ProcessInfo) ProtoMessage() {} func (x *ProcessInfo) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ProcessInfo.ProtoReflect.Descriptor instead. func (*ProcessInfo) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{19} } func (x *ProcessInfo) GetRunning() bool { if x != nil { return x.Running } return false } func (x *ProcessInfo) GetPid() int32 { if x != nil { return x.Pid } return 0 } func (x *ProcessInfo) GetCmd() string { if x != nil { return x.Cmd } return "" } func (x *ProcessInfo) GetCwd() string { if x != nil { return x.Cwd } return "" } func (x *ProcessInfo) GetEnv() []string { if x != nil { return x.Env } return nil } func (x *ProcessInfo) GetExitCode() int32 { if x != nil { return x.ExitCode } return 0 } type SecretBinding struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EnvName string `protobuf:"bytes,1,opt,name=env_name,json=envName,proto3" json:"env_name,omitempty"` Placeholder string `protobuf:"bytes,2,opt,name=placeholder,proto3" json:"placeholder,omitempty"` Hosts []string `protobuf:"bytes,3,rep,name=hosts,proto3" json:"hosts,omitempty"` Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` SecretName string `protobuf:"bytes,5,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"` } func (x *SecretBinding) Reset() { *x = SecretBinding{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SecretBinding) String() string { return protoimpl.X.MessageStringOf(x) } func (*SecretBinding) ProtoMessage() {} func (x *SecretBinding) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SecretBinding.ProtoReflect.Descriptor instead. func (*SecretBinding) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{20} } func (x *SecretBinding) GetEnvName() string { if x != nil { return x.EnvName } return "" } func (x *SecretBinding) GetPlaceholder() string { if x != nil { return x.Placeholder } return "" } func (x *SecretBinding) GetHosts() []string { if x != nil { return x.Hosts } return nil } func (x *SecretBinding) GetValue() string { if x != nil { return x.Value } return "" } func (x *SecretBinding) GetSecretName() string { if x != nil { return x.SecretName } return "" } type Stub struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` Config string `protobuf:"bytes,5,opt,name=config,proto3" json:"config,omitempty"` ConfigVersion uint32 `protobuf:"varint,6,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"` ObjectId uint32 `protobuf:"varint,7,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` WorkspaceId uint32 `protobuf:"varint,8,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Public bool `protobuf:"varint,11,opt,name=public,proto3" json:"public,omitempty"` AppId uint32 `protobuf:"varint,12,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` } func (x *Stub) Reset() { *x = Stub{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Stub) String() string { return protoimpl.X.MessageStringOf(x) } func (*Stub) ProtoMessage() {} func (x *Stub) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Stub.ProtoReflect.Descriptor instead. func (*Stub) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{21} } func (x *Stub) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *Stub) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *Stub) GetName() string { if x != nil { return x.Name } return "" } func (x *Stub) GetType() string { if x != nil { return x.Type } return "" } func (x *Stub) GetConfig() string { if x != nil { return x.Config } return "" } func (x *Stub) GetConfigVersion() uint32 { if x != nil { return x.ConfigVersion } return 0 } func (x *Stub) GetObjectId() uint32 { if x != nil { return x.ObjectId } return 0 } func (x *Stub) GetWorkspaceId() uint32 { if x != nil { return x.WorkspaceId } return 0 } func (x *Stub) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Stub) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Stub) GetPublic() bool { if x != nil { return x.Public } return false } func (x *Stub) GetAppId() uint32 { if x != nil { return x.AppId } return 0 } type StubWithRelated struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Stub *Stub `protobuf:"bytes,1,opt,name=stub,proto3" json:"stub,omitempty"` Workspace *Workspace `protobuf:"bytes,2,opt,name=workspace,proto3" json:"workspace,omitempty"` Object *Object `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` App *App `protobuf:"bytes,4,opt,name=app,proto3" json:"app,omitempty"` } func (x *StubWithRelated) Reset() { *x = StubWithRelated{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StubWithRelated) String() string { return protoimpl.X.MessageStringOf(x) } func (*StubWithRelated) ProtoMessage() {} func (x *StubWithRelated) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use StubWithRelated.ProtoReflect.Descriptor instead. func (*StubWithRelated) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{22} } func (x *StubWithRelated) GetStub() *Stub { if x != nil { return x.Stub } return nil } func (x *StubWithRelated) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } func (x *StubWithRelated) GetObject() *Object { if x != nil { return x.Object } return nil } func (x *StubWithRelated) GetApp() *App { if x != nil { return x.App } return nil } type Worker struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` TotalCpu int64 `protobuf:"varint,3,opt,name=total_cpu,json=totalCpu,proto3" json:"total_cpu,omitempty"` TotalMemory int64 `protobuf:"varint,4,opt,name=total_memory,json=totalMemory,proto3" json:"total_memory,omitempty"` TotalGpuCount uint32 `protobuf:"varint,5,opt,name=total_gpu_count,json=totalGpuCount,proto3" json:"total_gpu_count,omitempty"` FreeCpu int64 `protobuf:"varint,6,opt,name=free_cpu,json=freeCpu,proto3" json:"free_cpu,omitempty"` FreeMemory int64 `protobuf:"varint,7,opt,name=free_memory,json=freeMemory,proto3" json:"free_memory,omitempty"` FreeGpuCount uint32 `protobuf:"varint,8,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` Gpu string `protobuf:"bytes,9,opt,name=gpu,proto3" json:"gpu,omitempty"` PoolName string `protobuf:"bytes,10,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,11,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` ResourceVersion int64 `protobuf:"varint,12,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` RequiresPoolSelector bool `protobuf:"varint,13,opt,name=requires_pool_selector,json=requiresPoolSelector,proto3" json:"requires_pool_selector,omitempty"` Priority int32 `protobuf:"varint,14,opt,name=priority,proto3" json:"priority,omitempty"` Preemptable bool `protobuf:"varint,15,opt,name=preemptable,proto3" json:"preemptable,omitempty"` BuildVersion string `protobuf:"bytes,16,opt,name=build_version,json=buildVersion,proto3" json:"build_version,omitempty"` ActiveContainers []*Container `protobuf:"bytes,17,rep,name=active_containers,json=activeContainers,proto3" json:"active_containers,omitempty"` Runtime string `protobuf:"bytes,18,opt,name=runtime,proto3" json:"runtime,omitempty"` PoolSelector string `protobuf:"bytes,19,opt,name=pool_selector,json=poolSelector,proto3" json:"pool_selector,omitempty"` CordonRequested bool `protobuf:"varint,20,opt,name=cordon_requested,json=cordonRequested,proto3" json:"cordon_requested,omitempty"` RolloutGeneration string `protobuf:"bytes,21,opt,name=rollout_generation,json=rolloutGeneration,proto3" json:"rollout_generation,omitempty"` RolloutBuildVersion string `protobuf:"bytes,22,opt,name=rollout_build_version,json=rolloutBuildVersion,proto3" json:"rollout_build_version,omitempty"` WorkerImageOverride string `protobuf:"bytes,23,opt,name=worker_image_override,json=workerImageOverride,proto3" json:"worker_image_override,omitempty"` EvictableCpu int64 `protobuf:"varint,24,opt,name=evictable_cpu,json=evictableCpu,proto3" json:"evictable_cpu,omitempty"` EvictableMemory int64 `protobuf:"varint,25,opt,name=evictable_memory,json=evictableMemory,proto3" json:"evictable_memory,omitempty"` EvictableGpuCount uint32 `protobuf:"varint,26,opt,name=evictable_gpu_count,json=evictableGpuCount,proto3" json:"evictable_gpu_count,omitempty"` } func (x *Worker) Reset() { *x = Worker{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Worker) String() string { return protoimpl.X.MessageStringOf(x) } func (*Worker) ProtoMessage() {} func (x *Worker) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Worker.ProtoReflect.Descriptor instead. func (*Worker) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{23} } func (x *Worker) GetId() string { if x != nil { return x.Id } return "" } func (x *Worker) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Worker) GetTotalCpu() int64 { if x != nil { return x.TotalCpu } return 0 } func (x *Worker) GetTotalMemory() int64 { if x != nil { return x.TotalMemory } return 0 } func (x *Worker) GetTotalGpuCount() uint32 { if x != nil { return x.TotalGpuCount } return 0 } func (x *Worker) GetFreeCpu() int64 { if x != nil { return x.FreeCpu } return 0 } func (x *Worker) GetFreeMemory() int64 { if x != nil { return x.FreeMemory } return 0 } func (x *Worker) GetFreeGpuCount() uint32 { if x != nil { return x.FreeGpuCount } return 0 } func (x *Worker) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *Worker) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *Worker) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *Worker) GetResourceVersion() int64 { if x != nil { return x.ResourceVersion } return 0 } func (x *Worker) GetRequiresPoolSelector() bool { if x != nil { return x.RequiresPoolSelector } return false } func (x *Worker) GetPriority() int32 { if x != nil { return x.Priority } return 0 } func (x *Worker) GetPreemptable() bool { if x != nil { return x.Preemptable } return false } func (x *Worker) GetBuildVersion() string { if x != nil { return x.BuildVersion } return "" } func (x *Worker) GetActiveContainers() []*Container { if x != nil { return x.ActiveContainers } return nil } func (x *Worker) GetRuntime() string { if x != nil { return x.Runtime } return "" } func (x *Worker) GetPoolSelector() string { if x != nil { return x.PoolSelector } return "" } func (x *Worker) GetCordonRequested() bool { if x != nil { return x.CordonRequested } return false } func (x *Worker) GetRolloutGeneration() string { if x != nil { return x.RolloutGeneration } return "" } func (x *Worker) GetRolloutBuildVersion() string { if x != nil { return x.RolloutBuildVersion } return "" } func (x *Worker) GetWorkerImageOverride() string { if x != nil { return x.WorkerImageOverride } return "" } func (x *Worker) GetEvictableCpu() int64 { if x != nil { return x.EvictableCpu } return 0 } func (x *Worker) GetEvictableMemory() int64 { if x != nil { return x.EvictableMemory } return 0 } func (x *Worker) GetEvictableGpuCount() uint32 { if x != nil { return x.EvictableGpuCount } return 0 } type WorkerPoolState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` SchedulingLatency int64 `protobuf:"varint,2,opt,name=scheduling_latency,json=schedulingLatency,proto3" json:"scheduling_latency,omitempty"` FreeGpu uint32 `protobuf:"varint,3,opt,name=free_gpu,json=freeGpu,proto3" json:"free_gpu,omitempty"` FreeCpu int64 `protobuf:"varint,4,opt,name=free_cpu,json=freeCpu,proto3" json:"free_cpu,omitempty"` FreeMemory int64 `protobuf:"varint,5,opt,name=free_memory,json=freeMemory,proto3" json:"free_memory,omitempty"` PendingWorkers int64 `protobuf:"varint,6,opt,name=pending_workers,json=pendingWorkers,proto3" json:"pending_workers,omitempty"` AvailableWorkers int64 `protobuf:"varint,7,opt,name=available_workers,json=availableWorkers,proto3" json:"available_workers,omitempty"` PendingContainers int64 `protobuf:"varint,8,opt,name=pending_containers,json=pendingContainers,proto3" json:"pending_containers,omitempty"` RunningContainers int64 `protobuf:"varint,9,opt,name=running_containers,json=runningContainers,proto3" json:"running_containers,omitempty"` RegisteredMachines int64 `protobuf:"varint,10,opt,name=registered_machines,json=registeredMachines,proto3" json:"registered_machines,omitempty"` PendingMachines int64 `protobuf:"varint,11,opt,name=pending_machines,json=pendingMachines,proto3" json:"pending_machines,omitempty"` ReadyMachines int64 `protobuf:"varint,12,opt,name=ready_machines,json=readyMachines,proto3" json:"ready_machines,omitempty"` } func (x *WorkerPoolState) Reset() { *x = WorkerPoolState{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkerPoolState) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkerPoolState) ProtoMessage() {} func (x *WorkerPoolState) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkerPoolState.ProtoReflect.Descriptor instead. func (*WorkerPoolState) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{24} } func (x *WorkerPoolState) GetStatus() string { if x != nil { return x.Status } return "" } func (x *WorkerPoolState) GetSchedulingLatency() int64 { if x != nil { return x.SchedulingLatency } return 0 } func (x *WorkerPoolState) GetFreeGpu() uint32 { if x != nil { return x.FreeGpu } return 0 } func (x *WorkerPoolState) GetFreeCpu() int64 { if x != nil { return x.FreeCpu } return 0 } func (x *WorkerPoolState) GetFreeMemory() int64 { if x != nil { return x.FreeMemory } return 0 } func (x *WorkerPoolState) GetPendingWorkers() int64 { if x != nil { return x.PendingWorkers } return 0 } func (x *WorkerPoolState) GetAvailableWorkers() int64 { if x != nil { return x.AvailableWorkers } return 0 } func (x *WorkerPoolState) GetPendingContainers() int64 { if x != nil { return x.PendingContainers } return 0 } func (x *WorkerPoolState) GetRunningContainers() int64 { if x != nil { return x.RunningContainers } return 0 } func (x *WorkerPoolState) GetRegisteredMachines() int64 { if x != nil { return x.RegisteredMachines } return 0 } func (x *WorkerPoolState) GetPendingMachines() int64 { if x != nil { return x.PendingMachines } return 0 } func (x *WorkerPoolState) GetReadyMachines() int64 { if x != nil { return x.ReadyMachines } return 0 } type Workspace struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` SigningKey string `protobuf:"bytes,6,opt,name=signing_key,json=signingKey,proto3" json:"signing_key,omitempty"` VolumeCacheEnabled bool `protobuf:"varint,7,opt,name=volume_cache_enabled,json=volumeCacheEnabled,proto3" json:"volume_cache_enabled,omitempty"` MultiGpuEnabled bool `protobuf:"varint,8,opt,name=multi_gpu_enabled,json=multiGpuEnabled,proto3" json:"multi_gpu_enabled,omitempty"` ConcurrencyLimitId uint32 `protobuf:"varint,9,opt,name=concurrency_limit_id,json=concurrencyLimitId,proto3" json:"concurrency_limit_id,omitempty"` ConcurrencyLimit *ConcurrencyLimit `protobuf:"bytes,10,opt,name=concurrency_limit,json=concurrencyLimit,proto3" json:"concurrency_limit,omitempty"` StorageId uint32 `protobuf:"varint,11,opt,name=storage_id,json=storageId,proto3" json:"storage_id,omitempty"` Storage *WorkspaceStorage `protobuf:"bytes,12,opt,name=storage,proto3" json:"storage,omitempty"` } func (x *Workspace) Reset() { *x = Workspace{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Workspace) String() string { return protoimpl.X.MessageStringOf(x) } func (*Workspace) ProtoMessage() {} func (x *Workspace) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Workspace.ProtoReflect.Descriptor instead. func (*Workspace) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{25} } func (x *Workspace) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *Workspace) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *Workspace) GetName() string { if x != nil { return x.Name } return "" } func (x *Workspace) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Workspace) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Workspace) GetSigningKey() string { if x != nil { return x.SigningKey } return "" } func (x *Workspace) GetVolumeCacheEnabled() bool { if x != nil { return x.VolumeCacheEnabled } return false } func (x *Workspace) GetMultiGpuEnabled() bool { if x != nil { return x.MultiGpuEnabled } return false } func (x *Workspace) GetConcurrencyLimitId() uint32 { if x != nil { return x.ConcurrencyLimitId } return 0 } func (x *Workspace) GetConcurrencyLimit() *ConcurrencyLimit { if x != nil { return x.ConcurrencyLimit } return nil } func (x *Workspace) GetStorageId() uint32 { if x != nil { return x.StorageId } return 0 } func (x *Workspace) GetStorage() *WorkspaceStorage { if x != nil { return x.Storage } return nil } type WorkspaceStorage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` BucketName string `protobuf:"bytes,3,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` AccessKey string `protobuf:"bytes,4,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"` SecretKey string `protobuf:"bytes,5,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` EndpointUrl string `protobuf:"bytes,6,opt,name=endpoint_url,json=endpointUrl,proto3" json:"endpoint_url,omitempty"` Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *WorkspaceStorage) Reset() { *x = WorkspaceStorage{} if protoimpl.UnsafeEnabled { mi := &file_types_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceStorage) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceStorage) ProtoMessage() {} func (x *WorkspaceStorage) ProtoReflect() protoreflect.Message { mi := &file_types_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkspaceStorage.ProtoReflect.Descriptor instead. func (*WorkspaceStorage) Descriptor() ([]byte, []int) { return file_types_proto_rawDescGZIP(), []int{26} } func (x *WorkspaceStorage) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *WorkspaceStorage) GetExternalId() string { if x != nil { return x.ExternalId } return "" } func (x *WorkspaceStorage) GetBucketName() string { if x != nil { return x.BucketName } return "" } func (x *WorkspaceStorage) GetAccessKey() string { if x != nil { return x.AccessKey } return "" } func (x *WorkspaceStorage) GetSecretKey() string { if x != nil { return x.SecretKey } return "" } func (x *WorkspaceStorage) GetEndpointUrl() string { if x != nil { return x.EndpointUrl } return "" } func (x *WorkspaceStorage) GetRegion() string { if x != nil { return x.Region } return "" } func (x *WorkspaceStorage) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *WorkspaceStorage) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } var File_types_proto protoreflect.FileDescriptor var file_types_proto_rawDesc = []byte{ 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb5, 0x02, 0x0a, 0x03, 0x41, 0x70, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xff, 0x01, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x74, 0x78, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x74, 0x78, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x67, 0x69, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x8f, 0x05, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 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, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x68, 0x74, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xa9, 0x02, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 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, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 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, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x8b, 0x0d, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x70, 0x75, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x70, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x73, 0x74, 0x75, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x75, 0x62, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x04, 0x73, 0x74, 0x75, 0x62, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x4d, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x6f, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6f, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x76, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x65, 0x76, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x76, 0x69, 0x63, 0x74, 0x5f, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x65, 0x76, 0x69, 0x63, 0x74, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x69, 0x63, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x76, 0x69, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x5f, 0x76, 0x6d, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x73, 0x65, 0x56, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x2f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xde, 0x03, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x69, 0x63, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x76, 0x69, 0x63, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xa6, 0x01, 0x0a, 0x16, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x40, 0x0a, 0x12, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x6f, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x58, 0x0a, 0x10, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0x9a, 0x02, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 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, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x22, 0xa7, 0x02, 0x0a, 0x05, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x12, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x0c, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x22, 0xf3, 0x01, 0x0a, 0x10, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x22, 0x50, 0x0a, 0x08, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 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, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x6d, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x77, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x77, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x76, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x76, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x83, 0x03, 0x0a, 0x04, 0x53, 0x74, 0x75, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x75, 0x62, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x74, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x75, 0x62, 0x52, 0x04, 0x73, 0x74, 0x75, 0x62, 0x12, 0x2e, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x52, 0x03, 0x61, 0x70, 0x70, 0x22, 0xcc, 0x07, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x72, 0x65, 0x65, 0x43, 0x70, 0x75, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x70, 0x75, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x65, 0x76, 0x69, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe6, 0x03, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x66, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x72, 0x65, 0x65, 0x43, 0x70, 0x75, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x8f, 0x04, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 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, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x47, 0x70, 0x75, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0xd3, 0x02, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 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, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x23, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x65, 0x61, 0x6d, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, 0x65, 0x74, 0x61, 0x39, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_types_proto_rawDescOnce sync.Once file_types_proto_rawDescData = file_types_proto_rawDesc ) func file_types_proto_rawDescGZIP() []byte { file_types_proto_rawDescOnce.Do(func() { file_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_types_proto_rawDescData) }) return file_types_proto_rawDescData } var file_types_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_types_proto_goTypes = []interface{}{ (*App)(nil), // 0: types.App (*BuildOptions)(nil), // 1: types.BuildOptions (*Checkpoint)(nil), // 2: types.Checkpoint (*CheckpointTrigger)(nil), // 3: types.CheckpointTrigger (*ConcurrencyLimit)(nil), // 4: types.ConcurrencyLimit (*Container)(nil), // 5: types.Container (*ContainerRequest)(nil), // 6: types.ContainerRequest (*ContainerState)(nil), // 7: types.ContainerState (*DurableDiskMountConfig)(nil), // 8: types.DurableDiskMountConfig (*FileInfo)(nil), // 9: types.FileInfo (*FileSearchMatch)(nil), // 10: types.FileSearchMatch (*FileSearchPosition)(nil), // 11: types.FileSearchPosition (*FileSearchRange)(nil), // 12: types.FileSearchRange (*FileSearchResult)(nil), // 13: types.FileSearchResult (*GitSource)(nil), // 14: types.GitSource (*Mount)(nil), // 15: types.Mount (*MountPointConfig)(nil), // 16: types.MountPointConfig (*NullTime)(nil), // 17: types.NullTime (*Object)(nil), // 18: types.Object (*ProcessInfo)(nil), // 19: types.ProcessInfo (*SecretBinding)(nil), // 20: types.SecretBinding (*Stub)(nil), // 21: types.Stub (*StubWithRelated)(nil), // 22: types.StubWithRelated (*Worker)(nil), // 23: types.Worker (*WorkerPoolState)(nil), // 24: types.WorkerPoolState (*Workspace)(nil), // 25: types.Workspace (*WorkspaceStorage)(nil), // 26: types.WorkspaceStorage (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp } var file_types_proto_depIdxs = []int32{ 27, // 0: types.App.created_at:type_name -> google.protobuf.Timestamp 27, // 1: types.App.updated_at:type_name -> google.protobuf.Timestamp 17, // 2: types.App.deleted_at:type_name -> types.NullTime 14, // 3: types.BuildOptions.git_source:type_name -> types.GitSource 27, // 4: types.Checkpoint.created_at:type_name -> google.protobuf.Timestamp 27, // 5: types.Checkpoint.last_restored_at:type_name -> google.protobuf.Timestamp 17, // 6: types.Checkpoint.deleted_at:type_name -> types.NullTime 27, // 7: types.ConcurrencyLimit.created_at:type_name -> google.protobuf.Timestamp 27, // 8: types.ConcurrencyLimit.updated_at:type_name -> google.protobuf.Timestamp 27, // 9: types.Container.scheduled_at:type_name -> google.protobuf.Timestamp 27, // 10: types.Container.started_at:type_name -> google.protobuf.Timestamp 25, // 11: types.ContainerRequest.workspace:type_name -> types.Workspace 22, // 12: types.ContainerRequest.stub:type_name -> types.StubWithRelated 27, // 13: types.ContainerRequest.timestamp:type_name -> google.protobuf.Timestamp 15, // 14: types.ContainerRequest.mounts:type_name -> types.Mount 1, // 15: types.ContainerRequest.build_options:type_name -> types.BuildOptions 2, // 16: types.ContainerRequest.checkpoint:type_name -> types.Checkpoint 3, // 17: types.ContainerRequest.checkpoint_trigger:type_name -> types.CheckpointTrigger 20, // 18: types.ContainerRequest.secret_bindings:type_name -> types.SecretBinding 12, // 19: types.FileSearchMatch.range:type_name -> types.FileSearchRange 11, // 20: types.FileSearchRange.start:type_name -> types.FileSearchPosition 11, // 21: types.FileSearchRange.end:type_name -> types.FileSearchPosition 10, // 22: types.FileSearchResult.matches:type_name -> types.FileSearchMatch 16, // 23: types.Mount.mount_point_config:type_name -> types.MountPointConfig 8, // 24: types.Mount.durable_disk:type_name -> types.DurableDiskMountConfig 27, // 25: types.NullTime.time:type_name -> google.protobuf.Timestamp 27, // 26: types.Object.created_at:type_name -> google.protobuf.Timestamp 27, // 27: types.Stub.created_at:type_name -> google.protobuf.Timestamp 27, // 28: types.Stub.updated_at:type_name -> google.protobuf.Timestamp 21, // 29: types.StubWithRelated.stub:type_name -> types.Stub 25, // 30: types.StubWithRelated.workspace:type_name -> types.Workspace 18, // 31: types.StubWithRelated.object:type_name -> types.Object 0, // 32: types.StubWithRelated.app:type_name -> types.App 5, // 33: types.Worker.active_containers:type_name -> types.Container 27, // 34: types.Workspace.created_at:type_name -> google.protobuf.Timestamp 27, // 35: types.Workspace.updated_at:type_name -> google.protobuf.Timestamp 4, // 36: types.Workspace.concurrency_limit:type_name -> types.ConcurrencyLimit 26, // 37: types.Workspace.storage:type_name -> types.WorkspaceStorage 27, // 38: types.WorkspaceStorage.created_at:type_name -> google.protobuf.Timestamp 27, // 39: types.WorkspaceStorage.updated_at:type_name -> google.protobuf.Timestamp 40, // [40:40] is the sub-list for method output_type 40, // [40:40] is the sub-list for method input_type 40, // [40:40] is the sub-list for extension type_name 40, // [40:40] is the sub-list for extension extendee 0, // [0:40] is the sub-list for field type_name } func init() { file_types_proto_init() } func file_types_proto_init() { if File_types_proto != nil { return } if !protoimpl.UnsafeEnabled { file_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*App); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BuildOptions); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Checkpoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckpointTrigger); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConcurrencyLimit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Container); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContainerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContainerState); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DurableDiskMountConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileSearchMatch); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileSearchPosition); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileSearchRange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileSearchResult); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GitSource); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Mount); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MountPointConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NullTime); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Object); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProcessInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SecretBinding); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Stub); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StubWithRelated); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Worker); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkerPoolState); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workspace); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_types_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceStorage); 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{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_types_proto_rawDesc, NumEnums: 0, NumMessages: 27, NumExtensions: 0, NumServices: 0, }, GoTypes: file_types_proto_goTypes, DependencyIndexes: file_types_proto_depIdxs, MessageInfos: file_types_proto_msgTypes, }.Build() File_types_proto = out.File file_types_proto_rawDesc = nil file_types_proto_goTypes = nil file_types_proto_depIdxs = nil }