diff --git a/bin/gen_proto.sh b/bin/gen_proto.sh index b14c1f512..e77860575 100755 --- a/bin/gen_proto.sh +++ b/bin/gen_proto.sh @@ -109,6 +109,9 @@ protoc -I ./googleapis -I ./pkg/types -I ./pkg/gateway/ --python_betterproto_bet # Internal cache services protoc -I ./pkg/cache/ --go_out=./proto --go_opt=paths=source_relative --go-grpc_out=./proto --go-grpc_opt=paths=source_relative ./pkg/cache/cache.proto +# Thunder service +protoc -I $PROTOC_INCLUDE_PATH -I ./googleapis -I ./pkg/types -I ./pkg/gateway/services/thunder/ --go_out=./proto --go_opt=paths=source_relative --go-grpc_out=./proto --go-grpc_opt=paths=source_relative ./pkg/gateway/services/thunder/thunder.proto + # Repository services protoc -I $PROTOC_INCLUDE_PATH -I ./googleapis -I ./pkg/types -I ./pkg/gateway/services/repository/ --go_out=./proto --go_opt=paths=source_relative --go-grpc_out=./proto --go-grpc_opt=paths=source_relative ./pkg/gateway/services/repository/container_repo.proto protoc -I $PROTOC_INCLUDE_PATH -I ./googleapis -I ./pkg/types -I ./pkg/gateway/services/repository/ --go_out=./proto --go_opt=paths=source_relative --go-grpc_out=./proto --go-grpc_opt=paths=source_relative ./pkg/gateway/services/repository/worker_repo.proto diff --git a/docs/openapi/gateway.swagger.json b/docs/openapi/gateway.swagger.json index 73dd40aaa..cb1828f57 100644 --- a/docs/openapi/gateway.swagger.json +++ b/docs/openapi/gateway.swagger.json @@ -2593,6 +2593,9 @@ }, "configGroup": { "type": "string" + }, + "gpuVirtualized": { + "type": "boolean" } } }, diff --git a/pkg/abstractions/pod/pod.go b/pkg/abstractions/pod/pod.go index 85e0a6973..d568d9620 100644 --- a/pkg/abstractions/pod/pod.go +++ b/pkg/abstractions/pod/pod.go @@ -471,6 +471,14 @@ func (s *GenericPodService) run(ctx context.Context, authInfo *auth.AuthInfo, st gpuCount = 1 } + log.Info(). + Str("stub_id", stub.ExternalId). + Str("container_id", containerId). + Str("gpu", stubConfig.Runtime.Gpu.String()). + Strs("gpu_request", gpuRequest). + Uint32("gpu_count", uint32(gpuCount)). + Msg("pod service built sandbox run request from stub config") + checkpointEnabled := stubConfig.CheckpointEnabled if gpuCount > 1 { checkpointEnabled = false diff --git a/pkg/agent/agent_test.go b/pkg/agent/agent_test.go index a3b25f437..bfe7219cf 100644 --- a/pkg/agent/agent_test.go +++ b/pkg/agent/agent_test.go @@ -324,6 +324,7 @@ func TestDockerRunArgsUsesConfigurableRouteTargetHost(t *testing.T) { NetworkPrefix: "10.0.0.0/24", NetworkSlotPoolSize: 64, ContainerStartConcurrency: 12, + PoolConfig: &pb.AgentPoolRuntimeConfig{GpuVirtualized: true}, }, agentWorkerDirs("/tmp/agent-state", "", "worker-one"), workerContainerResourceLimits{}) if !containsArg(args, "-e", types.WorkerRouteTargetEnv+"=host.docker.internal") { @@ -345,6 +346,7 @@ func TestDockerRunArgsUsesConfigurableRouteTargetHost(t *testing.T) { types.NvidiaVisibleDevicesEnv + "=0,1", types.WorkerStartConcurrencyEnv + "=12", types.WorkerNetworkSlotsEnv + "=64", + types.WorkerGPUVirtualizedEnv + "=true", } { if !containsArg(args, "-e", want) { t.Fatalf("expected %s env in docker args: %#v", want, args) @@ -673,6 +675,7 @@ func TestAgentWorkerConfigUsesManagedPoolRuntimeAndCacheSettings(t *testing.T) { Mode: string(types.PoolModeExternal), PoolConfig: &pb.AgentPoolRuntimeConfig{ NetworkPreallocation: false, + GpuVirtualized: true, CriuEnabled: false, TmpSizeLimit: "50Gi", StorageMode: types.StorageModeAlluxio, @@ -692,7 +695,7 @@ func TestAgentWorkerConfigUsesManagedPoolRuntimeAndCacheSettings(t *testing.T) { config := newAgentWorkerConfig(bootstrapConfig{WorkspaceID: "admin-workspace"}, slot).sanitizedForAgent() pool := config.Worker.Pools[slot.PoolName] - if pool.NetworkPreallocation || pool.CRIUEnabled || pool.TmpSizeLimit != "50Gi" || pool.StorageMode != types.StorageModeAlluxio { + if pool.NetworkPreallocation || pool.CRIUEnabled || !pool.GpuVirtualized || pool.TmpSizeLimit != "50Gi" || pool.StorageMode != types.StorageModeAlluxio { t.Fatalf("managed pool runtime settings were not preserved: %#v", pool) } if !config.Cache.Enabled || !config.Worker.CacheEnabled || diff --git a/pkg/agent/thunder.go b/pkg/agent/thunder.go new file mode 100644 index 000000000..473643795 --- /dev/null +++ b/pkg/agent/thunder.go @@ -0,0 +1,136 @@ +package agent + +import ( + "context" + "fmt" + "io" + "net" + "net/netip" + "os/exec" + "strings" + "time" + + "github.com/beam-cloud/beta9/pkg/common" + pb "github.com/beam-cloud/beta9/proto" + "google.golang.org/grpc" +) + +const thunderNodeInstallTimeout = 2 * time.Minute + +var runThunderNodeInstallCommand = defaultRunThunderNodeInstallCommand + +type nodeEnrollmentGatewayClient interface { + CreateNodeEnrollment(context.Context, *pb.CreateNodeEnrollmentRequest, ...grpc.CallOption) (*pb.CreateNodeEnrollmentResponse, error) + DeleteNodeEnrollment(context.Context, *pb.DeleteNodeEnrollmentRequest, ...grpc.CallOption) (*pb.DeleteNodeEnrollmentResponse, error) +} + +func setupThunderNode(ctx context.Context, client nodeEnrollmentGatewayClient, agentToken string, tailscaleIPs []netip.Addr, stdout, stderr io.Writer) error { + if client == nil { + return fmt.Errorf("gateway client is required for Thunder node enrollment") + } + + reachableIP, err := thunderReachableNodeIP(tailscaleIPs) + if err != nil { + return err + } + + res, err := client.CreateNodeEnrollment(ctx, &pb.CreateNodeEnrollmentRequest{AgentToken: agentToken}) + if err != nil { + return fmt.Errorf("create Thunder node enrollment: %w", err) + } + if res == nil || !res.Ok { + return fmt.Errorf("create Thunder node enrollment: %s", firstNonEmpty(res.GetErrorMsg(), "gateway rejected request")) + } + + enrollmentToken := strings.TrimSpace(res.EnrollmentToken) + if enrollmentToken == "" { + verbosef(stdout, "Thunder node enrollment already exists\n") + return nil + } + + cmd := thunderNodeInstallCommand(reachableIP, enrollmentToken) + installCtx, cancel := context.WithTimeout(ctx, thunderNodeInstallTimeout) + defer cancel() + + statusf(stdout, "Installing Thunder node") + if err := runThunderNodeInstallCommand(installCtx, cmd); err != nil { + deleteThunderNodeEnrollment(context.Background(), client, agentToken, stderr) + return fmt.Errorf("install Thunder node: %w", err) + } + statusf(stdout, "Thunder node ready") + return nil +} + +func deleteThunderNodeEnrollment(ctx context.Context, client nodeEnrollmentGatewayClient, agentToken string, stderr io.Writer) { + if client == nil { + return + } + if stderr == nil { + stderr = io.Discard + } + deleteCtx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + + res, err := client.DeleteNodeEnrollment(deleteCtx, &pb.DeleteNodeEnrollmentRequest{AgentToken: agentToken}) + if err != nil { + fmt.Fprintf(stderr, "failed to delete Thunder node enrollment: %v\n", err) + return + } + if res == nil || !res.Ok { + fmt.Fprintf(stderr, "failed to delete Thunder node enrollment: %s\n", firstNonEmpty(res.GetErrorMsg(), "gateway rejected request")) + } +} + +func thunderReachableNodeIP(ips []netip.Addr) (string, error) { + for _, ip := range ips { + if ip.IsValid() && ip.Is4() { + return ip.String(), nil + } + } + for _, ip := range ips { + if ip.IsValid() { + return ip.String(), nil + } + } + return "", fmt.Errorf("tailscale IP address is required for Thunder node enrollment") +} + +func hostTailscaleIPs() []netip.Addr { + iface, err := net.InterfaceByName("tailscale0") + if err != nil { + return nil + } + addrs, err := iface.Addrs() + if err != nil { + return nil + } + + ips := make([]netip.Addr, 0, len(addrs)) + for _, addr := range addrs { + prefix, err := netip.ParsePrefix(addr.String()) + if err == nil { + ips = append(ips, prefix.Addr()) + continue + } + if ip, err := netip.ParseAddr(addr.String()); err == nil { + ips = append(ips, ip) + } + } + return ips +} + +func thunderNodeInstallCommand(reachableIP, enrollmentToken string) string { + return "curl -fsSL https://get.thundercompute.com/install.sh | sudo THUNDER_INSTALL_MODE=thunderd THUNDERD_IP=" + common.ShellQuote(reachableIP) + " THUNDER_ENROLLMENT_TOKEN=" + common.ShellQuote(enrollmentToken) + " sh" +} + +func defaultRunThunderNodeInstallCommand(ctx context.Context, command string) error { + out, err := exec.CommandContext(ctx, "sh", "-c", command).CombinedOutput() + if err != nil { + output := strings.TrimSpace(string(out)) + if output != "" { + return fmt.Errorf("%w: %s", err, output) + } + return err + } + return nil +} diff --git a/pkg/agent/thunder_test.go b/pkg/agent/thunder_test.go new file mode 100644 index 000000000..c84bda83f --- /dev/null +++ b/pkg/agent/thunder_test.go @@ -0,0 +1,138 @@ +package agent + +import ( + "context" + "errors" + "net/netip" + "strings" + "testing" + + pb "github.com/beam-cloud/beta9/proto" + "google.golang.org/grpc" +) + +func TestSetupThunderNodeInstallsWithTailscaleIP(t *testing.T) { + client := &fakeGatewayNodeEnrollmentClient{createResp: &pb.CreateNodeEnrollmentResponse{Ok: true, EnrollmentToken: "tr_node"}} + var commands []string + restore := stubThunderNodeInstallCommand(func(ctx context.Context, command string) error { + commands = append(commands, command) + return nil + }) + defer restore() + + err := setupThunderNode(context.Background(), client, "agent-token", []netip.Addr{ + netip.MustParseAddr("fd7a:115c:a1e0::1"), + netip.MustParseAddr("100.64.0.10"), + }, nil, nil) + if err != nil { + t.Fatal(err) + } + if len(commands) != 1 { + t.Fatalf("install command count = %d", len(commands)) + } + if !strings.Contains(commands[0], "THUNDER_INSTALL_MODE=thunderd") || !strings.Contains(commands[0], "THUNDERD_IP='100.64.0.10'") || !strings.Contains(commands[0], "THUNDER_ENROLLMENT_TOKEN='tr_node'") { + t.Fatalf("install command = %q", commands[0]) + } + if client.createAgentToken != "agent-token" { + t.Fatalf("create agent token = %q", client.createAgentToken) + } + if client.deleteCalls != 0 { + t.Fatalf("delete calls = %d", client.deleteCalls) + } +} + +func TestSetupThunderNodeSkipsInstallerWhenEnrollmentFails(t *testing.T) { + client := &fakeGatewayNodeEnrollmentClient{createErr: errors.New("gateway unavailable")} + restore := stubThunderNodeInstallCommand(func(ctx context.Context, command string) error { + t.Fatalf("installer should not run when enrollment fails: %s", command) + return nil + }) + defer restore() + + err := setupThunderNode(context.Background(), client, "agent-token", []netip.Addr{netip.MustParseAddr("100.64.0.10")}, nil, nil) + if err == nil || !strings.Contains(err.Error(), "gateway unavailable") { + t.Fatalf("setupThunderNode() error = %v", err) + } +} + +func TestSetupThunderNodeSkipsInstallerWhenAlreadyEnrolled(t *testing.T) { + client := &fakeGatewayNodeEnrollmentClient{createResp: &pb.CreateNodeEnrollmentResponse{Ok: true}} + restore := stubThunderNodeInstallCommand(func(ctx context.Context, command string) error { + t.Fatalf("installer should not run for an existing enrollment: %s", command) + return nil + }) + defer restore() + + if err := setupThunderNode(context.Background(), client, "agent-token", []netip.Addr{netip.MustParseAddr("100.64.0.10")}, nil, nil); err != nil { + t.Fatal(err) + } +} + +func TestSetupThunderNodeDeletesEnrollmentWhenInstallFails(t *testing.T) { + client := &fakeGatewayNodeEnrollmentClient{createResp: &pb.CreateNodeEnrollmentResponse{Ok: true, EnrollmentToken: "tr_node"}, deleteResp: &pb.DeleteNodeEnrollmentResponse{Ok: true}} + restore := stubThunderNodeInstallCommand(func(ctx context.Context, command string) error { + return errors.New("install failed") + }) + defer restore() + + err := setupThunderNode(context.Background(), client, "agent-token", []netip.Addr{netip.MustParseAddr("100.64.0.10")}, nil, nil) + if err == nil || !strings.Contains(err.Error(), "install failed") { + t.Fatalf("setupThunderNode() error = %v", err) + } + if client.deleteCalls != 1 || client.deleteAgentToken != "agent-token" { + t.Fatalf("delete calls = %d token = %q", client.deleteCalls, client.deleteAgentToken) + } +} + +func TestThunderReachableNodeIPPrefersIPv4(t *testing.T) { + got, err := thunderReachableNodeIP([]netip.Addr{ + netip.MustParseAddr("fd7a:115c:a1e0::1"), + netip.MustParseAddr("100.64.0.10"), + }) + if err != nil { + t.Fatal(err) + } + if got != "100.64.0.10" { + t.Fatalf("reachable IP = %q", got) + } +} + +func stubThunderNodeInstallCommand(fn func(context.Context, string) error) func() { + old := runThunderNodeInstallCommand + runThunderNodeInstallCommand = fn + return func() { runThunderNodeInstallCommand = old } +} + +type fakeGatewayNodeEnrollmentClient struct { + createResp *pb.CreateNodeEnrollmentResponse + createErr error + deleteResp *pb.DeleteNodeEnrollmentResponse + deleteErr error + + createAgentToken string + deleteAgentToken string + deleteCalls int +} + +func (f *fakeGatewayNodeEnrollmentClient) CreateNodeEnrollment(ctx context.Context, in *pb.CreateNodeEnrollmentRequest, _ ...grpc.CallOption) (*pb.CreateNodeEnrollmentResponse, error) { + f.createAgentToken = in.GetAgentToken() + if f.createErr != nil { + return nil, f.createErr + } + if f.createResp != nil { + return f.createResp, nil + } + return &pb.CreateNodeEnrollmentResponse{Ok: true}, nil +} + +func (f *fakeGatewayNodeEnrollmentClient) DeleteNodeEnrollment(ctx context.Context, in *pb.DeleteNodeEnrollmentRequest, _ ...grpc.CallOption) (*pb.DeleteNodeEnrollmentResponse, error) { + f.deleteCalls++ + f.deleteAgentToken = in.GetAgentToken() + if f.deleteErr != nil { + return nil, f.deleteErr + } + if f.deleteResp != nil { + return f.deleteResp, nil + } + return &pb.DeleteNodeEnrollmentResponse{Ok: true}, nil +} diff --git a/pkg/agent/transport.go b/pkg/agent/transport.go index c7ecaf800..36c5990b6 100644 --- a/pkg/agent/transport.go +++ b/pkg/agent/transport.go @@ -80,10 +80,17 @@ func runTSNetRouteProxy(ctx context.Context, client pb.GatewayServiceClient, age hostname := credential.Hostname if localClient, err := server.LocalClient(); err == nil { - if status, err := localClient.Status(ctx); err == nil && status.Self != nil && status.Self.DNSName != "" { - hostname = strings.TrimSuffix(status.Self.DNSName, ".") + if status, err := localClient.Status(ctx); err == nil { + if status.Self != nil && status.Self.DNSName != "" { + hostname = strings.TrimSuffix(status.Self.DNSName, ".") + } } } + if err := setupThunderNode(ctx, client, agentToken, hostTailscaleIPs(), stdout, stderr); err != nil { + fmt.Fprintf(stderr, "Thunder node enrollment skipped: %v\n", err) + } else { + defer deleteThunderNodeEnrollment(context.Background(), client, agentToken, stderr) + } listener, err := server.Listen("tcp", fmt.Sprintf(":%d", types.DefaultAgentTSNetRouteProxyPort)) if err != nil { diff --git a/pkg/agent/worker_config.go b/pkg/agent/worker_config.go index 743468f33..8502aa238 100644 --- a/pkg/agent/worker_config.go +++ b/pkg/agent/worker_config.go @@ -145,6 +145,7 @@ type agentConfigPool struct { GPUType string `json:"gpuType"` ContainerRuntime string `json:"containerRuntime"` ContainerRuntimeConfig agentConfigRuntimeConfig `json:"containerRuntimeConfig"` + GpuVirtualized bool `json:"gpuVirtualized"` ContainerStartConcurrency int `json:"containerStartConcurrency"` NetworkPreallocation bool `json:"networkPreallocation"` NetworkSlotPoolSize int `json:"networkSlotPoolSize"` @@ -309,6 +310,7 @@ func newAgentWorkerConfig(bootstrap bootstrapConfig, slot *pb.AgentWorkerSlot) a GPUType: slot.Gpu, ContainerRuntime: poolRuntime, ContainerRuntimeConfig: agentRuntimeConfig, + GpuVirtualized: poolConfig.GetGpuVirtualized(), ContainerStartConcurrency: int(slot.ContainerStartConcurrency), NetworkPreallocation: networkPreallocation, NetworkSlotPoolSize: int(slot.NetworkSlotPoolSize), diff --git a/pkg/agent/worker_container.go b/pkg/agent/worker_container.go index 8b594e60b..808c58339 100644 --- a/pkg/agent/worker_container.go +++ b/pkg/agent/worker_container.go @@ -97,6 +97,7 @@ func dockerRunArgs(name, image, imageID, configPath string, bootstrap bootstrapC types.WorkerMemoryEnv: strconv.FormatInt(slot.Memory, 10), types.WorkerGPUEnv: slot.Gpu, types.WorkerGPUCountEnv: strconv.FormatUint(uint64(slot.GpuCount), 10), + types.WorkerGPUVirtualizedEnv: strconv.FormatBool(slot.GetPoolConfig().GetGpuVirtualized()), types.WorkerMinimalConfigEnv: "true", types.WorkerPodHostEnv: types.LoopbackHost, types.WorkerPodIPEnv: types.LoopbackHost, diff --git a/pkg/auth/grpc.go b/pkg/auth/grpc.go index 6e37c8016..72f18e040 100644 --- a/pkg/auth/grpc.go +++ b/pkg/auth/grpc.go @@ -41,6 +41,8 @@ func NewAuthInterceptor(config types.AppConfig, backendRepo repository.BackendRe pb.GatewayService_JoinAgent_FullMethodName: true, pb.GatewayService_ListAgentRoutes_FullMethodName: true, pb.GatewayService_RequestAgentTransportCredential_FullMethodName: true, + pb.GatewayService_CreateNodeEnrollment_FullMethodName: true, + pb.GatewayService_DeleteNodeEnrollment_FullMethodName: true, pb.GatewayService_StreamAgent_FullMethodName: true, pb.GatewayService_StreamAgentTelemetry_FullMethodName: true, pb.GatewayService_UpdateAgentRouteStatus_FullMethodName: true, diff --git a/pkg/auth/grpc_test.go b/pkg/auth/grpc_test.go index aa5d4dc7a..4a1038b1e 100644 --- a/pkg/auth/grpc_test.go +++ b/pkg/auth/grpc_test.go @@ -61,6 +61,19 @@ func TestAuthInterceptorAllowsPublicMarketplaceBrowse(t *testing.T) { } } +func TestAuthInterceptorLetsAgentNodeEnrollmentSelfAuthenticate(t *testing.T) { + interceptor := NewAuthInterceptor(types.AppConfig{}, nil, nil) + + for _, method := range []string{ + pb.GatewayService_CreateNodeEnrollment_FullMethodName, + pb.GatewayService_DeleteNodeEnrollment_FullMethodName, + } { + if interceptor.isAuthRequired(method) { + t.Fatalf("method %s requires interceptor auth, want agent token field auth", method) + } + } +} + func TestAuthInterceptorStillRequiresAuthForNonCacheRepositoryMethods(t *testing.T) { interceptor := NewAuthInterceptor(types.AppConfig{}, nil, nil) diff --git a/pkg/common/keys.go b/pkg/common/keys.go index 291b6cd6c..1d1b0e648 100644 --- a/pkg/common/keys.go +++ b/pkg/common/keys.go @@ -150,6 +150,16 @@ var ( computeOnDemandSpend string = "compute:ondemand:spend:%s" ) +var ( + thunderClientEnrollment string = "thunder:{client_enrollments}:client:%s" + thunderClientEnrollmentIndex string = "thunder:{client_enrollments}:clients" + thunderNodeEnrollment string = "thunder:{%s}:pool:%s:machine:%s:node" + thunderNodeEnrollmentIndex string = "thunder:{%s}:pool:%s:nodes" + thunderZone string = "thunder:{%s}:pool:%s:zone" + thunderZoneIndex string = "thunder:{%s}:zones" + thunderPoolLock string = "thunder:{%s}:pool:%s:lock" +) + var ( containerName string = "%s-%s-%s" // prefix, stub-id, containerId ) @@ -633,6 +643,35 @@ func (rk *redisKeys) ProviderMachineLock(providerName, poolName, machineId strin return fmt.Sprintf(providerMachineLock, providerName, poolName, machineId) } +// Thunder keys +func (rk *redisKeys) ThunderClientEnrollment(containerID string) string { + return fmt.Sprintf(thunderClientEnrollment, containerID) +} + +func (rk *redisKeys) ThunderClientEnrollmentIndex() string { + return thunderClientEnrollmentIndex +} + +func (rk *redisKeys) ThunderNodeEnrollment(workspaceID, poolName, machineID string) string { + return fmt.Sprintf(thunderNodeEnrollment, workspaceID, poolName, machineID) +} + +func (rk *redisKeys) ThunderNodeEnrollmentIndex(workspaceID, poolName string) string { + return fmt.Sprintf(thunderNodeEnrollmentIndex, workspaceID, poolName) +} + +func (rk *redisKeys) ThunderZone(workspaceID, poolName string) string { + return fmt.Sprintf(thunderZone, workspaceID, poolName) +} + +func (rk *redisKeys) ThunderZoneIndex(workspaceID string) string { + return fmt.Sprintf(thunderZoneIndex, workspaceID) +} + +func (rk *redisKeys) ThunderPoolLock(workspaceID, poolName string) string { + return fmt.Sprintf(thunderPoolLock, workspaceID, poolName) +} + func (rk *redisKeys) ContainerName(prefix string, stubId string, containerId string) string { return fmt.Sprintf(containerName, prefix, stubId, containerId) } diff --git a/pkg/common/keys_test.go b/pkg/common/keys_test.go new file mode 100644 index 000000000..58630dd36 --- /dev/null +++ b/pkg/common/keys_test.go @@ -0,0 +1,42 @@ +package common + +import "testing" + +func TestThunderClientEnrollmentKeysShareHashTag(t *testing.T) { + stateKey := RedisKeys.ThunderClientEnrollment("container-1") + indexKey := RedisKeys.ThunderClientEnrollmentIndex() + + stateTag, ok := redisHashTag(stateKey) + if !ok { + t.Fatalf("state key %q has no hash tag", stateKey) + } + indexTag, ok := redisHashTag(indexKey) + if !ok { + t.Fatalf("index key %q has no hash tag", indexKey) + } + if stateTag != indexTag { + t.Fatalf("hash tags differ: state %q index %q", stateTag, indexTag) + } +} + +func redisHashTag(key string) (string, bool) { + start := -1 + for i, ch := range key { + if ch == '{' { + start = i + break + } + } + if start < 0 { + return "", false + } + for i := start + 1; i < len(key); i++ { + if key[i] == '}' { + if i == start+1 { + return "", false + } + return key[start+1 : i], true + } + } + return "", false +} diff --git a/pkg/gateway/gateway.go b/pkg/gateway/gateway.go index 960911ef8..4b394c256 100644 --- a/pkg/gateway/gateway.go +++ b/pkg/gateway/gateway.go @@ -44,6 +44,7 @@ import ( gatewayservices "github.com/beam-cloud/beta9/pkg/gateway/services" computesvc "github.com/beam-cloud/beta9/pkg/gateway/services/compute" repositoryservices "github.com/beam-cloud/beta9/pkg/gateway/services/repository" + thundersvc "github.com/beam-cloud/beta9/pkg/gateway/services/thunder" "github.com/beam-cloud/beta9/pkg/network" "github.com/beam-cloud/beta9/pkg/repository" usage "github.com/beam-cloud/beta9/pkg/repository/usage" @@ -394,6 +395,19 @@ func (g *Gateway) registerServices() error { } pb.RegisterSimpleQueueServiceServer(g.grpcServer, rq) + // Register Thunder service + ts, err := thundersvc.NewService(thundersvc.ServiceOpts{ + RedisClient: g.RedisClient, + Client: thundersvc.NewClientFromEnv(nil), + ContainerRepo: g.ContainerRepo, + WorkerRepo: g.workerRepo, + AgentStateValidator: g.ComputeService, + }) + if err != nil { + return err + } + pb.RegisterThunderServiceServer(g.grpcServer, ts) + // Register image service is, err := image.NewContainerImageService(g.ctx, image.ImageServiceOpts{ Config: g.Config, @@ -589,6 +603,7 @@ func (g *Gateway) registerServices() error { WorkerPoolRepo: g.WorkerPoolRepo, ComputeRepo: g.ComputeRepo, ComputeService: g.ComputeService, + ThunderService: ts, UsageMetricsRepo: g.UsageMetricsRepo, Tailscale: g.Tailscale, }) diff --git a/pkg/gateway/gateway.proto b/pkg/gateway/gateway.proto index 12798f507..7338a5775 100644 --- a/pkg/gateway/gateway.proto +++ b/pkg/gateway/gateway.proto @@ -340,6 +340,10 @@ service GatewayService { body : "*" }; } + rpc CreateNodeEnrollment(CreateNodeEnrollmentRequest) + returns (CreateNodeEnrollmentResponse); + rpc DeleteNodeEnrollment(DeleteNodeEnrollmentRequest) + returns (DeleteNodeEnrollmentResponse); rpc ListAgentRoutes(ListAgentRoutesRequest) returns (ListAgentRoutesResponse) { option (google.api.http) = { @@ -734,6 +738,7 @@ message GetOrCreateStubRequest { repeated DurableDisk disks = 44; bool allow_marketplace = 45; types.CheckpointTrigger checkpoint_trigger = 46; + reserved 47; } message GetOrCreateStubResponse { @@ -1455,6 +1460,21 @@ message RequestAgentTransportCredentialResponse { bool ephemeral = 6; } +message CreateNodeEnrollmentRequest { string agent_token = 1; } + +message CreateNodeEnrollmentResponse { + bool ok = 1; + string error_msg = 2; + string enrollment_token = 3; +} + +message DeleteNodeEnrollmentRequest { string agent_token = 1; } + +message DeleteNodeEnrollmentResponse { + bool ok = 1; + string error_msg = 2; +} + message ListAgentRoutesRequest { string agent_token = 1; } message ListAgentRoutesResponse { @@ -1884,4 +1904,5 @@ message AgentPoolRuntimeConfig { string durable_disks_path = 7; AgentPoolCacheConfig cache = 8; string config_group = 9; + bool gpu_virtualized = 10; } diff --git a/pkg/gateway/services/compute.go b/pkg/gateway/services/compute.go index 73bb05e9f..51b02789a 100644 --- a/pkg/gateway/services/compute.go +++ b/pkg/gateway/services/compute.go @@ -130,6 +130,20 @@ func (gws *GatewayService) RequestAgentTransportCredential(ctx context.Context, return gws.computeService.RequestAgentTransportCredential(ctx, in) } +func (gws *GatewayService) CreateNodeEnrollment(ctx context.Context, in *pb.CreateNodeEnrollmentRequest) (*pb.CreateNodeEnrollmentResponse, error) { + if gws.thunderService == nil { + return &pb.CreateNodeEnrollmentResponse{ErrorMsg: "Thunder service is unavailable"}, nil + } + return gws.thunderService.CreateNodeEnrollment(ctx, in) +} + +func (gws *GatewayService) DeleteNodeEnrollment(ctx context.Context, in *pb.DeleteNodeEnrollmentRequest) (*pb.DeleteNodeEnrollmentResponse, error) { + if gws.thunderService == nil { + return &pb.DeleteNodeEnrollmentResponse{ErrorMsg: "Thunder service is unavailable"}, nil + } + return gws.thunderService.DeleteNodeEnrollment(ctx, in) +} + func (gws *GatewayService) StreamAgent(in *pb.StreamAgentRequest, stream pb.GatewayService_StreamAgentServer) error { return gws.computeService.StreamAgent(in, stream) } diff --git a/pkg/gateway/services/compute/agent.go b/pkg/gateway/services/compute/agent.go index da707114e..7067c9f54 100644 --- a/pkg/gateway/services/compute/agent.go +++ b/pkg/gateway/services/compute/agent.go @@ -289,6 +289,14 @@ func (s *Service) bindJoinTokenFingerprint(ctx context.Context, tokenState *mode // requireAgentState resolves an agent token to its current machine state, // returning a user-facing error message when the token is invalid or stale. // Shared by every agent-token-authenticated RPC in this file. +func (s *Service) ResolveAgentState(ctx context.Context, token string) (*model.AgentTokenState, error) { + agentState, errMsg := s.requireAgentState(ctx, token) + if errMsg != "" { + return nil, errors.New(errMsg) + } + return agentState, nil +} + func (s *Service) requireAgentState(ctx context.Context, token string) (*model.AgentTokenState, string) { agentState, err := s.getCurrentComputeAgentTokenState(ctx, token) if err != nil { @@ -920,6 +928,7 @@ func agentPoolRuntimeConfigToProto(config *types.WorkerPoolConfig) *pb.AgentPool ImagesPath: config.ImagesPath, DurableDisksPath: config.DurableDisksPath, ConfigGroup: config.ConfigGroup, + GpuVirtualized: config.GpuVirtualized, Cache: &pb.AgentPoolCacheConfig{ Enabled: cacheEnabled, Disk: &pb.AgentPoolCacheDiskConfig{ diff --git a/pkg/gateway/services/compute/compute_test.go b/pkg/gateway/services/compute/compute_test.go index de4d81136..e9fdaccea 100644 --- a/pkg/gateway/services/compute/compute_test.go +++ b/pkg/gateway/services/compute/compute_test.go @@ -5671,6 +5671,7 @@ func TestAgentWorkerSlotStateCarriesMarketplaceModeAndRuntime(t *testing.T) { ContainerStartConcurrency: 64, NetworkSlotPoolSize: 128, NetworkPreallocation: &networkPreallocation, + GpuVirtualized: true, Priority: 10, CRIUEnabled: false, TmpSizeLimit: "50Gi", @@ -5698,6 +5699,7 @@ func TestAgentWorkerSlotStateCarriesMarketplaceModeAndRuntime(t *testing.T) { } if wireSlot.PoolConfig == nil || wireSlot.PoolConfig.NetworkPreallocation || + !wireSlot.PoolConfig.GpuVirtualized || wireSlot.PoolConfig.CriuEnabled || wireSlot.PoolConfig.StoragePath != "/mnt/raid/storage" || wireSlot.PoolConfig.ImagesPath != "/mnt/raid/images" || diff --git a/pkg/gateway/services/rollout_test.go b/pkg/gateway/services/rollout_test.go index f9189768a..811af73d4 100644 --- a/pkg/gateway/services/rollout_test.go +++ b/pkg/gateway/services/rollout_test.go @@ -10,6 +10,24 @@ import ( "github.com/beam-cloud/beta9/pkg/types" ) +func TestRolloutContainerRequestPropagatesGpuSchedulingFields(t *testing.T) { + request := rolloutContainerRequest(deploymentRolloutInput{ + workspace: &types.Workspace{ExternalId: "workspace-1"}, + stub: &types.StubWithRelated{Stub: types.Stub{ExternalId: "stub-1"}}, + config: &types.StubConfigV1{Runtime: types.Runtime{ + Cpu: 1_000, + Memory: 2_048, + Gpus: []types.GpuType{types.GPU_A10G}, + GpuCount: 1, + ImageId: "image-1", + }}, + }) + + if request.GpuCount != 1 || len(request.GpuRequest) != 1 || request.GpuRequest[0] != string(types.GPU_A10G) { + t.Fatalf("gpu scheduling fields = count %d request %v, want A10G x1", request.GpuCount, request.GpuRequest) + } +} + func TestDeploymentRolloutAppliesToAnyAlwaysOnDeployment(t *testing.T) { latestConfig := types.StubConfigV1{ Autoscaler: &types.Autoscaler{MinContainers: 1}, diff --git a/pkg/gateway/services/service.go b/pkg/gateway/services/service.go index 50acde252..2a92997ed 100644 --- a/pkg/gateway/services/service.go +++ b/pkg/gateway/services/service.go @@ -7,6 +7,7 @@ import ( "github.com/beam-cloud/beta9/pkg/common" computesvc "github.com/beam-cloud/beta9/pkg/gateway/services/compute" + thundersvc "github.com/beam-cloud/beta9/pkg/gateway/services/thunder" "github.com/beam-cloud/beta9/pkg/network" "github.com/beam-cloud/beta9/pkg/repository" "github.com/beam-cloud/beta9/pkg/scheduler" @@ -30,6 +31,7 @@ type GatewayService struct { workerPoolRepo repository.WorkerPoolRepository computeRepo repository.ComputeRepository computeService *computesvc.Service + thunderService *thundersvc.Service usageMetricsRepo repository.UsageMetricsRepository tailscale *network.Tailscale keyEventManager *common.KeyEventManager @@ -52,6 +54,7 @@ type GatewayServiceOpts struct { WorkerPoolRepo repository.WorkerPoolRepository ComputeRepo repository.ComputeRepository ComputeService *computesvc.Service + ThunderService *thundersvc.Service UsageMetricsRepo repository.UsageMetricsRepository Tailscale *network.Tailscale KeyEventManager *common.KeyEventManager @@ -105,6 +108,7 @@ func NewGatewayService(opts *GatewayServiceOpts) (*GatewayService, error) { workerPoolRepo: opts.WorkerPoolRepo, computeRepo: computeRepo, computeService: computeService, + thunderService: opts.ThunderService, usageMetricsRepo: opts.UsageMetricsRepo, tailscale: opts.Tailscale, keyEventManager: keyEventManager, diff --git a/pkg/gateway/services/stub.go b/pkg/gateway/services/stub.go index 91fe3db84..15fc672e4 100644 --- a/pkg/gateway/services/stub.go +++ b/pkg/gateway/services/stub.go @@ -47,6 +47,14 @@ func (gws *GatewayService) GetOrCreateStub(ctx context.Context, in *pb.GetOrCrea autoscaler := autoscalerFromProto(in.Autoscaler) + log.Info(). + Str("stub_name", in.Name). + Str("stub_type", in.StubType). + Str("workspace_id", authInfo.Workspace.ExternalId). + Strs("gpus", types.GpuTypesToStrings(gpus)). + Uint32("gpu_count", in.GpuCount). + Msg("gateway received GetOrCreateStub request") + keepWarmSeconds := normalizeKeepWarmSeconds(in.KeepWarmSeconds, types.StubType(in.StubType)) // Pod keep-warm semantics: @@ -166,6 +174,13 @@ func (gws *GatewayService) GetOrCreateStub(ctx context.Context, in *pb.GetOrCrea stubConfig.Runtime.GpuCount = 1 } + log.Info(). + Str("stub_name", in.Name). + Str("stub_type", in.StubType). + Strs("gpus", types.GpuTypesToStrings(gpus)). + Uint32("gpu_count", stubConfig.Runtime.GpuCount). + Msg("gateway built stub config") + if stubConfig.RequiresGPU() { if gws.computeService != nil { if err := gws.computeService.ValidatePrivatePoolGPURequest(ctx, authInfo.Workspace.ExternalId, poolConfigName(resourcePolicy.pool), gpus); err != nil { diff --git a/pkg/gateway/services/stub_test.go b/pkg/gateway/services/stub_test.go index e0f703bec..1df8381ec 100644 --- a/pkg/gateway/services/stub_test.go +++ b/pkg/gateway/services/stub_test.go @@ -103,6 +103,24 @@ func (r *checkpointVolumeBackendRepo) GetOrCreateVolume(ctx context.Context, wor return &types.Volume{ExternalId: "volume-123", WorkspaceId: workspaceId, Name: name}, nil } +type getOrCreateStubBackendRepo struct { + repository.BackendRepository + stubConfig types.StubConfigV1 +} + +func (r *getOrCreateStubBackendRepo) GetOrCreateApp(ctx context.Context, workspaceId uint, appName string) (*types.App, error) { + return &types.App{Id: 3, WorkspaceId: workspaceId, Name: appName}, nil +} + +func (r *getOrCreateStubBackendRepo) GetObjectByExternalId(ctx context.Context, externalId string, workspaceId uint) (types.Object, error) { + return types.Object{Id: 2, ExternalId: externalId, WorkspaceId: workspaceId}, nil +} + +func (r *getOrCreateStubBackendRepo) GetOrCreateStub(ctx context.Context, name, stubType string, config types.StubConfigV1, objectId, workspaceId uint, forceCreate bool, appId uint) (types.Stub, error) { + r.stubConfig = config + return types.Stub{Id: 4, ExternalId: "stub-123", Name: name, Type: types.StubType(stubType), ObjectId: objectId, WorkspaceId: workspaceId, AppId: appId}, nil +} + func TestConfigureDurableDiskPlacementDefaultsSnapshotDriver(t *testing.T) { config := &types.StubConfigV1{ Disks: []*pb.DurableDisk{{Name: "pg-data"}}, diff --git a/pkg/gateway/services/thunder/client.go b/pkg/gateway/services/thunder/client.go new file mode 100644 index 000000000..d59c69509 --- /dev/null +++ b/pkg/gateway/services/thunder/client.go @@ -0,0 +1,271 @@ +package thunder + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + "os" + "strings" + "time" + + "github.com/beam-cloud/beta9/pkg/common" +) + +const ( + thunderAPIURLEnv = "THUNDER_API_URL" + thunderAPITokenEnv = "THUNDER_API_TOKEN" + thunderEnrollmentTokenPath = "/api/v1/enrollment-tokens" + thunderZonesPath = "/api/v1/zones" + + thunderEnrollmentRoleClient = "client" + thunderEnrollmentRoleServer = "server" +) + +type Client struct { + apiURL string + apiToken string + httpClient *http.Client +} + +type Zone struct { + ZoneID string `json:"zoneId"` + OrgID string `json:"orgId"` + DisplayName string `json:"displayName"` +} + +type EnrollmentToken struct { + EnrollmentTokenID string `json:"enrollmentTokenId"` + EnrollmentToken string `json:"enrollmentToken"` + OrgID string `json:"orgId"` + ZoneID string `json:"zoneId"` + Role string `json:"role"` + GPUType string `json:"gpuType"` + GPUCount int `json:"gpuCount"` + ExpiresAt time.Time `json:"expiresAt"` +} + +type DeleteEnrollmentTokenNodeResponse struct { + EnrollmentTokenID string `json:"enrollmentTokenId"` + Role string `json:"role"` + ClientID string `json:"clientId"` + HostID string `json:"hostId"` + NodeDeleted bool `json:"nodeDeleted"` + DeletedAt time.Time `json:"deletedAt"` +} + +type ThunderError struct { + StatusCode int + ErrorCode string + Message string + Code int +} + +func (e *ThunderError) Error() string { + if e == nil { + return "Thunder API error" + } + parts := []string{fmt.Sprintf("Thunder API returned status %d", e.StatusCode)} + if e.ErrorCode != "" { + parts = append(parts, e.ErrorCode) + } + if e.Message != "" { + parts = append(parts, e.Message) + } + return strings.Join(parts, ": ") +} + +func NewClientFromEnv(httpClient *http.Client) *Client { + return NewClient(os.Getenv(thunderAPIURLEnv), os.Getenv(thunderAPITokenEnv), httpClient) +} + +func NewClient(apiURL, apiToken string, httpClient *http.Client) *Client { + if httpClient == nil { + httpClient = &http.Client{Timeout: 10 * time.Second} + } + return &Client{ + apiURL: strings.TrimRight(strings.TrimSpace(apiURL), "/"), + apiToken: strings.TrimSpace(apiToken), + httpClient: httpClient, + } +} + +func (c *Client) ClientInstallCommand(enrollmentToken string) (string, error) { + if c == nil { + return "", fmt.Errorf("Thunder client is required") + } + if c.apiURL == "" { + return "", fmt.Errorf("%s is required", thunderAPIURLEnv) + } + enrollmentToken = strings.TrimSpace(enrollmentToken) + if enrollmentToken == "" { + return "", fmt.Errorf("Thunder enrollment token is required") + } + return "curl -fsSL https://get.thundercompute.com/install.sh | sudo THUNDER_NOWARN=1 THUNDER_INSTALL_MODE=client THUNDER_CENTRAL_URL=" + common.ShellQuote(c.apiURL) + " THUNDER_ENROLLMENT_TOKEN=" + common.ShellQuote(enrollmentToken) + " sh", nil +} + +func (c *Client) CreateZone(ctx context.Context, displayName string) (*Zone, error) { + var response Zone + payload := createZoneRequest{DisplayName: strings.TrimSpace(displayName)} + if err := c.do(ctx, http.MethodPost, thunderZonesPath, payload, &response); err != nil { + return nil, err + } + return &response, nil +} + +func (c *Client) DeleteZone(ctx context.Context, zoneID string) error { + zoneID = strings.TrimSpace(zoneID) + if zoneID == "" { + return fmt.Errorf("Thunder zone id is required") + } + return c.do(ctx, http.MethodDelete, "/api/v1/zones/"+url.PathEscape(zoneID), nil, nil) +} + +func (c *Client) CreateClientEnrollmentToken(ctx context.Context, zoneID, gpuType string, gpuCount int) (*EnrollmentToken, error) { + zoneID = strings.TrimSpace(zoneID) + gpuType = strings.TrimSpace(gpuType) + if zoneID == "" { + return nil, fmt.Errorf("Thunder zone id is required") + } + if gpuType == "" { + return nil, fmt.Errorf("Thunder GPU type is required for client enrollment") + } + if gpuCount <= 0 { + return nil, fmt.Errorf("Thunder GPU count must be greater than zero for client enrollment") + } + return c.createEnrollmentToken(ctx, createEnrollmentTokenRequest{ + ZoneID: zoneID, + Role: thunderEnrollmentRoleClient, + GPUType: gpuType, + GPUCount: gpuCount, + }) +} + +func (c *Client) CreateServerEnrollmentToken(ctx context.Context, zoneID string) (*EnrollmentToken, error) { + zoneID = strings.TrimSpace(zoneID) + if zoneID == "" { + return nil, fmt.Errorf("Thunder zone id is required") + } + return c.createEnrollmentToken(ctx, createEnrollmentTokenRequest{ + ZoneID: zoneID, + Role: thunderEnrollmentRoleServer, + }) +} + +func (c *Client) DeleteEnrollmentTokenNode(ctx context.Context, enrollmentTokenID string) (*DeleteEnrollmentTokenNodeResponse, error) { + enrollmentTokenID = strings.TrimSpace(enrollmentTokenID) + if enrollmentTokenID == "" { + return nil, fmt.Errorf("Thunder enrollment token id is required") + } + var response DeleteEnrollmentTokenNodeResponse + path := fmt.Sprintf("/api/v1/enrollment-tokens/%s/node", url.PathEscape(enrollmentTokenID)) + if err := c.do(ctx, http.MethodDelete, path, nil, &response); err != nil { + return nil, err + } + return &response, nil +} + +func (c *Client) createEnrollmentToken(ctx context.Context, payload createEnrollmentTokenRequest) (*EnrollmentToken, error) { + var response EnrollmentToken + if err := c.do(ctx, http.MethodPost, thunderEnrollmentTokenPath, payload, &response); err != nil { + return nil, err + } + return &response, nil +} + +func (c *Client) do(ctx context.Context, method, path string, payload any, response any) error { + if c == nil { + return fmt.Errorf("Thunder client is required") + } + if c.apiURL == "" { + return fmt.Errorf("%s is required", thunderAPIURLEnv) + } + if c.apiToken == "" { + return fmt.Errorf("%s is required", thunderAPITokenEnv) + } + endpoint, err := thunderEndpoint(c.apiURL, path) + if err != nil { + return err + } + + var body io.Reader + if payload != nil { + buf := &bytes.Buffer{} + if err := json.NewEncoder(buf).Encode(payload); err != nil { + return err + } + body = buf + } + + req, err := http.NewRequestWithContext(ctx, method, endpoint, body) + if err != nil { + return err + } + req.Header.Set("Authorization", "Bearer "+c.apiToken) + if payload != nil { + req.Header.Set("Content-Type", "application/json") + } + if response != nil { + req.Header.Set("Accept", "application/json") + } + + resp, err := c.httpClient.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + if resp.StatusCode < http.StatusOK || resp.StatusCode >= http.StatusMultipleChoices { + return decodeThunderError(resp) + } + if response == nil || resp.StatusCode == http.StatusNoContent { + return nil + } + return json.NewDecoder(resp.Body).Decode(response) +} + +func decodeThunderError(resp *http.Response) error { + apiErr := &ThunderError{StatusCode: resp.StatusCode} + var payload thunderErrorPayload + if err := json.NewDecoder(resp.Body).Decode(&payload); err == nil { + apiErr.ErrorCode = payload.Error + apiErr.Message = payload.Message + apiErr.Code = payload.Code + } + return apiErr +} + +func thunderEndpoint(apiURL, path string) (string, error) { + base := strings.TrimRight(strings.TrimSpace(apiURL), "/") + parsed, err := url.Parse(base) + if err != nil { + return "", err + } + if parsed.Scheme == "" || parsed.Host == "" { + return "", fmt.Errorf("invalid Thunder API URL %q", apiURL) + } + if !strings.HasPrefix(path, "/") { + path = "/" + path + } + return base + path, nil +} + +type createZoneRequest struct { + DisplayName string `json:"displayName,omitempty"` +} + +type createEnrollmentTokenRequest struct { + ZoneID string `json:"zoneId"` + Role string `json:"role"` + GPUType string `json:"gpuType,omitempty"` + GPUCount int `json:"gpuCount,omitempty"` +} + +type thunderErrorPayload struct { + Error string `json:"error"` + Message string `json:"message"` + Code int `json:"code"` +} diff --git a/pkg/gateway/services/thunder/client_test.go b/pkg/gateway/services/thunder/client_test.go new file mode 100644 index 000000000..146ae42f8 --- /dev/null +++ b/pkg/gateway/services/thunder/client_test.go @@ -0,0 +1,170 @@ +package thunder + +import ( + "context" + "encoding/json" + "errors" + "net/http" + "net/http/httptest" + "strings" + "testing" +) + +func TestClientCreateZone(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost || r.URL.Path != thunderZonesPath { + t.Fatalf("request = %s %s", r.Method, r.URL.Path) + } + if got := r.Header.Get("Authorization"); got != "Bearer central-token" { + t.Fatalf("authorization = %q", got) + } + var payload createZoneRequest + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload.DisplayName != "workspace-pool" { + t.Fatalf("displayName = %q", payload.DisplayName) + } + _ = json.NewEncoder(w).Encode(Zone{ZoneID: "zone-1", OrgID: "org-1", DisplayName: payload.DisplayName}) + })) + defer server.Close() + + client := NewClient(server.URL, "central-token", server.Client()) + zone, err := client.CreateZone(context.Background(), " workspace-pool ") + if err != nil { + t.Fatalf("CreateZone() error = %v", err) + } + if zone.ZoneID != "zone-1" || zone.DisplayName != "workspace-pool" { + t.Fatalf("zone = %+v", zone) + } +} + +func TestClientPreservesAPIURLPathPrefix(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path != "/central/api/v1/zones" { + t.Fatalf("path = %q", r.URL.Path) + } + _ = json.NewEncoder(w).Encode(Zone{ZoneID: "zone-1"}) + })) + defer server.Close() + + client := NewClient(server.URL+"/central", "central-token", server.Client()) + if _, err := client.CreateZone(context.Background(), ""); err != nil { + t.Fatalf("CreateZone() error = %v", err) + } +} + +func TestClientCreateClientEnrollmentToken(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost || r.URL.Path != thunderEnrollmentTokenPath { + t.Fatalf("request = %s %s", r.Method, r.URL.Path) + } + if got := r.Header.Get("Authorization"); got != "Bearer central-token" { + t.Fatalf("authorization = %q", got) + } + payload := map[string]any{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload["zoneId"] != "zone-1" || payload["role"] != thunderEnrollmentRoleClient || payload["gpuType"] != "h100" || payload["gpuCount"] != float64(2) { + t.Fatalf("payload = %+v", payload) + } + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "token-id", EnrollmentToken: "tr_secret", ZoneID: "zone-1", Role: thunderEnrollmentRoleClient, GPUType: "h100", GPUCount: 2}) + })) + defer server.Close() + + client := NewClient(server.URL, "central-token", server.Client()) + token, err := client.CreateClientEnrollmentToken(context.Background(), "zone-1", " h100 ", 2) + if err != nil { + t.Fatalf("CreateClientEnrollmentToken() error = %v", err) + } + if token.EnrollmentTokenID != "token-id" || token.EnrollmentToken != "tr_secret" { + t.Fatalf("token = %+v", token) + } +} + +func TestClientCreateServerEnrollmentTokenOmitsGPUFields(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + payload := map[string]any{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload["zoneId"] != "zone-1" || payload["role"] != thunderEnrollmentRoleServer { + t.Fatalf("payload = %+v", payload) + } + if _, ok := payload["gpuType"]; ok { + t.Fatalf("server enrollment payload included gpuType: %+v", payload) + } + if _, ok := payload["gpuCount"]; ok { + t.Fatalf("server enrollment payload included gpuCount: %+v", payload) + } + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "server-token", EnrollmentToken: "tr_server", ZoneID: "zone-1", Role: thunderEnrollmentRoleServer}) + })) + defer server.Close() + + client := NewClient(server.URL, "central-token", server.Client()) + token, err := client.CreateServerEnrollmentToken(context.Background(), "zone-1") + if err != nil { + t.Fatalf("CreateServerEnrollmentToken() error = %v", err) + } + if token.Role != thunderEnrollmentRoleServer || token.EnrollmentTokenID != "server-token" { + t.Fatalf("token = %+v", token) + } +} + +func TestClientDeleteEnrollmentTokenNode(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodDelete || r.URL.Path != "/api/v1/enrollment-tokens/token-1/node" { + t.Fatalf("request = %s %s", r.Method, r.URL.Path) + } + if got := r.Header.Get("Authorization"); got != "Bearer central-token" { + t.Fatalf("authorization = %q", got) + } + _ = json.NewEncoder(w).Encode(DeleteEnrollmentTokenNodeResponse{EnrollmentTokenID: "token-1", Role: thunderEnrollmentRoleClient, NodeDeleted: true}) + })) + defer server.Close() + + client := NewClient(server.URL, "central-token", server.Client()) + resp, err := client.DeleteEnrollmentTokenNode(context.Background(), "token-1") + if err != nil { + t.Fatalf("DeleteEnrollmentTokenNode() error = %v", err) + } + if !resp.NodeDeleted || resp.EnrollmentTokenID != "token-1" { + t.Fatalf("response = %+v", resp) + } +} + +func TestClientDecodesThunderError(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusForbidden) + _ = json.NewEncoder(w).Encode(thunderErrorPayload{Error: "forbidden", Message: "API token is not allowed to create zones", Code: 403}) + })) + defer server.Close() + + client := NewClient(server.URL, "central-token", server.Client()) + _, err := client.CreateZone(context.Background(), "pool") + if err == nil { + t.Fatal("CreateZone() unexpectedly succeeded") + } + var thunderErr *ThunderError + if !errors.As(err, &thunderErr) { + t.Fatalf("error type = %T, want *ThunderError", err) + } + if thunderErr.StatusCode != http.StatusForbidden || thunderErr.ErrorCode != "forbidden" || !strings.Contains(thunderErr.Message, "not allowed") { + t.Fatalf("ThunderError = %+v", thunderErr) + } +} + +func TestClientValidatesRequiredConfig(t *testing.T) { + client := NewClient("", "", nil) + _, err := client.CreateZone(context.Background(), "pool") + if err == nil || !strings.Contains(err.Error(), thunderAPIURLEnv) { + t.Fatalf("CreateZone() error = %v", err) + } + + client = NewClient("https://central.example", "", nil) + _, err = client.CreateZone(context.Background(), "pool") + if err == nil || !strings.Contains(err.Error(), thunderAPITokenEnv) { + t.Fatalf("CreateZone() error = %v", err) + } +} diff --git a/pkg/gateway/services/thunder/db.go b/pkg/gateway/services/thunder/db.go new file mode 100644 index 000000000..780994c1c --- /dev/null +++ b/pkg/gateway/services/thunder/db.go @@ -0,0 +1,262 @@ +package thunder + +import ( + "context" + "encoding/json" + "errors" + "sort" + "time" + + "github.com/beam-cloud/beta9/pkg/common" + redis "github.com/redis/go-redis/v9" +) + +const thunderPoolLockTTLSeconds = 30 + +var errThunderStateRequired = errors.New("thunder state is required") + +type Repository interface { + WithPoolLock(ctx context.Context, workspaceID, poolName string, fn func(context.Context) error) error + + GetClientEnrollment(ctx context.Context, containerID string) (*ClientEnrollmentState, bool, error) + SaveClientEnrollment(ctx context.Context, state *ClientEnrollmentState, ttl time.Duration) error + DeleteClientEnrollment(ctx context.Context, containerID string) error + ListClientEnrollments(ctx context.Context) ([]*ClientEnrollmentState, error) + + GetNodeEnrollment(ctx context.Context, workspaceID, poolName, machineID string) (*NodeEnrollmentState, bool, error) + SaveNodeEnrollment(ctx context.Context, state *NodeEnrollmentState, ttl time.Duration) error + DeleteNodeEnrollment(ctx context.Context, workspaceID, poolName, machineID string) error + ListNodeEnrollments(ctx context.Context, workspaceID, poolName string) ([]*NodeEnrollmentState, error) + + GetZone(ctx context.Context, workspaceID, poolName string) (*ZoneState, bool, error) + SaveZone(ctx context.Context, state *ZoneState) error + DeleteZone(ctx context.Context, workspaceID, poolName string) error + ListZones(ctx context.Context, workspaceID string) ([]*ZoneState, error) +} + +type ClientEnrollmentState struct { + ContainerID string `json:"container_id"` + WorkspaceID string `json:"workspace_id"` + WorkerID string `json:"worker_id"` + MachineID string `json:"machine_id"` + PoolName string `json:"pool_name"` + EnrollmentTokenID string `json:"enrollment_token_id"` +} + +type NodeEnrollmentState struct { + WorkspaceID string `json:"workspace_id"` + PoolName string `json:"pool_name"` + MachineID string `json:"machine_id"` + EnrollmentTokenID string `json:"enrollment_token_id"` +} + +type ZoneState struct { + WorkspaceID string `json:"workspace_id"` + PoolName string `json:"pool_name"` + ThunderZoneID string `json:"thunder_zone_id"` +} + +type RedisRepository struct { + rdb *common.RedisClient + lock *common.RedisLock +} + +func NewRedisRepository(rdb *common.RedisClient) *RedisRepository { + return &RedisRepository{rdb: rdb, lock: common.NewRedisLock(rdb)} +} + +func (r *RedisRepository) WithPoolLock(ctx context.Context, workspaceID, poolName string, fn func(context.Context) error) error { + return r.lock.WithLease(ctx, common.RedisKeys.ThunderPoolLock(workspaceID, poolName), common.RedisLockOptions{ + TtlS: thunderPoolLockTTLSeconds, + Retries: 100, + RetryInterval: 50 * time.Millisecond, + }, fn) +} + +func (r *RedisRepository) GetClientEnrollment(ctx context.Context, containerID string) (*ClientEnrollmentState, bool, error) { + var state ClientEnrollmentState + found, err := r.getJSON(ctx, common.RedisKeys.ThunderClientEnrollment(containerID), &state) + if err != nil || !found { + return nil, found, err + } + return &state, true, nil +} + +func (r *RedisRepository) SaveClientEnrollment(ctx context.Context, state *ClientEnrollmentState, ttl time.Duration) error { + if state == nil || state.ContainerID == "" { + return errThunderStateRequired + } + data, err := json.Marshal(state) + if err != nil { + return err + } + _, err = r.rdb.TxPipelined(ctx, func(pipe redis.Pipeliner) error { + pipe.Set(ctx, common.RedisKeys.ThunderClientEnrollment(state.ContainerID), data, ttl) + pipe.SAdd(ctx, common.RedisKeys.ThunderClientEnrollmentIndex(), state.ContainerID) + return nil + }) + return err +} + +func (r *RedisRepository) DeleteClientEnrollment(ctx context.Context, containerID string) error { + _, err := r.rdb.TxPipelined(ctx, func(pipe redis.Pipeliner) error { + pipe.Del(ctx, common.RedisKeys.ThunderClientEnrollment(containerID)) + pipe.SRem(ctx, common.RedisKeys.ThunderClientEnrollmentIndex(), containerID) + return nil + }) + return err +} + +func (r *RedisRepository) ListClientEnrollments(ctx context.Context) ([]*ClientEnrollmentState, error) { + containerIDs, err := r.rdb.SMembers(ctx, common.RedisKeys.ThunderClientEnrollmentIndex()).Result() + if err != nil { + return nil, err + } + sort.Strings(containerIDs) + keys := make([]string, 0, len(containerIDs)) + for _, containerID := range containerIDs { + keys = append(keys, common.RedisKeys.ThunderClientEnrollment(containerID)) + } + return listJSON[ClientEnrollmentState](ctx, r.rdb, keys) +} + +func (r *RedisRepository) GetNodeEnrollment(ctx context.Context, workspaceID, poolName, machineID string) (*NodeEnrollmentState, bool, error) { + var state NodeEnrollmentState + found, err := r.getJSON(ctx, common.RedisKeys.ThunderNodeEnrollment(workspaceID, poolName, machineID), &state) + if err != nil || !found { + return nil, found, err + } + return &state, true, nil +} + +func (r *RedisRepository) SaveNodeEnrollment(ctx context.Context, state *NodeEnrollmentState, ttl time.Duration) error { + if state == nil || state.WorkspaceID == "" || state.PoolName == "" || state.MachineID == "" { + return errThunderStateRequired + } + data, err := json.Marshal(state) + if err != nil { + return err + } + _, err = r.rdb.TxPipelined(ctx, func(pipe redis.Pipeliner) error { + pipe.Set(ctx, common.RedisKeys.ThunderNodeEnrollment(state.WorkspaceID, state.PoolName, state.MachineID), data, ttl) + pipe.SAdd(ctx, common.RedisKeys.ThunderNodeEnrollmentIndex(state.WorkspaceID, state.PoolName), state.MachineID) + return nil + }) + return err +} + +func (r *RedisRepository) DeleteNodeEnrollment(ctx context.Context, workspaceID, poolName, machineID string) error { + _, err := r.rdb.TxPipelined(ctx, func(pipe redis.Pipeliner) error { + pipe.Del(ctx, common.RedisKeys.ThunderNodeEnrollment(workspaceID, poolName, machineID)) + pipe.SRem(ctx, common.RedisKeys.ThunderNodeEnrollmentIndex(workspaceID, poolName), machineID) + return nil + }) + return err +} + +func (r *RedisRepository) ListNodeEnrollments(ctx context.Context, workspaceID, poolName string) ([]*NodeEnrollmentState, error) { + machineIDs, err := r.rdb.SMembers(ctx, common.RedisKeys.ThunderNodeEnrollmentIndex(workspaceID, poolName)).Result() + if err != nil { + return nil, err + } + sort.Strings(machineIDs) + keys := make([]string, 0, len(machineIDs)) + for _, machineID := range machineIDs { + keys = append(keys, common.RedisKeys.ThunderNodeEnrollment(workspaceID, poolName, machineID)) + } + return listJSON[NodeEnrollmentState](ctx, r.rdb, keys) +} + +func (r *RedisRepository) GetZone(ctx context.Context, workspaceID, poolName string) (*ZoneState, bool, error) { + var state ZoneState + found, err := r.getJSON(ctx, common.RedisKeys.ThunderZone(workspaceID, poolName), &state) + if err != nil || !found { + return nil, found, err + } + return &state, true, nil +} + +func (r *RedisRepository) SaveZone(ctx context.Context, state *ZoneState) error { + if state == nil || state.WorkspaceID == "" || state.PoolName == "" { + return errThunderStateRequired + } + data, err := json.Marshal(state) + if err != nil { + return err + } + _, err = r.rdb.TxPipelined(ctx, func(pipe redis.Pipeliner) error { + pipe.Set(ctx, common.RedisKeys.ThunderZone(state.WorkspaceID, state.PoolName), data, 0) + pipe.SAdd(ctx, common.RedisKeys.ThunderZoneIndex(state.WorkspaceID), state.PoolName) + return nil + }) + return err +} + +func (r *RedisRepository) DeleteZone(ctx context.Context, workspaceID, poolName string) error { + _, err := r.rdb.TxPipelined(ctx, func(pipe redis.Pipeliner) error { + pipe.Del(ctx, common.RedisKeys.ThunderZone(workspaceID, poolName)) + pipe.SRem(ctx, common.RedisKeys.ThunderZoneIndex(workspaceID), poolName) + return nil + }) + return err +} + +func (r *RedisRepository) ListZones(ctx context.Context, workspaceID string) ([]*ZoneState, error) { + poolNames, err := r.rdb.SMembers(ctx, common.RedisKeys.ThunderZoneIndex(workspaceID)).Result() + if err != nil { + return nil, err + } + sort.Strings(poolNames) + keys := make([]string, 0, len(poolNames)) + for _, poolName := range poolNames { + keys = append(keys, common.RedisKeys.ThunderZone(workspaceID, poolName)) + } + return listJSON[ZoneState](ctx, r.rdb, keys) +} + +func (r *RedisRepository) getJSON(ctx context.Context, key string, out any) (bool, error) { + data, err := r.rdb.Get(ctx, key).Bytes() + if err != nil { + if errors.Is(err, redis.Nil) { + return false, nil + } + return false, err + } + return true, json.Unmarshal(data, out) +} + +func listJSON[T any](ctx context.Context, rdb *common.RedisClient, keys []string) ([]*T, error) { + if len(keys) == 0 { + return []*T{}, nil + } + values, err := rdb.MGet(ctx, keys...).Result() + if err != nil { + return nil, err + } + states := make([]*T, 0, len(values)) + for _, value := range values { + data, ok := jsonBytes(value) + if !ok { + continue + } + var state T + if err := json.Unmarshal(data, &state); err != nil { + return nil, err + } + states = append(states, &state) + } + return states, nil +} + +func jsonBytes(value any) ([]byte, bool) { + switch v := value.(type) { + case string: + return []byte(v), true + case []byte: + return v, true + default: + return nil, false + } +} + +var _ Repository = (*RedisRepository)(nil) diff --git a/pkg/gateway/services/thunder/db_test.go b/pkg/gateway/services/thunder/db_test.go new file mode 100644 index 000000000..e21b49a4b --- /dev/null +++ b/pkg/gateway/services/thunder/db_test.go @@ -0,0 +1,144 @@ +package thunder + +import ( + "context" + "testing" + + "github.com/alicebob/miniredis/v2" + "github.com/beam-cloud/beta9/pkg/common" + "github.com/beam-cloud/beta9/pkg/types" +) + +func TestRedisRepositoryClientEnrollment(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + repo := NewRedisRepository(rdb) + ctx := context.Background() + state := &ClientEnrollmentState{ + ContainerID: "container-1", + WorkspaceID: "workspace-1", + WorkerID: "worker-1", + MachineID: "machine-1", + PoolName: "pool-1", + EnrollmentTokenID: "token-1", + } + if err := repo.SaveClientEnrollment(ctx, state, 0); err != nil { + t.Fatalf("SaveClientEnrollment() error = %v", err) + } + + got, found, err := repo.GetClientEnrollment(ctx, state.ContainerID) + if err != nil || !found { + t.Fatalf("GetClientEnrollment() = found %v, err %v", found, err) + } + if got.EnrollmentTokenID != state.EnrollmentTokenID || got.WorkspaceID != state.WorkspaceID { + t.Fatalf("client enrollment = %+v", got) + } + + listed, err := repo.ListClientEnrollments(ctx) + if err != nil { + t.Fatalf("ListClientEnrollments() error = %v", err) + } + if len(listed) != 1 || listed[0].ContainerID != state.ContainerID { + t.Fatalf("listed client enrollments = %+v", listed) + } + + if err := repo.DeleteClientEnrollment(ctx, state.ContainerID); err != nil { + t.Fatalf("DeleteClientEnrollment() error = %v", err) + } + _, found, err = repo.GetClientEnrollment(ctx, state.ContainerID) + if err != nil || found { + t.Fatalf("GetClientEnrollment() after delete = found %v, err %v", found, err) + } +} + +func TestRedisRepositoryNodeEnrollment(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + repo := NewRedisRepository(rdb) + ctx := context.Background() + state := &NodeEnrollmentState{ + WorkspaceID: "workspace-1", + PoolName: "pool-1", + MachineID: "machine-1", + EnrollmentTokenID: "token-1", + } + if err := repo.SaveNodeEnrollment(ctx, state, 0); err != nil { + t.Fatalf("SaveNodeEnrollment() error = %v", err) + } + + got, found, err := repo.GetNodeEnrollment(ctx, state.WorkspaceID, state.PoolName, state.MachineID) + if err != nil || !found { + t.Fatalf("GetNodeEnrollment() = found %v, err %v", found, err) + } + if got.EnrollmentTokenID != state.EnrollmentTokenID { + t.Fatalf("node enrollment = %+v", got) + } + + listed, err := repo.ListNodeEnrollments(ctx, state.WorkspaceID, state.PoolName) + if err != nil { + t.Fatalf("ListNodeEnrollments() error = %v", err) + } + if len(listed) != 1 || listed[0].MachineID != state.MachineID { + t.Fatalf("listed node enrollments = %+v", listed) + } + + if err := repo.DeleteNodeEnrollment(ctx, state.WorkspaceID, state.PoolName, state.MachineID); err != nil { + t.Fatalf("DeleteNodeEnrollment() error = %v", err) + } + _, found, err = repo.GetNodeEnrollment(ctx, state.WorkspaceID, state.PoolName, state.MachineID) + if err != nil || found { + t.Fatalf("GetNodeEnrollment() after delete = found %v, err %v", found, err) + } +} + +func TestRedisRepositoryZone(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + repo := NewRedisRepository(rdb) + ctx := context.Background() + state := &ZoneState{ + WorkspaceID: "workspace-1", + PoolName: "pool-1", + ThunderZoneID: "zone-1", + } + if err := repo.SaveZone(ctx, state); err != nil { + t.Fatalf("SaveZone() error = %v", err) + } + + got, found, err := repo.GetZone(ctx, state.WorkspaceID, state.PoolName) + if err != nil || !found { + t.Fatalf("GetZone() = found %v, err %v", found, err) + } + if got.ThunderZoneID != state.ThunderZoneID { + t.Fatalf("zone = %+v", got) + } + + listed, err := repo.ListZones(ctx, state.WorkspaceID) + if err != nil { + t.Fatalf("ListZones() error = %v", err) + } + if len(listed) != 1 || listed[0].PoolName != state.PoolName { + t.Fatalf("listed zones = %+v", listed) + } + + if err := repo.DeleteZone(ctx, state.WorkspaceID, state.PoolName); err != nil { + t.Fatalf("DeleteZone() error = %v", err) + } + _, found, err = repo.GetZone(ctx, state.WorkspaceID, state.PoolName) + if err != nil || found { + t.Fatalf("GetZone() after delete = found %v, err %v", found, err) + } +} + +func newThunderRedisClient(t *testing.T) *common.RedisClient { + t.Helper() + server := miniredis.RunT(t) + rdb, err := common.NewRedisClient(types.RedisConfig{Addrs: []string{server.Addr()}, Mode: types.RedisModeSingle}) + if err != nil { + t.Fatal(err) + } + return rdb +} diff --git a/pkg/gateway/services/thunder/service.go b/pkg/gateway/services/thunder/service.go new file mode 100644 index 000000000..76b40db1f --- /dev/null +++ b/pkg/gateway/services/thunder/service.go @@ -0,0 +1,446 @@ +package thunder + +import ( + "context" + "errors" + "fmt" + "net/http" + "strings" + + "github.com/beam-cloud/beta9/pkg/auth" + "github.com/beam-cloud/beta9/pkg/common" + model "github.com/beam-cloud/beta9/pkg/compute" + "github.com/beam-cloud/beta9/pkg/repository" + "github.com/beam-cloud/beta9/pkg/types" + pb "github.com/beam-cloud/beta9/proto" + "github.com/rs/zerolog/log" +) + +type ThunderClient interface { + CreateZone(ctx context.Context, displayName string) (*Zone, error) + CreateClientEnrollmentToken(ctx context.Context, zoneID, gpuType string, gpuCount int) (*EnrollmentToken, error) + CreateServerEnrollmentToken(ctx context.Context, zoneID string) (*EnrollmentToken, error) + DeleteEnrollmentTokenNode(ctx context.Context, enrollmentTokenID string) (*DeleteEnrollmentTokenNodeResponse, error) + ClientInstallCommand(enrollmentToken string) (string, error) +} + +type AgentStateValidator interface { + ResolveAgentState(ctx context.Context, agentToken string) (*model.AgentTokenState, error) +} + +type ServiceOpts struct { + Repository Repository + RedisClient *common.RedisClient + Client ThunderClient + ContainerRepo repository.ContainerRepository + WorkerRepo repository.WorkerRepository + AgentStateValidator AgentStateValidator +} + +type Service struct { + pb.UnimplementedThunderServiceServer + + repo Repository + client ThunderClient + containerRepo repository.ContainerRepository + workerRepo repository.WorkerRepository + agentValidator AgentStateValidator +} + +func NewService(opts ServiceOpts) (*Service, error) { + repo := opts.Repository + if repo == nil && opts.RedisClient != nil { + repo = NewRedisRepository(opts.RedisClient) + } + if repo == nil { + return nil, fmt.Errorf("Thunder repository is required") + } + + client := opts.Client + if client == nil { + client = NewClientFromEnv(nil) + } + if client == nil { + return nil, fmt.Errorf("Thunder client is required") + } + if opts.ContainerRepo == nil { + return nil, fmt.Errorf("container repository is required") + } + if opts.WorkerRepo == nil { + return nil, fmt.Errorf("worker repository is required") + } + + return &Service{ + repo: repo, + client: client, + containerRepo: opts.ContainerRepo, + workerRepo: opts.WorkerRepo, + agentValidator: opts.AgentStateValidator, + }, nil +} + +func (s *Service) CreateClientEnrollment(ctx context.Context, req *pb.CreateClientEnrollmentRequest) (*pb.CreateClientEnrollmentResponse, error) { + containerID := strings.TrimSpace(req.GetContainerId()) + if containerID == "" { + return &pb.CreateClientEnrollmentResponse{ErrorMsg: "container id is required"}, nil + } + if err := requireWorkerToken(ctx, ""); err != nil { + return &pb.CreateClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + attrs, err := s.clientEnrollmentAttrs(ctx, containerID) + if err != nil { + return &pb.CreateClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + if err := requireWorkerToken(ctx, attrs.workspaceID); err != nil { + return &pb.CreateClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + var installCommand string + err = s.repo.WithPoolLock(ctx, attrs.workspaceID, attrs.poolName, func(ctx context.Context) error { + var previousEnrollmentTokenID string + if existing, found, err := s.repo.GetClientEnrollment(ctx, containerID); err != nil { + return err + } else if found { + previousEnrollmentTokenID = strings.TrimSpace(existing.EnrollmentTokenID) + } + + zoneID, err := s.ensureZoneLocked(ctx, attrs.workspaceID, attrs.poolName) + if err != nil { + return err + } + + enrollment, err := s.client.CreateClientEnrollmentToken(ctx, zoneID, attrs.gpuType, attrs.gpuCount) + if err != nil { + return err + } + if enrollment == nil || strings.TrimSpace(enrollment.EnrollmentTokenID) == "" || strings.TrimSpace(enrollment.EnrollmentToken) == "" { + return fmt.Errorf("Thunder client enrollment response was incomplete") + } + installCommand, err = s.client.ClientInstallCommand(enrollment.EnrollmentToken) + if err != nil { + return err + } + if err := s.repo.SaveClientEnrollment(ctx, &ClientEnrollmentState{ + ContainerID: containerID, + WorkspaceID: attrs.workspaceID, + WorkerID: attrs.workerID, + MachineID: attrs.machineID, + PoolName: attrs.poolName, + EnrollmentTokenID: enrollment.EnrollmentTokenID, + }, 0); err != nil { + if _, deleteErr := s.client.DeleteEnrollmentTokenNode(ctx, enrollment.EnrollmentTokenID); deleteErr != nil && !isThunderNotFound(deleteErr) { + return fmt.Errorf("failed to save Thunder client enrollment: %w; additionally failed to revoke Thunder enrollment token %q: %v", err, enrollment.EnrollmentTokenID, deleteErr) + } + return err + } + s.revokePreviousEnrollmentToken(ctx, previousEnrollmentTokenID, enrollment.EnrollmentTokenID, attrs.workspaceID, attrs.poolName, "container", containerID) + return nil + }) + if err != nil { + return &pb.CreateClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + return &pb.CreateClientEnrollmentResponse{Ok: true, InstallCommand: installCommand}, nil +} + +func (s *Service) revokePreviousEnrollmentToken(ctx context.Context, previousEnrollmentTokenID, currentEnrollmentTokenID, workspaceID, poolName, ownerType, ownerID string) { + previousEnrollmentTokenID = strings.TrimSpace(previousEnrollmentTokenID) + currentEnrollmentTokenID = strings.TrimSpace(currentEnrollmentTokenID) + if previousEnrollmentTokenID == "" || previousEnrollmentTokenID == currentEnrollmentTokenID { + return + } + if _, err := s.client.DeleteEnrollmentTokenNode(ctx, previousEnrollmentTokenID); err != nil && !isThunderNotFound(err) { + log.Warn(). + Err(err). + Str("workspace_id", workspaceID). + Str("pool_name", poolName). + Str("owner_type", ownerType). + Str("owner_id", ownerID). + Str("enrollment_token_id", previousEnrollmentTokenID). + Msg("failed to revoke previous Thunder enrollment token") + } +} + +func (s *Service) DeleteClientEnrollment(ctx context.Context, req *pb.DeleteClientEnrollmentRequest) (*pb.DeleteClientEnrollmentResponse, error) { + containerID := strings.TrimSpace(req.GetContainerId()) + if containerID == "" { + return &pb.DeleteClientEnrollmentResponse{ErrorMsg: "container id is required"}, nil + } + if err := requireWorkerToken(ctx, ""); err != nil { + return &pb.DeleteClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + state, found, err := s.repo.GetClientEnrollment(ctx, containerID) + if err != nil { + return &pb.DeleteClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + if !found { + return &pb.DeleteClientEnrollmentResponse{Ok: true}, nil + } + if err := requireWorkerToken(ctx, state.WorkspaceID); err != nil { + return &pb.DeleteClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + initialEnrollmentTokenID := strings.TrimSpace(state.EnrollmentTokenID) + err = s.repo.WithPoolLock(ctx, state.WorkspaceID, state.PoolName, func(ctx context.Context) error { + current, found, err := s.repo.GetClientEnrollment(ctx, containerID) + if err != nil { + return err + } + if !found { + return nil + } + if current.WorkspaceID != state.WorkspaceID || current.PoolName != state.PoolName { + return nil + } + if err := requireWorkerToken(ctx, current.WorkspaceID); err != nil { + return err + } + + currentEnrollmentTokenID := strings.TrimSpace(current.EnrollmentTokenID) + if currentEnrollmentTokenID != initialEnrollmentTokenID { + return nil + } + if currentEnrollmentTokenID != "" { + _, err = s.client.DeleteEnrollmentTokenNode(ctx, currentEnrollmentTokenID) + if err != nil && !isThunderNotFound(err) { + return err + } + } + return s.repo.DeleteClientEnrollment(ctx, containerID) + }) + if err != nil { + return &pb.DeleteClientEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + return &pb.DeleteClientEnrollmentResponse{Ok: true}, nil +} + +func (s *Service) CreateNodeEnrollment(ctx context.Context, req *pb.CreateNodeEnrollmentRequest) (*pb.CreateNodeEnrollmentResponse, error) { + agentState, err := s.requireAgentState(ctx, req.GetAgentToken()) + if err != nil { + return &pb.CreateNodeEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + var enrollmentToken string + err = s.repo.WithPoolLock(ctx, agentState.WorkspaceID, agentState.PoolName, func(ctx context.Context) error { + var previousEnrollmentTokenID string + if existing, found, err := s.repo.GetNodeEnrollment(ctx, agentState.WorkspaceID, agentState.PoolName, agentState.MachineID); err != nil { + return err + } else if found { + previousEnrollmentTokenID = strings.TrimSpace(existing.EnrollmentTokenID) + } + + zoneID, err := s.ensureZoneLocked(ctx, agentState.WorkspaceID, agentState.PoolName) + if err != nil { + return err + } + + enrollment, err := s.client.CreateServerEnrollmentToken(ctx, zoneID) + if err != nil { + return err + } + if enrollment == nil || strings.TrimSpace(enrollment.EnrollmentTokenID) == "" || strings.TrimSpace(enrollment.EnrollmentToken) == "" { + return fmt.Errorf("Thunder node enrollment response was incomplete") + } + if err := s.repo.SaveNodeEnrollment(ctx, &NodeEnrollmentState{ + WorkspaceID: agentState.WorkspaceID, + PoolName: agentState.PoolName, + MachineID: agentState.MachineID, + EnrollmentTokenID: enrollment.EnrollmentTokenID, + }, 0); err != nil { + if _, deleteErr := s.client.DeleteEnrollmentTokenNode(ctx, enrollment.EnrollmentTokenID); deleteErr != nil && !isThunderNotFound(deleteErr) { + return fmt.Errorf("failed to save Thunder node enrollment: %w; additionally failed to revoke Thunder enrollment token %q: %v", err, enrollment.EnrollmentTokenID, deleteErr) + } + return err + } + s.revokePreviousEnrollmentToken(ctx, previousEnrollmentTokenID, enrollment.EnrollmentTokenID, agentState.WorkspaceID, agentState.PoolName, "machine", agentState.MachineID) + enrollmentToken = enrollment.EnrollmentToken + return nil + }) + if err != nil { + return &pb.CreateNodeEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + return &pb.CreateNodeEnrollmentResponse{Ok: true, EnrollmentToken: enrollmentToken}, nil +} + +func (s *Service) DeleteNodeEnrollment(ctx context.Context, req *pb.DeleteNodeEnrollmentRequest) (*pb.DeleteNodeEnrollmentResponse, error) { + agentState, err := s.requireAgentState(ctx, req.GetAgentToken()) + if err != nil { + return &pb.DeleteNodeEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + + state, found, err := s.repo.GetNodeEnrollment(ctx, agentState.WorkspaceID, agentState.PoolName, agentState.MachineID) + if err != nil { + return &pb.DeleteNodeEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + if !found { + return &pb.DeleteNodeEnrollmentResponse{Ok: true}, nil + } + initialEnrollmentTokenID := strings.TrimSpace(state.EnrollmentTokenID) + + err = s.repo.WithPoolLock(ctx, agentState.WorkspaceID, agentState.PoolName, func(ctx context.Context) error { + current, found, err := s.repo.GetNodeEnrollment(ctx, agentState.WorkspaceID, agentState.PoolName, agentState.MachineID) + if err != nil { + return err + } + if !found { + return nil + } + + currentEnrollmentTokenID := strings.TrimSpace(current.EnrollmentTokenID) + if currentEnrollmentTokenID != initialEnrollmentTokenID { + return nil + } + if currentEnrollmentTokenID != "" { + _, err = s.client.DeleteEnrollmentTokenNode(ctx, currentEnrollmentTokenID) + if err != nil && !isThunderNotFound(err) { + return err + } + } + return s.repo.DeleteNodeEnrollment(ctx, agentState.WorkspaceID, agentState.PoolName, agentState.MachineID) + }) + if err != nil { + return &pb.DeleteNodeEnrollmentResponse{ErrorMsg: err.Error()}, nil + } + return &pb.DeleteNodeEnrollmentResponse{Ok: true}, nil +} + +type clientEnrollmentAttrs struct { + workspaceID string + workerID string + machineID string + poolName string + gpuType string + gpuCount int +} + +func (s *Service) clientEnrollmentAttrs(ctx context.Context, containerID string) (*clientEnrollmentAttrs, error) { + state, err := s.containerRepo.GetContainerState(containerID) + if err != nil { + return nil, err + } + if state == nil || state.ContainerId != containerID { + return nil, fmt.Errorf("container state not found") + } + if state.WorkspaceId == "" { + return nil, fmt.Errorf("container workspace is required") + } + if state.WorkerId == "" { + return nil, fmt.Errorf("container worker is required") + } + + worker, err := s.workerRepo.GetWorkerById(state.WorkerId) + if err != nil { + return nil, err + } + if worker == nil || worker.Id != state.WorkerId { + return nil, fmt.Errorf("worker state not found") + } + if worker.PoolName == "" { + return nil, fmt.Errorf("worker pool is required") + } + + machineID := strings.TrimSpace(state.MachineId) + if machineID == "" { + machineID = strings.TrimSpace(worker.MachineId) + } + gpuType := strings.ToLower(strings.TrimSpace(state.Gpu)) + if gpuType == "" || strings.EqualFold(gpuType, string(types.NO_GPU)) { + return nil, fmt.Errorf("container GPU type is required for Thunder client enrollment") + } + gpuCount := int(state.GpuCount) + if gpuCount <= 0 { + gpuCount = 1 + } + + return &clientEnrollmentAttrs{ + workspaceID: state.WorkspaceId, + workerID: state.WorkerId, + machineID: machineID, + poolName: worker.PoolName, + gpuType: gpuType, + gpuCount: gpuCount, + }, nil +} + +func (s *Service) ensureZone(ctx context.Context, workspaceID, poolName string) (string, error) { + var zoneID string + err := s.repo.WithPoolLock(ctx, workspaceID, poolName, func(ctx context.Context) error { + var err error + zoneID, err = s.ensureZoneLocked(ctx, workspaceID, poolName) + return err + }) + if err != nil { + return "", err + } + return zoneID, nil +} + +func (s *Service) ensureZoneLocked(ctx context.Context, workspaceID, poolName string) (string, error) { + state, found, err := s.repo.GetZone(ctx, workspaceID, poolName) + if err != nil { + return "", err + } + if found && state.ThunderZoneID != "" { + return state.ThunderZoneID, nil + } + + zone, err := s.client.CreateZone(ctx, thunderZoneDisplayName(workspaceID, poolName)) + if err != nil { + return "", err + } + if zone == nil || strings.TrimSpace(zone.ZoneID) == "" { + return "", fmt.Errorf("Thunder zone response did not include a zone id") + } + return zone.ZoneID, s.repo.SaveZone(ctx, &ZoneState{ + WorkspaceID: workspaceID, + PoolName: poolName, + ThunderZoneID: zone.ZoneID, + }) +} + +func thunderZoneDisplayName(workspaceID, poolName string) string { + workspaceID = strings.TrimSpace(workspaceID) + poolName = strings.TrimSpace(poolName) + if workspaceID == "" { + return poolName + } + if poolName == "" { + return workspaceID + } + return workspaceID + "-" + poolName +} + +func (s *Service) requireAgentState(ctx context.Context, agentToken string) (*model.AgentTokenState, error) { + agentToken = strings.TrimSpace(agentToken) + if agentToken == "" { + return nil, fmt.Errorf("agent token is required") + } + if s == nil || s.agentValidator == nil { + return nil, fmt.Errorf("agent state validator is unavailable") + } + return s.agentValidator.ResolveAgentState(ctx, agentToken) +} + +func requireWorkerToken(ctx context.Context, workspaceID string) error { + authInfo, ok := auth.AuthInfoFromContext(ctx) + if !ok || authInfo == nil || authInfo.Token == nil || !types.IsWorkerTokenType(authInfo.Token.TokenType) { + return fmt.Errorf("worker token is required") + } + if authInfo.Token.TokenType == types.TokenTypeWorkerPrivate { + if authInfo.Workspace == nil || authInfo.Workspace.ExternalId == "" { + return fmt.Errorf("worker token is not scoped to a workspace") + } + if workspaceID != "" && workspaceID != authInfo.Workspace.ExternalId { + return fmt.Errorf("worker token cannot access workspace %q", workspaceID) + } + } + return nil +} + +func isThunderNotFound(err error) bool { + var thunderErr *ThunderError + return errors.As(err, &thunderErr) && thunderErr.StatusCode == http.StatusNotFound +} diff --git a/pkg/gateway/services/thunder/service_test.go b/pkg/gateway/services/thunder/service_test.go new file mode 100644 index 000000000..068914edc --- /dev/null +++ b/pkg/gateway/services/thunder/service_test.go @@ -0,0 +1,854 @@ +package thunder + +import ( + "context" + "encoding/json" + "errors" + "net/http" + "net/http/httptest" + "strings" + "testing" + "time" + + "github.com/beam-cloud/beta9/pkg/auth" + model "github.com/beam-cloud/beta9/pkg/compute" + "github.com/beam-cloud/beta9/pkg/repository" + "github.com/beam-cloud/beta9/pkg/types" + pb "github.com/beam-cloud/beta9/proto" +) + +func TestServiceCreateAndDeleteClientEnrollment(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + containerRepo := repository.NewContainerRedisRepositoryForTest(rdb) + workerRepo := repository.NewWorkerRedisRepositoryForTest(rdb) + if err := workerRepo.AddWorker(&types.Worker{Id: "worker-1", PoolName: "pool-1", MachineId: "machine-1"}); err != nil { + t.Fatal(err) + } + if err := containerRepo.SetContainerState("container-1", &types.ContainerState{ + ContainerId: "container-1", + WorkspaceId: "workspace-1", + WorkerId: "worker-1", + MachineId: "machine-1", + Gpu: "H100", + GpuCount: 2, + }); err != nil { + t.Fatal(err) + } + + var createZoneCalls int + var createTokenCalls int + var deleteTokenCalls int + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if got := r.Header.Get("Authorization"); got != "Bearer central-token" { + t.Fatalf("authorization = %q", got) + } + switch { + case r.Method == http.MethodPost && r.URL.Path == thunderZonesPath: + createZoneCalls++ + var payload createZoneRequest + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload.DisplayName != "workspace-1-pool-1" { + t.Fatalf("zone displayName = %q", payload.DisplayName) + } + _ = json.NewEncoder(w).Encode(Zone{ZoneID: "zone-1", DisplayName: payload.DisplayName}) + case r.Method == http.MethodPost && r.URL.Path == thunderEnrollmentTokenPath: + createTokenCalls++ + payload := map[string]any{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload["zoneId"] != "zone-1" || payload["role"] != thunderEnrollmentRoleClient || payload["gpuType"] != "h100" || payload["gpuCount"] != float64(2) { + t.Fatalf("client enrollment payload = %+v", payload) + } + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "token-1", EnrollmentToken: "tr_client", ZoneID: "zone-1", Role: thunderEnrollmentRoleClient, GPUType: "h100", GPUCount: 2}) + case r.Method == http.MethodDelete && r.URL.Path == "/api/v1/enrollment-tokens/token-1/node": + deleteTokenCalls++ + _ = json.NewEncoder(w).Encode(DeleteEnrollmentTokenNodeResponse{EnrollmentTokenID: "token-1", Role: thunderEnrollmentRoleClient, NodeDeleted: true}) + default: + t.Fatalf("unexpected request = %s %s", r.Method, r.URL.Path) + } + })) + defer server.Close() + + service, err := NewService(ServiceOpts{ + Repository: NewRedisRepository(rdb), + Client: NewClient(server.URL, "central-token", server.Client()), + ContainerRepo: containerRepo, + WorkerRepo: workerRepo, + }) + if err != nil { + t.Fatal(err) + } + ctx := thunderWorkerAuthContext(types.TokenTypeWorker, "") + + createResp, err := service.CreateClientEnrollment(ctx, &pb.CreateClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if !createResp.Ok || createResp.ErrorMsg != "" { + t.Fatalf("CreateClientEnrollment() = %+v", createResp) + } + if !strings.Contains(createResp.InstallCommand, "THUNDER_CENTRAL_URL='"+server.URL+"'") || !strings.Contains(createResp.InstallCommand, "THUNDER_ENROLLMENT_TOKEN='tr_client'") { + t.Fatalf("install command = %q", createResp.InstallCommand) + } + if createZoneCalls != 1 || createTokenCalls != 1 { + t.Fatalf("createZoneCalls=%d createTokenCalls=%d", createZoneCalls, createTokenCalls) + } + + state, found, err := service.repo.GetClientEnrollment(context.Background(), "container-1") + if err != nil || !found { + t.Fatalf("GetClientEnrollment() found=%v err=%v", found, err) + } + if state.EnrollmentTokenID != "token-1" || state.WorkspaceID != "workspace-1" || state.PoolName != "pool-1" || state.MachineID != "machine-1" { + t.Fatalf("client enrollment state = %+v", state) + } + zone, found, err := service.repo.GetZone(context.Background(), "workspace-1", "pool-1") + if err != nil || !found { + t.Fatalf("GetZone() found=%v err=%v", found, err) + } + if zone.ThunderZoneID != "zone-1" { + t.Fatalf("zone = %+v", zone) + } + + deleteResp, err := service.DeleteClientEnrollment(ctx, &pb.DeleteClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if !deleteResp.Ok || deleteResp.ErrorMsg != "" { + t.Fatalf("DeleteClientEnrollment() = %+v", deleteResp) + } + if deleteTokenCalls != 1 { + t.Fatalf("deleteTokenCalls = %d", deleteTokenCalls) + } + _, found, err = service.repo.GetClientEnrollment(context.Background(), "container-1") + if err != nil || found { + t.Fatalf("GetClientEnrollment() after delete found=%v err=%v", found, err) + } +} + +func TestServiceCreateClientEnrollmentReusesExistingZone(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + containerRepo := repository.NewContainerRedisRepositoryForTest(rdb) + workerRepo := repository.NewWorkerRedisRepositoryForTest(rdb) + if err := workerRepo.AddWorker(&types.Worker{Id: "worker-1", PoolName: "pool-1", MachineId: "machine-1"}); err != nil { + t.Fatal(err) + } + if err := containerRepo.SetContainerState("container-1", &types.ContainerState{ + ContainerId: "container-1", + WorkspaceId: "workspace-1", + WorkerId: "worker-1", + Gpu: "A10G", + GpuCount: 1, + }); err != nil { + t.Fatal(err) + } + repo := NewRedisRepository(rdb) + if err := repo.SaveZone(context.Background(), &ZoneState{WorkspaceID: "workspace-1", PoolName: "pool-1", ThunderZoneID: "zone-existing"}); err != nil { + t.Fatal(err) + } + + var createZoneCalls int + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method == http.MethodPost && r.URL.Path == thunderZonesPath { + createZoneCalls++ + t.Fatal("CreateZone should not be called for an existing zone") + } + if r.Method != http.MethodPost || r.URL.Path != thunderEnrollmentTokenPath { + t.Fatalf("unexpected request = %s %s", r.Method, r.URL.Path) + } + payload := map[string]any{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload["zoneId"] != "zone-existing" { + t.Fatalf("zoneId = %v", payload["zoneId"]) + } + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "token-1", EnrollmentToken: "tr_client", ZoneID: "zone-existing", Role: thunderEnrollmentRoleClient}) + })) + defer server.Close() + + service, err := NewService(ServiceOpts{Repository: repo, Client: NewClient(server.URL, "central-token", server.Client()), ContainerRepo: containerRepo, WorkerRepo: workerRepo}) + if err != nil { + t.Fatal(err) + } + resp, err := service.CreateClientEnrollment(thunderWorkerAuthContext(types.TokenTypeWorker, ""), &pb.CreateClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" { + t.Fatalf("CreateClientEnrollment() = %+v", resp) + } + if createZoneCalls != 0 { + t.Fatalf("createZoneCalls = %d", createZoneCalls) + } +} + +func TestServiceCreateClientEnrollmentReplacesExistingToken(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + containerRepo := repository.NewContainerRedisRepositoryForTest(rdb) + workerRepo := repository.NewWorkerRedisRepositoryForTest(rdb) + if err := workerRepo.AddWorker(&types.Worker{Id: "worker-1", PoolName: "pool-1", MachineId: "machine-1"}); err != nil { + t.Fatal(err) + } + if err := containerRepo.SetContainerState("container-1", &types.ContainerState{ContainerId: "container-1", WorkspaceId: "workspace-1", WorkerId: "worker-1", MachineId: "machine-1", Gpu: "H100", GpuCount: 1}); err != nil { + t.Fatal(err) + } + repo := NewRedisRepository(rdb) + if err := repo.SaveZone(context.Background(), &ZoneState{WorkspaceID: "workspace-1", PoolName: "pool-1", ThunderZoneID: "zone-existing"}); err != nil { + t.Fatal(err) + } + if err := repo.SaveClientEnrollment(context.Background(), &ClientEnrollmentState{ContainerID: "container-1", WorkspaceID: "workspace-1", WorkerID: "worker-1", MachineID: "machine-1", PoolName: "pool-1", EnrollmentTokenID: "token-old"}, 0); err != nil { + t.Fatal(err) + } + + var createTokenCalls int + var deleted []string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch { + case r.Method == http.MethodPost && r.URL.Path == thunderEnrollmentTokenPath: + createTokenCalls++ + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "token-new", EnrollmentToken: "tr_client_new", ZoneID: "zone-existing", Role: thunderEnrollmentRoleClient}) + case r.Method == http.MethodDelete && strings.HasPrefix(r.URL.Path, "/api/v1/enrollment-tokens/"): + deleted = append(deleted, strings.TrimSuffix(strings.TrimPrefix(r.URL.Path, "/api/v1/enrollment-tokens/"), "/node")) + _ = json.NewEncoder(w).Encode(DeleteEnrollmentTokenNodeResponse{NodeDeleted: true}) + default: + t.Fatalf("unexpected request = %s %s", r.Method, r.URL.Path) + } + })) + defer server.Close() + + service, err := NewService(ServiceOpts{Repository: repo, Client: NewClient(server.URL, "central-token", server.Client()), ContainerRepo: containerRepo, WorkerRepo: workerRepo}) + if err != nil { + t.Fatal(err) + } + resp, err := service.CreateClientEnrollment(thunderWorkerAuthContext(types.TokenTypeWorker, ""), &pb.CreateClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" || !strings.Contains(resp.InstallCommand, "tr_client_new") { + t.Fatalf("CreateClientEnrollment() = %+v", resp) + } + if createTokenCalls != 1 { + t.Fatalf("createTokenCalls = %d", createTokenCalls) + } + if len(deleted) != 1 || deleted[0] != "token-old" { + t.Fatalf("deleted tokens = %+v", deleted) + } + state, found, err := repo.GetClientEnrollment(context.Background(), "container-1") + if err != nil || !found { + t.Fatalf("GetClientEnrollment() found=%v err=%v", found, err) + } + if state.EnrollmentTokenID != "token-new" { + t.Fatalf("client enrollment state = %+v", state) + } +} + +func TestServiceCreateClientEnrollmentSucceedsWhenPreviousTokenRevokeFails(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + containerRepo := repository.NewContainerRedisRepositoryForTest(rdb) + workerRepo := repository.NewWorkerRedisRepositoryForTest(rdb) + if err := workerRepo.AddWorker(&types.Worker{Id: "worker-1", PoolName: "pool-1", MachineId: "machine-1"}); err != nil { + t.Fatal(err) + } + if err := containerRepo.SetContainerState("container-1", &types.ContainerState{ContainerId: "container-1", WorkspaceId: "workspace-1", WorkerId: "worker-1", MachineId: "machine-1", Gpu: "H100", GpuCount: 1}); err != nil { + t.Fatal(err) + } + repo := NewRedisRepository(rdb) + if err := repo.SaveZone(context.Background(), &ZoneState{WorkspaceID: "workspace-1", PoolName: "pool-1", ThunderZoneID: "zone-existing"}); err != nil { + t.Fatal(err) + } + if err := repo.SaveClientEnrollment(context.Background(), &ClientEnrollmentState{ContainerID: "container-1", WorkspaceID: "workspace-1", WorkerID: "worker-1", MachineID: "machine-1", PoolName: "pool-1", EnrollmentTokenID: "token-old"}, 0); err != nil { + t.Fatal(err) + } + + client := &recordingThunderClient{ + clientEnrollment: &EnrollmentToken{EnrollmentTokenID: "token-new", EnrollmentToken: "tr_client_new", ZoneID: "zone-existing", Role: thunderEnrollmentRoleClient}, + installCommand: "curl install thunder", + deleteErr: errors.New("Thunder delete failed"), + } + service, err := NewService(ServiceOpts{Repository: repo, Client: client, ContainerRepo: containerRepo, WorkerRepo: workerRepo}) + if err != nil { + t.Fatal(err) + } + + resp, err := service.CreateClientEnrollment(thunderWorkerAuthContext(types.TokenTypeWorker, ""), &pb.CreateClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" || resp.InstallCommand != "curl install thunder" { + t.Fatalf("CreateClientEnrollment() = %+v", resp) + } + if len(client.deletedEnrollmentTokenIDs) != 1 || client.deletedEnrollmentTokenIDs[0] != "token-old" { + t.Fatalf("deleted enrollment token ids = %+v", client.deletedEnrollmentTokenIDs) + } + state, found, err := repo.GetClientEnrollment(context.Background(), "container-1") + if err != nil || !found { + t.Fatalf("GetClientEnrollment() found=%v err=%v", found, err) + } + if state.EnrollmentTokenID != "token-new" { + t.Fatalf("client enrollment state = %+v", state) + } +} + +func TestServiceCreateClientEnrollmentRequiresWorkerToken(t *testing.T) { + service := &Service{} + resp, err := service.CreateClientEnrollment(context.Background(), &pb.CreateClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if resp.Ok || !strings.Contains(resp.ErrorMsg, "worker token") { + t.Fatalf("CreateClientEnrollment() = %+v", resp) + } +} + +func TestServiceDeleteClientEnrollmentIsIdempotent(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + service, err := NewService(ServiceOpts{ + Repository: NewRedisRepository(rdb), + Client: NewClient("https://central.example", "central-token", nil), + ContainerRepo: repository.NewContainerRedisRepositoryForTest(rdb), + WorkerRepo: repository.NewWorkerRedisRepositoryForTest(rdb), + }) + if err != nil { + t.Fatal(err) + } + resp, err := service.DeleteClientEnrollment(thunderWorkerAuthContext(types.TokenTypeWorker, ""), &pb.DeleteClientEnrollmentRequest{ContainerId: "missing"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" { + t.Fatalf("DeleteClientEnrollment() = %+v", resp) + } +} + +func TestServicePrivateWorkerTokenIsWorkspaceScoped(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + containerRepo := repository.NewContainerRedisRepositoryForTest(rdb) + workerRepo := repository.NewWorkerRedisRepositoryForTest(rdb) + if err := workerRepo.AddWorker(&types.Worker{Id: "worker-1", PoolName: "pool-1"}); err != nil { + t.Fatal(err) + } + if err := containerRepo.SetContainerState("container-1", &types.ContainerState{ContainerId: "container-1", WorkspaceId: "workspace-1", WorkerId: "worker-1", Gpu: "H100", GpuCount: 1}); err != nil { + t.Fatal(err) + } + service, err := NewService(ServiceOpts{ + Repository: NewRedisRepository(rdb), + Client: NewClient("https://central.example", "central-token", nil), + ContainerRepo: containerRepo, + WorkerRepo: workerRepo, + }) + if err != nil { + t.Fatal(err) + } + + resp, err := service.CreateClientEnrollment(thunderWorkerAuthContext(types.TokenTypeWorkerPrivate, "workspace-2"), &pb.CreateClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if resp.Ok || !strings.Contains(resp.ErrorMsg, "workspace") { + t.Fatalf("CreateClientEnrollment() = %+v", resp) + } +} + +func TestServiceCreateAndDeleteNodeEnrollment(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + repo := NewRedisRepository(rdb) + agentToken := "agent-token" + validator := &fakeAgentStateValidator{state: &model.AgentTokenState{WorkspaceID: "workspace-1", PoolName: "pool-1", MachineID: "machine-1"}} + + var createZoneCalls int + var createTokenCalls int + var deleteTokenCalls int + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if got := r.Header.Get("Authorization"); got != "Bearer central-token" { + t.Fatalf("authorization = %q", got) + } + switch { + case r.Method == http.MethodPost && r.URL.Path == thunderZonesPath: + createZoneCalls++ + var payload createZoneRequest + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload.DisplayName != "workspace-1-pool-1" { + t.Fatalf("zone displayName = %q", payload.DisplayName) + } + _ = json.NewEncoder(w).Encode(Zone{ZoneID: "zone-1", DisplayName: payload.DisplayName}) + case r.Method == http.MethodPost && r.URL.Path == thunderEnrollmentTokenPath: + createTokenCalls++ + payload := map[string]any{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload["zoneId"] != "zone-1" || payload["role"] != thunderEnrollmentRoleServer { + t.Fatalf("node enrollment payload = %+v", payload) + } + if _, ok := payload["gpuType"]; ok { + t.Fatalf("node enrollment payload included gpuType: %+v", payload) + } + if _, ok := payload["gpuCount"]; ok { + t.Fatalf("node enrollment payload included gpuCount: %+v", payload) + } + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "node-token-1", EnrollmentToken: "tr_node", ZoneID: "zone-1", Role: thunderEnrollmentRoleServer}) + case r.Method == http.MethodDelete && r.URL.Path == "/api/v1/enrollment-tokens/node-token-1/node": + deleteTokenCalls++ + _ = json.NewEncoder(w).Encode(DeleteEnrollmentTokenNodeResponse{EnrollmentTokenID: "node-token-1", Role: thunderEnrollmentRoleServer, NodeDeleted: true}) + default: + t.Fatalf("unexpected request = %s %s", r.Method, r.URL.Path) + } + })) + defer server.Close() + + service, err := NewService(ServiceOpts{ + Repository: repo, + Client: NewClient(server.URL, "central-token", server.Client()), + ContainerRepo: repository.NewContainerRedisRepositoryForTest(rdb), + WorkerRepo: repository.NewWorkerRedisRepositoryForTest(rdb), + AgentStateValidator: validator, + }) + if err != nil { + t.Fatal(err) + } + + createResp, err := service.CreateNodeEnrollment(context.Background(), &pb.CreateNodeEnrollmentRequest{AgentToken: agentToken}) + if err != nil { + t.Fatal(err) + } + if !createResp.Ok || createResp.ErrorMsg != "" || createResp.EnrollmentToken != "tr_node" { + t.Fatalf("CreateNodeEnrollment() = %+v", createResp) + } + if createZoneCalls != 1 || createTokenCalls != 1 { + t.Fatalf("createZoneCalls=%d createTokenCalls=%d", createZoneCalls, createTokenCalls) + } + + state, found, err := repo.GetNodeEnrollment(context.Background(), "workspace-1", "pool-1", "machine-1") + if err != nil || !found { + t.Fatalf("GetNodeEnrollment() found=%v err=%v", found, err) + } + if state.EnrollmentTokenID != "node-token-1" { + t.Fatalf("node enrollment state = %+v", state) + } + zone, found, err := repo.GetZone(context.Background(), "workspace-1", "pool-1") + if err != nil || !found { + t.Fatalf("GetZone() found=%v err=%v", found, err) + } + if zone.ThunderZoneID != "zone-1" { + t.Fatalf("zone = %+v", zone) + } + + deleteResp, err := service.DeleteNodeEnrollment(context.Background(), &pb.DeleteNodeEnrollmentRequest{AgentToken: agentToken}) + if err != nil { + t.Fatal(err) + } + if !deleteResp.Ok || deleteResp.ErrorMsg != "" { + t.Fatalf("DeleteNodeEnrollment() = %+v", deleteResp) + } + if deleteTokenCalls != 1 { + t.Fatalf("deleteTokenCalls = %d", deleteTokenCalls) + } + _, found, err = repo.GetNodeEnrollment(context.Background(), "workspace-1", "pool-1", "machine-1") + if err != nil || found { + t.Fatalf("GetNodeEnrollment() after delete found=%v err=%v", found, err) + } +} + +func TestServiceCreateNodeEnrollmentReplacesExistingToken(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + repo := NewRedisRepository(rdb) + agentToken := "agent-token" + validator := &fakeAgentStateValidator{state: &model.AgentTokenState{WorkspaceID: "workspace-1", PoolName: "pool-1", MachineID: "machine-1"}} + if err := repo.SaveZone(context.Background(), &ZoneState{WorkspaceID: "workspace-1", PoolName: "pool-1", ThunderZoneID: "zone-existing"}); err != nil { + t.Fatal(err) + } + if err := repo.SaveNodeEnrollment(context.Background(), &NodeEnrollmentState{WorkspaceID: "workspace-1", PoolName: "pool-1", MachineID: "machine-1", EnrollmentTokenID: "node-token-old"}, 0); err != nil { + t.Fatal(err) + } + + var createTokenCalls int + var deleted []string + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch { + case r.Method == http.MethodPost && r.URL.Path == thunderEnrollmentTokenPath: + createTokenCalls++ + payload := map[string]any{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + t.Fatal(err) + } + if payload["zoneId"] != "zone-existing" || payload["role"] != thunderEnrollmentRoleServer { + t.Fatalf("node enrollment payload = %+v", payload) + } + _ = json.NewEncoder(w).Encode(EnrollmentToken{EnrollmentTokenID: "node-token-new", EnrollmentToken: "tr_node_new", ZoneID: "zone-existing", Role: thunderEnrollmentRoleServer}) + case r.Method == http.MethodDelete && strings.HasPrefix(r.URL.Path, "/api/v1/enrollment-tokens/"): + deleted = append(deleted, strings.TrimSuffix(strings.TrimPrefix(r.URL.Path, "/api/v1/enrollment-tokens/"), "/node")) + _ = json.NewEncoder(w).Encode(DeleteEnrollmentTokenNodeResponse{NodeDeleted: true}) + default: + t.Fatalf("unexpected request = %s %s", r.Method, r.URL.Path) + } + })) + defer server.Close() + + service, err := NewService(ServiceOpts{ + Repository: repo, + Client: NewClient(server.URL, "central-token", server.Client()), + ContainerRepo: repository.NewContainerRedisRepositoryForTest(rdb), + WorkerRepo: repository.NewWorkerRedisRepositoryForTest(rdb), + AgentStateValidator: validator, + }) + if err != nil { + t.Fatal(err) + } + resp, err := service.CreateNodeEnrollment(context.Background(), &pb.CreateNodeEnrollmentRequest{AgentToken: agentToken}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" || resp.EnrollmentToken != "tr_node_new" { + t.Fatalf("CreateNodeEnrollment() = %+v", resp) + } + if createTokenCalls != 1 { + t.Fatalf("createTokenCalls = %d", createTokenCalls) + } + if len(deleted) != 1 || deleted[0] != "node-token-old" { + t.Fatalf("deleted tokens = %+v", deleted) + } + state, found, err := repo.GetNodeEnrollment(context.Background(), "workspace-1", "pool-1", "machine-1") + if err != nil || !found { + t.Fatalf("GetNodeEnrollment() found=%v err=%v", found, err) + } + if state.EnrollmentTokenID != "node-token-new" { + t.Fatalf("node enrollment state = %+v", state) + } +} + +func TestServiceCreateNodeEnrollmentSucceedsWhenPreviousTokenRevokeFails(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + + repo := NewRedisRepository(rdb) + if err := repo.SaveZone(context.Background(), &ZoneState{WorkspaceID: "workspace-1", PoolName: "pool-1", ThunderZoneID: "zone-existing"}); err != nil { + t.Fatal(err) + } + if err := repo.SaveNodeEnrollment(context.Background(), &NodeEnrollmentState{WorkspaceID: "workspace-1", PoolName: "pool-1", MachineID: "machine-1", EnrollmentTokenID: "node-token-old"}, 0); err != nil { + t.Fatal(err) + } + + client := &recordingThunderClient{ + serverEnrollment: &EnrollmentToken{EnrollmentTokenID: "node-token-new", EnrollmentToken: "tr_node_new", ZoneID: "zone-existing", Role: thunderEnrollmentRoleServer}, + deleteErr: errors.New("Thunder delete failed"), + } + service, err := NewService(ServiceOpts{ + Repository: repo, + Client: client, + ContainerRepo: repository.NewContainerRedisRepositoryForTest(rdb), + WorkerRepo: repository.NewWorkerRedisRepositoryForTest(rdb), + AgentStateValidator: &fakeAgentStateValidator{state: &model.AgentTokenState{WorkspaceID: "workspace-1", PoolName: "pool-1", MachineID: "machine-1"}}, + }) + if err != nil { + t.Fatal(err) + } + + resp, err := service.CreateNodeEnrollment(context.Background(), &pb.CreateNodeEnrollmentRequest{AgentToken: "agent-token"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" || resp.EnrollmentToken != "tr_node_new" { + t.Fatalf("CreateNodeEnrollment() = %+v", resp) + } + if len(client.deletedEnrollmentTokenIDs) != 1 || client.deletedEnrollmentTokenIDs[0] != "node-token-old" { + t.Fatalf("deleted enrollment token ids = %+v", client.deletedEnrollmentTokenIDs) + } + state, found, err := repo.GetNodeEnrollment(context.Background(), "workspace-1", "pool-1", "machine-1") + if err != nil || !found { + t.Fatalf("GetNodeEnrollment() found=%v err=%v", found, err) + } + if state.EnrollmentTokenID != "node-token-new" { + t.Fatalf("node enrollment state = %+v", state) + } +} + +func TestServiceDeleteClientEnrollmentSkipsChangedTokenUnderPoolLock(t *testing.T) { + repo := &lockingThunderRepository{ + clientBeforeLock: &ClientEnrollmentState{ + ContainerID: "container-1", + WorkspaceID: "workspace-1", + PoolName: "pool-1", + EnrollmentTokenID: "token-old", + }, + clientInsideLock: &ClientEnrollmentState{ + ContainerID: "container-1", + WorkspaceID: "workspace-1", + PoolName: "pool-1", + EnrollmentTokenID: "token-new", + }, + } + client := &recordingThunderClient{} + service := &Service{repo: repo, client: client} + + resp, err := service.DeleteClientEnrollment(thunderWorkerAuthContext(types.TokenTypeWorker, ""), &pb.DeleteClientEnrollmentRequest{ContainerId: "container-1"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" { + t.Fatalf("DeleteClientEnrollment() = %+v", resp) + } + if repo.lockedWorkspaceID != "workspace-1" || repo.lockedPoolName != "pool-1" { + t.Fatalf("pool lock = workspace %q pool %q", repo.lockedWorkspaceID, repo.lockedPoolName) + } + if repo.clientGetCalls != 2 { + t.Fatalf("client get calls = %d", repo.clientGetCalls) + } + if repo.deletedClientID != "" { + t.Fatalf("deleted client id = %q", repo.deletedClientID) + } + if len(client.deletedEnrollmentTokenIDs) != 0 { + t.Fatalf("deleted enrollment token ids = %+v", client.deletedEnrollmentTokenIDs) + } +} + +func TestServiceDeleteNodeEnrollmentSkipsChangedTokenUnderPoolLock(t *testing.T) { + repo := &lockingThunderRepository{ + nodeBeforeLock: &NodeEnrollmentState{ + WorkspaceID: "workspace-1", + PoolName: "pool-1", + MachineID: "machine-1", + EnrollmentTokenID: "node-token-old", + }, + nodeInsideLock: &NodeEnrollmentState{ + WorkspaceID: "workspace-1", + PoolName: "pool-1", + MachineID: "machine-1", + EnrollmentTokenID: "node-token-new", + }, + } + client := &recordingThunderClient{} + service := &Service{ + repo: repo, + client: client, + agentValidator: &fakeAgentStateValidator{state: &model.AgentTokenState{WorkspaceID: "workspace-1", PoolName: "pool-1", MachineID: "machine-1"}}, + } + + resp, err := service.DeleteNodeEnrollment(context.Background(), &pb.DeleteNodeEnrollmentRequest{AgentToken: "agent-token"}) + if err != nil { + t.Fatal(err) + } + if !resp.Ok || resp.ErrorMsg != "" { + t.Fatalf("DeleteNodeEnrollment() = %+v", resp) + } + if repo.lockedWorkspaceID != "workspace-1" || repo.lockedPoolName != "pool-1" { + t.Fatalf("pool lock = workspace %q pool %q", repo.lockedWorkspaceID, repo.lockedPoolName) + } + if repo.nodeGetOutsideLockCalls != 1 { + t.Fatalf("node get outside lock calls = %d", repo.nodeGetOutsideLockCalls) + } + if repo.deletedNodeMachineID != "" { + t.Fatalf("deleted node machine id = %q", repo.deletedNodeMachineID) + } + if len(client.deletedEnrollmentTokenIDs) != 0 { + t.Fatalf("deleted enrollment token ids = %+v", client.deletedEnrollmentTokenIDs) + } +} + +func TestServiceCreateNodeEnrollmentRequiresValidAgentToken(t *testing.T) { + rdb := newThunderRedisClient(t) + defer rdb.Close() + service, err := NewService(ServiceOpts{ + Repository: NewRedisRepository(rdb), + Client: NewClient("https://central.example", "central-token", nil), + ContainerRepo: repository.NewContainerRedisRepositoryForTest(rdb), + WorkerRepo: repository.NewWorkerRedisRepositoryForTest(rdb), + AgentStateValidator: &fakeAgentStateValidator{err: errors.New("managed pool no longer exists")}, + }) + if err != nil { + t.Fatal(err) + } + resp, err := service.CreateNodeEnrollment(context.Background(), &pb.CreateNodeEnrollmentRequest{AgentToken: "missing"}) + if err != nil { + t.Fatal(err) + } + if resp.Ok || !strings.Contains(resp.ErrorMsg, "managed pool no longer exists") { + t.Fatalf("CreateNodeEnrollment() = %+v", resp) + } +} + +type recordingThunderClient struct { + zone *Zone + clientEnrollment *EnrollmentToken + serverEnrollment *EnrollmentToken + installCommand string + deleteErr error + deletedEnrollmentTokenIDs []string +} + +func (c *recordingThunderClient) CreateZone(ctx context.Context, displayName string) (*Zone, error) { + if c.zone == nil { + return nil, errors.New("unexpected CreateZone call") + } + zone := *c.zone + return &zone, nil +} + +func (c *recordingThunderClient) CreateClientEnrollmentToken(ctx context.Context, zoneID, gpuType string, gpuCount int) (*EnrollmentToken, error) { + if c.clientEnrollment == nil { + return nil, errors.New("unexpected CreateClientEnrollmentToken call") + } + enrollment := *c.clientEnrollment + return &enrollment, nil +} + +func (c *recordingThunderClient) CreateServerEnrollmentToken(ctx context.Context, zoneID string) (*EnrollmentToken, error) { + if c.serverEnrollment == nil { + return nil, errors.New("unexpected CreateServerEnrollmentToken call") + } + enrollment := *c.serverEnrollment + return &enrollment, nil +} + +func (c *recordingThunderClient) DeleteEnrollmentTokenNode(ctx context.Context, enrollmentTokenID string) (*DeleteEnrollmentTokenNodeResponse, error) { + c.deletedEnrollmentTokenIDs = append(c.deletedEnrollmentTokenIDs, enrollmentTokenID) + if c.deleteErr != nil { + return nil, c.deleteErr + } + return &DeleteEnrollmentTokenNodeResponse{EnrollmentTokenID: enrollmentTokenID, NodeDeleted: true}, nil +} + +func (c *recordingThunderClient) ClientInstallCommand(enrollmentToken string) (string, error) { + if c.installCommand == "" { + return "", errors.New("unexpected ClientInstallCommand call") + } + return c.installCommand, nil +} + +type lockingThunderRepository struct { + inLock bool + lockedWorkspaceID string + lockedPoolName string + clientGetCalls int + nodeGetOutsideLockCalls int + clientBeforeLock *ClientEnrollmentState + clientInsideLock *ClientEnrollmentState + nodeBeforeLock *NodeEnrollmentState + nodeInsideLock *NodeEnrollmentState + deletedClientID string + deletedNodeMachineID string +} + +func (r *lockingThunderRepository) WithPoolLock(ctx context.Context, workspaceID, poolName string, fn func(context.Context) error) error { + r.lockedWorkspaceID = workspaceID + r.lockedPoolName = poolName + r.inLock = true + defer func() { r.inLock = false }() + return fn(ctx) +} + +func (r *lockingThunderRepository) GetClientEnrollment(ctx context.Context, containerID string) (*ClientEnrollmentState, bool, error) { + r.clientGetCalls++ + state := r.clientBeforeLock + if r.inLock { + state = r.clientInsideLock + } + if state == nil { + return nil, false, nil + } + copy := *state + return ©, true, nil +} + +func (r *lockingThunderRepository) SaveClientEnrollment(ctx context.Context, state *ClientEnrollmentState, ttl time.Duration) error { + return errors.New("unexpected SaveClientEnrollment call") +} + +func (r *lockingThunderRepository) DeleteClientEnrollment(ctx context.Context, containerID string) error { + if !r.inLock { + return errors.New("DeleteClientEnrollment called outside pool lock") + } + r.deletedClientID = containerID + return nil +} + +func (r *lockingThunderRepository) ListClientEnrollments(ctx context.Context) ([]*ClientEnrollmentState, error) { + return nil, errors.New("unexpected ListClientEnrollments call") +} + +func (r *lockingThunderRepository) GetNodeEnrollment(ctx context.Context, workspaceID, poolName, machineID string) (*NodeEnrollmentState, bool, error) { + state := r.nodeBeforeLock + if !r.inLock { + r.nodeGetOutsideLockCalls++ + } else { + state = r.nodeInsideLock + } + if state == nil { + return nil, false, nil + } + copy := *state + return ©, true, nil +} + +func (r *lockingThunderRepository) SaveNodeEnrollment(ctx context.Context, state *NodeEnrollmentState, ttl time.Duration) error { + return errors.New("unexpected SaveNodeEnrollment call") +} + +func (r *lockingThunderRepository) DeleteNodeEnrollment(ctx context.Context, workspaceID, poolName, machineID string) error { + if !r.inLock { + return errors.New("DeleteNodeEnrollment called outside pool lock") + } + r.deletedNodeMachineID = machineID + return nil +} + +func (r *lockingThunderRepository) ListNodeEnrollments(ctx context.Context, workspaceID, poolName string) ([]*NodeEnrollmentState, error) { + return nil, errors.New("unexpected ListNodeEnrollments call") +} + +func (r *lockingThunderRepository) GetZone(ctx context.Context, workspaceID, poolName string) (*ZoneState, bool, error) { + return nil, false, errors.New("unexpected GetZone call") +} + +func (r *lockingThunderRepository) SaveZone(ctx context.Context, state *ZoneState) error { + return errors.New("unexpected SaveZone call") +} + +func (r *lockingThunderRepository) DeleteZone(ctx context.Context, workspaceID, poolName string) error { + return errors.New("unexpected DeleteZone call") +} + +func (r *lockingThunderRepository) ListZones(ctx context.Context, workspaceID string) ([]*ZoneState, error) { + return nil, errors.New("unexpected ListZones call") +} + +type fakeAgentStateValidator struct { + state *model.AgentTokenState + err error + token string +} + +func (v *fakeAgentStateValidator) ResolveAgentState(ctx context.Context, agentToken string) (*model.AgentTokenState, error) { + v.token = agentToken + if v.err != nil { + return nil, v.err + } + return v.state, nil +} + +func thunderWorkerAuthContext(tokenType, workspaceID string) context.Context { + authInfo := &auth.AuthInfo{Token: &types.Token{TokenType: tokenType}} + if workspaceID != "" { + authInfo.Workspace = &types.Workspace{ExternalId: workspaceID} + } + return auth.ContextWithAuthInfo(context.Background(), authInfo) +} diff --git a/pkg/gateway/services/thunder/thunder.proto b/pkg/gateway/services/thunder/thunder.proto new file mode 100644 index 000000000..779f6e6c3 --- /dev/null +++ b/pkg/gateway/services/thunder/thunder.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; + +package thunder; + +option go_package = "github.com/beam-cloud/beta9/proto"; + +service ThunderService { + rpc CreateClientEnrollment(CreateClientEnrollmentRequest) + returns (CreateClientEnrollmentResponse); + rpc DeleteClientEnrollment(DeleteClientEnrollmentRequest) + returns (DeleteClientEnrollmentResponse); +} + +message CreateClientEnrollmentRequest { string container_id = 1; } + +message CreateClientEnrollmentResponse { + bool ok = 1; + string error_msg = 2; + string install_command = 3; +} + +message DeleteClientEnrollmentRequest { string container_id = 1; } + +message DeleteClientEnrollmentResponse { + bool ok = 1; + string error_msg = 2; +} diff --git a/pkg/types/agent_worker.go b/pkg/types/agent_worker.go index 6e5ef7b00..e85154538 100644 --- a/pkg/types/agent_worker.go +++ b/pkg/types/agent_worker.go @@ -127,6 +127,7 @@ const ( WorkerMemoryEnv = "MEMORY_LIMIT" WorkerGPUEnv = "GPU_TYPE" WorkerGPUCountEnv = "GPU_COUNT" + WorkerGPUVirtualizedEnv = "WORKER_GPU_VIRTUALIZED" // The agent's GPU assignment ("all" or a device list); unlike // NVIDIA_VISIBLE_DEVICES it survives container toolkit rewrites. WorkerGPUDevicesEnv = "WORKER_GPU_DEVICES" diff --git a/pkg/types/config.go b/pkg/types/config.go index f433aa81a..8dfb9fbdf 100644 --- a/pkg/types/config.go +++ b/pkg/types/config.go @@ -463,6 +463,7 @@ type WorkerPoolConfig struct { ContainerRuntime string `key:"containerRuntime" json:"container_runtime"` // Pool-specific container runtime: "runc" or "gvisor" ContainerRuntimeConfig RuntimeConfig `key:"containerRuntimeConfig" json:"container_runtime_config"` // Pool-specific container runtime configuration CPUAffinityEnforced bool `key:"cpuAffinityEnforced" json:"cpu_affinity_enforced"` + GpuVirtualized bool `key:"gpuVirtualized" json:"gpu_virtualized"` ContainerStartConcurrency int `key:"containerStartConcurrency" json:"container_start_concurrency"` NetworkPreallocation *bool `key:"networkPreallocation" json:"network_preallocation"` NetworkSlotPoolSize int `key:"networkSlotPoolSize" json:"network_slot_pool_size"` diff --git a/pkg/worker/container_server.go b/pkg/worker/container_server.go index ce208f176..3ef39c308 100644 --- a/pkg/worker/container_server.go +++ b/pkg/worker/container_server.go @@ -59,6 +59,7 @@ type ContainerRuntimeServer struct { killedSandboxProcesses sync.Map containerRepoClient pb.ContainerRepositoryServiceClient containerNetworkManager ContainerNetwork + thunderSetupTracker *thunderSetupTracker imageClient *ImageClient runtime runtime.Runtime // The worker's configured runtime (from pool config) eventRepo processLogEventRepository @@ -81,6 +82,7 @@ type ContainerRuntimeServerOpts struct { ImageClient *ImageClient ContainerRepoClient pb.ContainerRepositoryServiceClient ContainerNetworkManager ContainerNetwork + ThunderSetupTracker *thunderSetupTracker EventRepo repository.EventRepository WorkerID string BackendRoute backendRouteFunc @@ -107,6 +109,7 @@ func NewContainerRuntimeServer(opts *ContainerRuntimeServerOpts) (*ContainerRunt imageClient: opts.ImageClient, containerRepoClient: opts.ContainerRepoClient, containerNetworkManager: opts.ContainerNetworkManager, + thunderSetupTracker: opts.ThunderSetupTracker, eventRepo: opts.EventRepo, workerID: opts.WorkerID, backendRoute: opts.BackendRoute, @@ -612,8 +615,6 @@ func (s *ContainerRuntimeServer) getHostPathFromContainerPath(containerPath stri // Sandbox methods follow (these are runtime-agnostic and work with the sandbox process manager) func (s *ContainerRuntimeServer) ContainerSandboxExec(ctx context.Context, in *pb.ContainerSandboxExecRequest) (*pb.ContainerSandboxExecResponse, error) { - log.Info().Str("container_id", in.ContainerId).Str("cmd", in.Cmd).Msg("running sandbox command") - parsedCmd, err := shlex.Split(in.Cmd) if err != nil { return &pb.ContainerSandboxExecResponse{Ok: false, ErrorMsg: err.Error()}, nil @@ -629,6 +630,10 @@ func (s *ContainerRuntimeServer) ContainerSandboxExec(ctx context.Context, in *p return &pb.ContainerSandboxExecResponse{Ok: false, ErrorMsg: err.Error()}, nil } + if err := s.thunderSetupTracker.Wait(ctx, in.ContainerId); err != nil { + return &pb.ContainerSandboxExecResponse{Ok: false, ErrorMsg: err.Error()}, nil + } + if instance.Spec == nil || instance.Spec.Process == nil { return &pb.ContainerSandboxExecResponse{Ok: false, ErrorMsg: "Container spec not ready"}, nil } @@ -641,6 +646,7 @@ func (s *ContainerRuntimeServer) ContainerSandboxExec(ctx context.Context, in *p env = append(env, formattedEnv...) + log.Info().Str("container_id", in.ContainerId).Str("cmd", in.Cmd).Msg("running sandbox command") return s.handleSandboxExec(ctx, in, instance, env, parsedCmd, in.Cwd) } diff --git a/pkg/worker/container_server_test.go b/pkg/worker/container_server_test.go index c1d038707..80e54b810 100644 --- a/pkg/worker/container_server_test.go +++ b/pkg/worker/container_server_test.go @@ -3,6 +3,7 @@ package worker import ( "context" "encoding/json" + "errors" "fmt" "os" "path/filepath" @@ -420,6 +421,66 @@ func TestContainerSandboxExecDoesNotPollRuntimeStateBeforeProcessManagerReady(t require.Equal(t, int32(0), rt.stateCalls.Load()) } +func TestContainerSandboxExecWaitsForThunderSetup(t *testing.T) { + containerId := "sandbox-test" + ready := make(chan struct{}) + close(ready) + tracker := newThunderSetupTracker() + tracker.Begin(containerId) + + server := &ContainerRuntimeServer{ + containerInstances: common.NewSafeMap[*ContainerInstance](), + thunderSetupTracker: tracker, + } + server.containerInstances.Set(containerId, &ContainerInstance{ + Id: containerId, + SandboxProcessManagerReady: true, + ProcessManagerReadyChan: ready, + Spec: &specs.Spec{Process: &specs.Process{}}, + }) + + ctx, cancel := context.WithTimeout(context.Background(), 25*time.Millisecond) + defer cancel() + resp, err := server.ContainerSandboxExec(ctx, &pb.ContainerSandboxExecRequest{ + ContainerId: containerId, + Cmd: "true", + }) + + require.NoError(t, err) + require.False(t, resp.Ok) + require.Contains(t, resp.ErrorMsg, "Thunder client setup did not complete") +} + +func TestContainerSandboxExecReturnsThunderSetupFailure(t *testing.T) { + containerId := "sandbox-test" + ready := make(chan struct{}) + close(ready) + tracker := newThunderSetupTracker() + tracker.Begin(containerId) + tracker.Complete(containerId, errors.New("install failed")) + + server := &ContainerRuntimeServer{ + containerInstances: common.NewSafeMap[*ContainerInstance](), + thunderSetupTracker: tracker, + } + server.containerInstances.Set(containerId, &ContainerInstance{ + Id: containerId, + SandboxProcessManagerReady: true, + ProcessManagerReadyChan: ready, + Spec: &specs.Spec{Process: &specs.Process{}}, + }) + + resp, err := server.ContainerSandboxExec(context.Background(), &pb.ContainerSandboxExecRequest{ + ContainerId: containerId, + Cmd: "true", + }) + + require.NoError(t, err) + require.False(t, resp.Ok) + require.Contains(t, resp.ErrorMsg, "Thunder client setup failed") + require.Contains(t, resp.ErrorMsg, "install failed") +} + func TestContainerSandboxStatusReportsPendingBeforeProcessManagerReady(t *testing.T) { containerId := "sandbox-test" server := &ContainerRuntimeServer{ diff --git a/pkg/worker/events.go b/pkg/worker/events.go index 34a1de5a2..2f430fb19 100644 --- a/pkg/worker/events.go +++ b/pkg/worker/events.go @@ -15,7 +15,7 @@ func (w *Worker) collectAndSendContainerMetrics(ctx context.Context, request *ty ticker := time.NewTicker(w.config.Monitoring.ContainerMetricsInterval) defer ticker.Stop() - monitor := NewProcessMonitor(containerPid, spec.Linux.Resources.Devices, w.containerGPUManager.GetContainerGPUDevices(request.ContainerId)) + monitor := NewProcessMonitor(containerPid, spec.Linux.Resources.Devices, w.gpuManagerForRequest(request).GetContainerGPUDevices(request.ContainerId)) monitor.Prime() lastCollectedAt := time.Now() diff --git a/pkg/worker/gpu_integration_test.go b/pkg/worker/gpu_integration_test.go index 380f0aca4..84326e00d 100644 --- a/pkg/worker/gpu_integration_test.go +++ b/pkg/worker/gpu_integration_test.go @@ -7,6 +7,7 @@ import ( "testing" common "github.com/beam-cloud/beta9/pkg/common" + "github.com/beam-cloud/beta9/pkg/types" "gvisor.dev/gvisor/pkg/sync" ) @@ -70,7 +71,7 @@ func TestIntegrationGPUIsolation(t *testing.T) { resolvedVisibleDevices: resolved, } - assigned, err := manager.AssignGPUDevices("test-container-1", 1) + assigned, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "test-container-1", GpuCount: 1}) if err != nil { t.Fatalf("AssignGPUDevices() failed: %v", err) } @@ -81,7 +82,7 @@ func TestIntegrationGPUIsolation(t *testing.T) { } // Step 7: Verify second allocation FAILS (only 1 GPU per worker) - _, err = manager.AssignGPUDevices("test-container-2", 1) + _, err = manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "test-container-2", GpuCount: 1}) if err == nil { t.Fatal("Second allocation should fail — only 1 GPU per worker") } diff --git a/pkg/worker/lifecycle.go b/pkg/worker/lifecycle.go index c301844d7..15e979059 100644 --- a/pkg/worker/lifecycle.go +++ b/pkg/worker/lifecycle.go @@ -184,8 +184,8 @@ func (s *Worker) clearContainer(containerId string, request *types.ContainerRequ } // De-allocate GPU devices so they are available for new containers - if request.Gpu != "" { - s.containerGPUManager.UnassignGPUDevices(containerId) + if request != nil && request.RequiresGPU() { + s.gpuManagerForRequest(request).UnassignGPUDevices(containerId) } // Tear down container network components - best effort @@ -269,6 +269,8 @@ func (s *Worker) markContainerStopping(containerId string) { } func (s *Worker) deleteContainer(containerId string) { + s.thunderSetupTracker.Delete(containerId) + if instance, exists := s.containerInstances.Get(containerId); exists && instance.SandboxProcessManager != nil { if err := instance.SandboxProcessManager.Cleanup(); err != nil { log.Debug().Str("container_id", containerId).Err(err).Msg("failed to cleanup sandbox process manager client") @@ -293,7 +295,7 @@ func (s *Worker) RunContainer(ctx context.Context, request *types.ContainerReque caps := s.runtime.Capabilities() - if request.RequiresGPU() && !caps.GPU { + if request.RequiresGPU() && !s.gpuVirtualizedForRequest(request) && !caps.GPU { return fmt.Errorf("runtime %s does not support GPU workloads", s.runtime.Name()) } @@ -308,6 +310,9 @@ func (s *Worker) RunContainer(ctx context.Context, request *types.ContainerReque } if request.Stub.Type.Kind() == types.StubTypeSandbox { instance.initializeProcessManagerReadiness() + if s.gpuVirtualizedForRequest(request) { + s.thunderSetupTracker.Begin(request.ContainerId) + } } } s.containerInstances.Set(containerId, instance) @@ -881,8 +886,8 @@ func (s *Worker) specFromRequest(request *types.ContainerRequest, options *Conta if runnerReadySignal { env = append(env, types.ContainerRunnerReadyPathEnv+"="+types.ContainerRunnerReadyPath) } - if request.Gpu != "" { - env = s.containerGPUManager.InjectEnvVars(env) + if request.RequiresGPU() { + env = s.gpuManagerForRequest(request).InjectEnvVars(env) } env = s.applyRuntimeEnvironmentOverrides(env, request, spec.Process.Args) @@ -930,6 +935,10 @@ func (s *Worker) specFromRequest(request *types.ContainerRequest, options *Conta } s.enableVolumeCaching(request, volumeCacheMap, spec) + if request.RequiresGPU() && s.gpuVirtualizedForRequest(request) { + spec.Mounts = s.gpuManagerForRequest(request).InjectMounts(spec.Mounts) + } + // Configure resolv.conf resolvMount := specs.Mount{ Type: "none", @@ -1245,11 +1254,13 @@ func (s *Worker) spawn(request *types.ContainerRequest, spec *specs.Spec, output return } - // Only inject GPU devices if runtime supports GPU - if request.RequiresGPU() && s.runtime.Capabilities().GPU { - // Assign n-number of GPUs to a container + // Virtualized GPU requests register with Thunder but never receive physical + // device mounts, CDI devices, or NVIDIA_VISIBLE_DEVICES pinning. + if request.RequiresGPU() && (s.gpuVirtualizedForRequest(request) || s.runtime.Capabilities().GPU) { + gpuManager := s.gpuManagerForRequest(request) + phaseStart = time.Now() - assignedDevices, err := s.containerGPUManager.AssignGPUDevices(request.ContainerId, request.GpuCount) + assignedDevices, err := gpuManager.AssignGPUDevices(request) metrics.RecordWorkerStartupPhase("gpu_assignment", time.Since(phaseStart), request, map[string]string{"success": fmt.Sprintf("%t", err == nil)}) s.recordStartupLifecycle(ctx, request, types.ContainerLifecycleGPUAssignment, phaseStart, err == nil, map[string]string{"gpu_count": fmt.Sprintf("%d", request.GpuCount)}) if err != nil { @@ -1257,25 +1268,25 @@ func (s *Worker) spawn(request *types.ContainerRequest, spec *specs.Spec, output return } - // Only use CDI if runtime supports it - if s.runtime.Capabilities().CDI { - cdiCache := cdi.GetDefaultCache() - devicesToInject := s.containerGPUManager.CDIDevices(assignedDevices) + if request.RequiresGPU() && !s.gpuVirtualizedForRequest(request) { + // Only use CDI if runtime supports it + if s.runtime.Capabilities().CDI { + cdiCache := cdi.GetDefaultCache() + devicesToInject := gpuManager.CDIDevices(assignedDevices) - unresolvable, err := cdiCache.InjectDevices(spec, devicesToInject...) - if err != nil { - log.Error().Str("container_id", request.ContainerId).Msgf("failed to inject devices: %v", err) - return - } - if len(unresolvable) > 0 { - log.Error().Str("container_id", request.ContainerId).Msgf("unresolvable devices: %v", unresolvable) - return + unresolvable, err := cdiCache.InjectDevices(spec, devicesToInject...) + if err != nil { + log.Error().Str("container_id", request.ContainerId).Msgf("failed to inject devices: %v", err) + return + } + if len(unresolvable) > 0 { + log.Error().Str("container_id", request.ContainerId).Msgf("unresolvable devices: %v", unresolvable) + return + } } } - // Pin env vars to the assigned devices regardless of CDI support; for - // non-CDI runtimes this is the only thing scoping the container's GPUs. - spec.Process.Env = s.containerGPUManager.InjectAssignedEnvVars(spec.Process.Env, assignedDevices) + spec.Process.Env = gpuManager.InjectAssignedEnvVars(spec.Process.Env, assignedDevices) } // Expose the bind ports @@ -1376,6 +1387,7 @@ func (s *Worker) spawn(request *types.ContainerRequest, spec *specs.Spec, output startedChan := make(chan int, 1) checkpointPIDChan := make(chan int, 1) monitorPIDChan := make(chan int, 1) + thunderInstallResult := make(chan error, 1) defer func() { // Close in reverse order of dependency @@ -1434,6 +1446,24 @@ func (s *Worker) spawn(request *types.ContainerRequest, spec *specs.Spec, output return } + if s.gpuVirtualizedForRequest(request) { + if err := s.installThunderClient(ctx, request); err != nil { + s.thunderSetupTracker.Complete(request.ContainerId, err) + log.Error().Err(err).Str("container_id", request.ContainerId).Msg("failed to install Thunder client") + s.stopContainer(request.ContainerId, false) + select { + case thunderInstallResult <- err: + default: + } + return + } + s.thunderSetupTracker.Complete(request.ContainerId, nil) + select { + case thunderInstallResult <- nil: + default: + } + } + if request.DockerEnabled { go s.startDockerDaemon(ctx, containerId, instance) } @@ -1457,7 +1487,7 @@ func (s *Worker) spawn(request *types.ContainerRequest, spec *specs.Spec, output s.setupOOMWatcher(ctx, containerId, pid, spec, request, outputLogger, &isOOMKilled) }() - exitCode, _ = s.runContainer(ctx, request, outputLogger, outputWriter, startedChan, checkpointPIDChan, opts.StartupStartedAt, opts.StartupPortBindings, opts.CheckpointFilesystemRestore) + exitCode, _ = s.runContainer(ctx, request, outputLogger, outputWriter, startedChan, checkpointPIDChan, thunderInstallResult, opts.StartupStartedAt, opts.StartupPortBindings, opts.CheckpointFilesystemRestore) stopReason := types.StopContainerReasonUnknown containerInstance, exists = s.containerInstances.Get(containerId) @@ -1574,7 +1604,7 @@ func eventStopReason(stopReason types.StopContainerReason) string { return string(stopReason) } -func (s *Worker) runContainer(ctx context.Context, request *types.ContainerRequest, outputLogger *slog.Logger, outputWriter *common.OutputWriter, startedChan chan int, checkpointPIDChan chan int, startupStartedAt time.Time, startupPortBindings []PortBinding, filesystemRestore *checkpointFilesystemRestore) (int, error) { +func (s *Worker) runContainer(ctx context.Context, request *types.ContainerRequest, outputLogger *slog.Logger, outputWriter *common.OutputWriter, startedChan chan int, checkpointPIDChan chan int, thunderInstallResult chan error, startupStartedAt time.Time, startupPortBindings []PortBinding, filesystemRestore *checkpointFilesystemRestore) (int, error) { phaseStart := time.Now() releaseStartupSlot := func() {} if s.containerStartSem != nil { @@ -1694,6 +1724,19 @@ func (s *Worker) runContainer(ctx context.Context, request *types.ContainerReque if !restoringCheckpoint { publishRuntimeStarted(pid) } + + if request.Stub.Type.Kind() == types.StubTypeSandbox && s.gpuVirtualizedForRequest(request) { + select { + case err := <-thunderInstallResult: + if err != nil { + return + } + case <-ctx.Done(): + return + } + } + + s.markContainerRunning(ctx, request, startupStartedAt) } startRuntimeStartedHandler := func() func() { diff --git a/pkg/worker/lifecycle_test.go b/pkg/worker/lifecycle_test.go index b9901c569..aff83ce5f 100644 --- a/pkg/worker/lifecycle_test.go +++ b/pkg/worker/lifecycle_test.go @@ -498,8 +498,9 @@ func TestSpecFromRequestEnforcesMemoryForGPUWithoutCPUQuota(t *testing.T) { MemoryEnforced: true, }, }}, - runtime: mockRuntime, - containerInstances: containerInstances, + runtime: mockRuntime, + containerInstances: containerInstances, + containerGPUManager: &testGPUManager{}, } spec, err := worker.specFromRequest(&types.ContainerRequest{ @@ -519,6 +520,29 @@ func TestSpecFromRequestEnforcesMemoryForGPUWithoutCPUQuota(t *testing.T) { require.Equal(t, int64(42*1024*1024*1024), *spec.Linux.Resources.Memory.Limit) } +func TestSpecFromRequestInjectsThunderMounts(t *testing.T) { + worker := &Worker{ + runtime: &mockRuntime{name: types.ContainerRuntimeGvisor.String()}, + containerThunderManager: NewContainerThunderManager(nil), + gpuVirtualized: true, + } + + spec, err := worker.specFromRequest(&types.ContainerRequest{ + ContainerId: "container-1", + EntryPoint: []string{"sleep", "60"}, + GpuRequest: []string{"H100"}, + GpuCount: 1, + Stub: types.StubWithRelated{Stub: types.Stub{ + Type: types.StubType(types.StubTypePodDeployment), + }}, + }, &ContainerOptions{BindPorts: []int{8001}}) + + require.NoError(t, err) + require.Contains(t, spec.Mounts, thunderBindMount("/usr/bin/nvidia-smi")) + require.Contains(t, spec.Mounts, thunderBindMount("/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1")) + require.Contains(t, spec.Mounts, thunderBindMount("/usr/lib/x86_64-linux-gnu/libcuda.so.1")) +} + func TestSpecFromRequestReturnsIndependentSpecs(t *testing.T) { worker := &Worker{runtime: &mockRuntime{name: types.ContainerRuntimeRunc.String()}} initialEnv := make([]string, 1, 8) @@ -580,9 +604,10 @@ func TestSpecFromRequestAppliesCPUAffinityToGPUWorkload(t *testing.T) { config: types.AppConfig{Worker: types.WorkerConfig{ ContainerResourceLimits: types.ContainerResourceLimitsConfig{CPUAffinityEnforced: true}, }}, - containerInstances: instances, - cpuLimit: 4000, - runtime: &mockRuntime{name: types.ContainerRuntimeRunc.String()}, + containerInstances: instances, + cpuLimit: 4000, + runtime: &mockRuntime{name: types.ContainerRuntimeRunc.String()}, + containerGPUManager: &testGPUManager{}, } request := &types.ContainerRequest{ ContainerId: "gpu-container", @@ -1287,6 +1312,7 @@ func TestRunContainerDoesNotCancelRuntimeRunWithWorkerContext(t *testing.T) { common.NewOutputWriter(func(string) {}), make(chan int, 1), make(chan int, 1), + nil, time.Now(), nil, nil, @@ -1372,6 +1398,7 @@ func TestRunContainerRestorePublishesAddressFromStartedHandler(t *testing.T) { common.NewOutputWriter(func(string) {}), make(chan int, 1), make(chan int, 1), + nil, time.Now(), []PortBinding{{HostPort: 30001, ContainerPort: 8001}}, nil, @@ -1506,6 +1533,7 @@ func TestRunContainerRestoreWaitsForRestoredRuntimeExit(t *testing.T) { common.NewOutputWriter(func(string) {}), make(chan int, 1), make(chan int, 1), + nil, time.Now(), []PortBinding{{HostPort: 30001, ContainerPort: 8001}}, nil, @@ -1695,6 +1723,7 @@ func TestRunContainerRestoreFailureCleansRuntimeBeforeFallback(t *testing.T) { common.NewOutputWriter(func(string) {}), make(chan int, 1), make(chan int, 1), + nil, time.Now(), []PortBinding{{HostPort: 30001, ContainerPort: 8001}}, nil, @@ -1762,6 +1791,7 @@ func TestRunContainerMaterializeFailureFallsBackWithoutRestore(t *testing.T) { common.NewOutputWriter(func(string) {}), make(chan int, 1), make(chan int, 1), + nil, time.Now(), []PortBinding{{HostPort: 30001, ContainerPort: 8001}}, nil, @@ -2372,7 +2402,42 @@ func envListToMap(env []string) map[string]string { return out } +type testGPUManager struct { + mounts []specs.Mount +} + +func (m *testGPUManager) AssignGPUDevices(request *types.ContainerRequest) ([]int, error) { + return []int{}, nil +} + +func (m *testGPUManager) GetContainerGPUDevices(containerId string) []int { + return []int{} +} + +func (m *testGPUManager) UnassignGPUDevices(containerId string) {} + +func (m *testGPUManager) CDIDevices(assignedDevices []int) []string { + return []string{} +} + +func (m *testGPUManager) InjectEnvVars(env []string) []string { + return env +} + +func (m *testGPUManager) InjectAssignedEnvVars(env []string, assignedDevices []int) []string { + return env +} + +func (m *testGPUManager) InjectMounts(mounts []specs.Mount) []specs.Mount { + return append(mounts, m.mounts...) +} + // Mock runtime for testing +type mockExecCall struct { + containerID string + proc specs.Process +} + type mockRuntime struct { name string capabilities runtime.Capabilities @@ -2380,6 +2445,8 @@ type mockRuntime struct { signals []syscall.Signal killOpts []*runtime.KillOpts killErr error + execCalls []mockExecCall + execErr error } func (m *mockRuntime) Name() string { @@ -2399,7 +2466,8 @@ func (m *mockRuntime) Run(ctx context.Context, containerID, bundlePath string, o } func (m *mockRuntime) Exec(ctx context.Context, containerID string, proc specs.Process, opts *runtime.ExecOpts) error { - return nil + m.execCalls = append(m.execCalls, mockExecCall{containerID: containerID, proc: proc}) + return m.execErr } func (m *mockRuntime) Kill(ctx context.Context, containerID string, sig syscall.Signal, opts *runtime.KillOpts) error { diff --git a/pkg/worker/nvidia.go b/pkg/worker/nvidia.go index dce87edfb..c577efc5c 100644 --- a/pkg/worker/nvidia.go +++ b/pkg/worker/nvidia.go @@ -47,7 +47,7 @@ var ( ) type GPUManager interface { - AssignGPUDevices(containerId string, gpuCount uint32) ([]int, error) + AssignGPUDevices(request *types.ContainerRequest) ([]int, error) GetContainerGPUDevices(containerId string) []int UnassignGPUDevices(containerId string) CDIDevices(assignedDevices []int) []string @@ -215,8 +215,8 @@ func (c *ContainerNvidiaManager) UnassignGPUDevices(containerId string) { c.gpuAllocationMap.Delete(containerId) } -func (c *ContainerNvidiaManager) AssignGPUDevices(containerId string, gpuCount uint32) ([]int, error) { - gpuIds, err := c.chooseDevices(containerId, gpuCount) +func (c *ContainerNvidiaManager) AssignGPUDevices(request *types.ContainerRequest) ([]int, error) { + gpuIds, err := c.chooseDevices(request.ContainerId, request.GpuCount) if err != nil { return nil, err } diff --git a/pkg/worker/nvidia_test.go b/pkg/worker/nvidia_test.go index 4ef59e308..9a7cbef6e 100644 --- a/pkg/worker/nvidia_test.go +++ b/pkg/worker/nvidia_test.go @@ -14,6 +14,7 @@ import ( "time" common "github.com/beam-cloud/beta9/pkg/common" + "github.com/beam-cloud/beta9/pkg/types" "github.com/opencontainers/runtime-spec/specs-go" "github.com/tj/assert" @@ -384,7 +385,7 @@ func TestAssignAndUnassignGPUDevices(t *testing.T) { // Assign 2 GPUs to a container gpuCount := 2 - assignedDevices, err := manager.AssignGPUDevices("container1", uint32(gpuCount)) + assignedDevices, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container1", GpuCount: uint32(gpuCount)}) if err != nil { t.Fatalf("Failed to assign GPU devices: %v", err) } @@ -402,7 +403,7 @@ func TestAssignAndUnassignGPUDevices(t *testing.T) { manager.UnassignGPUDevices("container1") // Try to assign 4 GPUs to another container, should succeed since the first 2 are unassigned - _, err = manager.AssignGPUDevices("container2", 4) + _, err = manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container2", GpuCount: 4}) if err != nil { t.Errorf("Failed to assign GPU devices to container2 after unassigning from container1: %v", err) } @@ -411,7 +412,7 @@ func TestAssignAndUnassignGPUDevices(t *testing.T) { func TestAssignEightGPUDevices(t *testing.T) { manager := NewContainerNvidiaManagerForTest(8) - assignedDevices, err := manager.AssignGPUDevices("container1", 8) + assignedDevices, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container1", GpuCount: 8}) if err != nil { t.Fatalf("AssignGPUDevices() error = %v", err) } @@ -430,7 +431,7 @@ func TestAssignMoreGPUsThanAvailable(t *testing.T) { // manager.statFunc = mockStat // Attempt to assign 5 GPUs to a container, which exceeds the available count - _, err := manager.AssignGPUDevices("container1", 5) + _, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container1", GpuCount: 5}) if err == nil { t.Errorf("Expected an error when requesting more GPUs than available, but got none") } @@ -526,19 +527,19 @@ func TestAssignGPUsToMultipleContainers(t *testing.T) { manager := NewContainerNvidiaManagerForTest(4) // Assume a machine with 4 GPUs // Assign 2 GPUs to the first container - _, err := manager.AssignGPUDevices("container1", 2) + _, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container1", GpuCount: 2}) if err != nil { t.Fatalf("Failed to assign GPUs to container1: %v", err) } // Attempt to assign 2 more GPUs to a second container - _, err = manager.AssignGPUDevices("container2", 2) + _, err = manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container2", GpuCount: 2}) if err != nil { t.Errorf("Failed to assign GPUs to container2: %v", err) } // Attempt to assign 1 more GPU to a third container, should fail - _, err = manager.AssignGPUDevices("container3", 1) + _, err = manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container3", GpuCount: 1}) if err == nil { t.Errorf("Expected failure when assigning GPUs to container3, but got none") } @@ -577,7 +578,7 @@ func TestConcurrentlyAssignGPUDevices(t *testing.T) { var err error for { - assignedDevices, err := manager.AssignGPUDevices(id, uint32(gpusPerContainer)) + assignedDevices, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: id, GpuCount: uint32(gpusPerContainer)}) if err != nil { attempt++ diff --git a/pkg/worker/repository.go b/pkg/worker/repository.go index 49cc56ffc..37efebbfa 100644 --- a/pkg/worker/repository.go +++ b/pkg/worker/repository.go @@ -61,6 +61,17 @@ func NewBackendRepositoryClient(ctx context.Context, config types.AppConfig, tok return pb.NewBackendRepositoryServiceClient(conn), nil } +// NewThunderServiceClient creates a new Thunder service client. +func NewThunderServiceClient(ctx context.Context, config types.AppConfig, token string) (pb.ThunderServiceClient, error) { + host := fmt.Sprintf("%s:%d", config.GatewayService.GRPC.ExternalHost, config.GatewayService.GRPC.ExternalPort) + conn, err := newGRPCConn(host, token) + if err != nil { + return nil, err + } + + return pb.NewThunderServiceClient(conn), nil +} + // newGRPCConn creates a new gRPC connection (with or without TLS/Auth) to the provided host func newGRPCConn(host string, token string) (*grpc.ClientConn, error) { creds := insecure.NewCredentials() diff --git a/pkg/worker/thunder.go b/pkg/worker/thunder.go new file mode 100644 index 000000000..d43bcddbf --- /dev/null +++ b/pkg/worker/thunder.go @@ -0,0 +1,294 @@ +package worker + +import ( + "context" + "fmt" + "strings" + "sync" + "time" + + common "github.com/beam-cloud/beta9/pkg/common" + "github.com/beam-cloud/beta9/pkg/types" + pb "github.com/beam-cloud/beta9/proto" + "github.com/opencontainers/runtime-spec/specs-go" + "github.com/rs/zerolog/log" +) + +const ( + thunderLibraryPath = "/etc/thunder/libthunder.so" + thunderNvidiaSMIPath = "/usr/bin/nvidia-smi" + thunderNvidiaMLLibraryPath = "/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1" + thunderCudaDriverLibraryPath = "/usr/lib/x86_64-linux-gnu/libcuda.so.1" +) + +type thunderSetupState int + +const ( + thunderSetupPending thunderSetupState = iota + thunderSetupReady + thunderSetupFailed +) + +type thunderSetupStatus struct { + done chan struct{} + once sync.Once + + mu sync.RWMutex + state thunderSetupState + err error +} + +func newThunderSetupStatus() *thunderSetupStatus { + return &thunderSetupStatus{ + done: make(chan struct{}), + state: thunderSetupPending, + } +} + +func (s *thunderSetupStatus) complete(err error) { + s.once.Do(func() { + s.mu.Lock() + defer s.mu.Unlock() + if err != nil { + s.state = thunderSetupFailed + s.err = err + } else { + s.state = thunderSetupReady + } + close(s.done) + }) +} + +func (s *thunderSetupStatus) wait(ctx context.Context) error { + select { + case <-s.done: + s.mu.RLock() + defer s.mu.RUnlock() + if s.state == thunderSetupFailed { + if s.err != nil { + return fmt.Errorf("Thunder client setup failed: %w", s.err) + } + return fmt.Errorf("Thunder client setup failed") + } + return nil + case <-ctx.Done(): + return fmt.Errorf("Thunder client setup did not complete: %w", ctx.Err()) + } +} + +type thunderSetupTracker struct { + mu sync.Mutex + statuses map[string]*thunderSetupStatus +} + +func newThunderSetupTracker() *thunderSetupTracker { + return &thunderSetupTracker{statuses: map[string]*thunderSetupStatus{}} +} + +func (t *thunderSetupTracker) Begin(containerId string) { + if t == nil || containerId == "" { + return + } + t.mu.Lock() + defer t.mu.Unlock() + if _, exists := t.statuses[containerId]; exists { + return + } + t.statuses[containerId] = newThunderSetupStatus() +} + +func (t *thunderSetupTracker) Complete(containerId string, err error) { + if t == nil || containerId == "" { + return + } + t.mu.Lock() + status, exists := t.statuses[containerId] + if !exists { + status = newThunderSetupStatus() + t.statuses[containerId] = status + } + t.mu.Unlock() + status.complete(err) +} + +func (t *thunderSetupTracker) Wait(ctx context.Context, containerId string) error { + if t == nil || containerId == "" { + return nil + } + t.mu.Lock() + status := t.statuses[containerId] + t.mu.Unlock() + if status == nil { + return nil + } + return status.wait(ctx) +} + +func (t *thunderSetupTracker) Delete(containerId string) { + if t == nil || containerId == "" { + return + } + t.mu.Lock() + status := t.statuses[containerId] + delete(t.statuses, containerId) + t.mu.Unlock() + if status != nil { + status.complete(fmt.Errorf("Thunder client setup cancelled")) + } +} + +type ContainerThunderManager struct { + client pb.ThunderServiceClient + installCache *common.SafeMap[string] +} + +func NewContainerThunderManager(client pb.ThunderServiceClient) *ContainerThunderManager { + return &ContainerThunderManager{ + client: client, + installCache: common.NewSafeMap[string](), + } +} + +func (c *ContainerThunderManager) AssignGPUDevices(request *types.ContainerRequest) ([]int, error) { + if request == nil { + return nil, fmt.Errorf("missing container request") + } + if c == nil || c.client == nil { + return nil, fmt.Errorf("Thunder service client is required for virtualized GPU requests") + } + containerID := strings.TrimSpace(request.ContainerId) + if containerID == "" { + return nil, fmt.Errorf("container id is required for Thunder client enrollment") + } + + log.Info().Str("container_id", containerID).Msg("requesting Thunder client enrollment") + response, err := handleGRPCResponse(c.client.CreateClientEnrollment(context.Background(), &pb.CreateClientEnrollmentRequest{ContainerId: containerID})) + if err != nil { + log.Error().Str("container_id", containerID).Err(err).Msg("failed to assign Thunder virtual GPU") + return nil, err + } + installCommand := strings.TrimSpace(response.InstallCommand) + if installCommand == "" { + return nil, fmt.Errorf("Thunder client enrollment did not include an install command") + } + c.installCache.Set(containerID, installCommand) + + log.Info().Str("container_id", containerID).Msg("assigned Thunder virtual GPU") + return []int{}, nil +} + +func (c *ContainerThunderManager) GetContainerGPUDevices(containerId string) []int { + return []int{} +} + +func (c *ContainerThunderManager) UnassignGPUDevices(containerId string) { + containerId = strings.TrimSpace(containerId) + if containerId == "" { + return + } + if c == nil || c.client == nil { + log.Error().Str("container_id", containerId).Msg("Thunder service client unavailable for virtual GPU unassign") + return + } + + log.Info().Str("container_id", containerId).Msg("unassigning Thunder virtual GPU") + if _, err := handleGRPCResponse(c.client.DeleteClientEnrollment(context.Background(), &pb.DeleteClientEnrollmentRequest{ContainerId: containerId})); err != nil { + log.Error().Str("container_id", containerId).Err(err).Msg("failed to unregister Thunder virtual GPU client") + } else { + log.Info().Str("container_id", containerId).Msg("unassigned Thunder virtual GPU") + } + c.installCache.Delete(containerId) +} + +func (c *ContainerThunderManager) CDIDevices(assignedDevices []int) []string { + return []string{} +} + +func (c *ContainerThunderManager) InjectEnvVars(env []string) []string { + return withLDPreload((&ContainerNvidiaManager{}).InjectEnvVars(env), thunderLibraryPath) +} + +func (c *ContainerThunderManager) InjectAssignedEnvVars(env []string, assignedDevices []int) []string { + return env +} + +func (c *ContainerThunderManager) InjectMounts(mounts []specs.Mount) []specs.Mount { + mounts = (&ContainerNvidiaManager{}).InjectMounts(mounts) + mounts = append(mounts, thunderBindMount(thunderNvidiaSMIPath)) + mounts = append(mounts, thunderBindMount(thunderNvidiaMLLibraryPath)) + mounts = append(mounts, thunderBindMount(thunderCudaDriverLibraryPath)) + return mounts +} + +func thunderBindMount(path string) specs.Mount { + return specs.Mount{ + Type: "bind", + Source: path, + Destination: path, + Options: []string{ + "rbind", + "rprivate", + "nosuid", + "nodev", + "rw", + }, + } +} + +func (s *Worker) installThunderClient(ctx context.Context, request *types.ContainerRequest) error { + if s == nil || request == nil || !s.gpuVirtualizedForRequest(request) { + return nil + } + manager, ok := s.containerThunderManager.(*ContainerThunderManager) + if !ok || manager == nil { + return fmt.Errorf("thunder manager unavailable") + } + cmd, ok := manager.installCache.Get(request.ContainerId) + if !ok || strings.TrimSpace(cmd) == "" { + return fmt.Errorf("missing Thunder install command for container %s", request.ContainerId) + } + instance, ok := s.containerInstances.Get(request.ContainerId) + if !ok || instance == nil || instance.Runtime == nil { + return fmt.Errorf("container runtime unavailable for Thunder install") + } + + env := append([]string(nil), instance.Spec.Process.Env...) + if !containsEnvKey(env, "PATH") { + env = append(env, "PATH="+strings.Join(defaultContainerPath, ":")) + } + cwd := "/" + if instance.Spec != nil && instance.Spec.Process != nil { + if instance.Spec.Process.Cwd != "" { + cwd = instance.Spec.Process.Cwd + } + } + installCtx, cancel := context.WithTimeout(ctx, 2*time.Minute) + defer cancel() + log.Info().Str("container_id", request.ContainerId).Msg("installing Thunder client in sandbox") + if instance.SandboxProcessManager != nil && instance.SandboxProcessManagerReady { + if err := runSandboxProcessManagerCommand(installCtx, instance.SandboxProcessManager, []string{"sh", "-c", cmd}, cwd, env, "Thunder client install"); err != nil { + return fmt.Errorf("failed to install Thunder client: %w", err) + } + } else { + proc := specs.Process{ + Args: []string{"sh", "-c", cmd}, + Cwd: cwd, + Env: env, + } + if err := instance.Runtime.Exec(installCtx, request.ContainerId, proc, nil); err != nil { + return fmt.Errorf("failed to install Thunder client: %w", err) + } + } + log.Info().Str("container_id", request.ContainerId).Msg("installed Thunder client in sandbox") + return nil +} + +func containsEnvKey(env []string, key string) bool { + prefix := key + "=" + for _, item := range env { + if strings.HasPrefix(item, prefix) { + return true + } + } + return false +} diff --git a/pkg/worker/thunder_test.go b/pkg/worker/thunder_test.go new file mode 100644 index 000000000..83883a7d4 --- /dev/null +++ b/pkg/worker/thunder_test.go @@ -0,0 +1,244 @@ +package worker + +import ( + "context" + "errors" + "strings" + "testing" + "time" + + common "github.com/beam-cloud/beta9/pkg/common" + "github.com/beam-cloud/beta9/pkg/types" + pb "github.com/beam-cloud/beta9/proto" + "github.com/opencontainers/runtime-spec/specs-go" + "github.com/tj/assert" + "google.golang.org/grpc" +) + +func TestThunderSetupTrackerWaitsUntilComplete(t *testing.T) { + tracker := newThunderSetupTracker() + tracker.Begin("container-123") + + done := make(chan error, 1) + go func() { + done <- tracker.Wait(context.Background(), "container-123") + }() + + select { + case err := <-done: + t.Fatalf("wait returned before completion: %v", err) + case <-time.After(25 * time.Millisecond): + } + + tracker.Complete("container-123", nil) + requireNoErrorEventually(t, done) +} + +func TestThunderSetupTrackerReturnsFailure(t *testing.T) { + tracker := newThunderSetupTracker() + tracker.Begin("container-123") + tracker.Complete("container-123", errors.New("install failed")) + + err := tracker.Wait(context.Background(), "container-123") + assert.Error(t, err) + assert.Contains(t, err.Error(), "install failed") +} + +func TestThunderSetupTrackerDeleteWakesWaiters(t *testing.T) { + tracker := newThunderSetupTracker() + tracker.Begin("container-123") + tracker.mu.Lock() + status := tracker.statuses["container-123"] + tracker.mu.Unlock() + + done := make(chan error, 1) + go func() { + done <- status.wait(context.Background()) + }() + + tracker.Delete("container-123") + err := <-done + assert.Error(t, err) + assert.Contains(t, err.Error(), "cancelled") +} + +func requireNoErrorEventually(t *testing.T, done <-chan error) { + t.Helper() + select { + case err := <-done: + assert.NoError(t, err) + case <-time.After(time.Second): + t.Fatal("timed out waiting for Thunder setup wait") + } +} + +func TestThunderInjectEnvVarsAddsThunderLDPreload(t *testing.T) { + manager := NewContainerThunderManager(nil) + + env := manager.InjectEnvVars([]string{"A=1"}) + + assert.Contains(t, env, "LD_PRELOAD=/etc/thunder/libthunder.so") +} + +func TestThunderInjectEnvVarsAppendsThunderLDPreload(t *testing.T) { + manager := NewContainerThunderManager(nil) + + env := manager.InjectEnvVars([]string{"LD_PRELOAD=/lib/existing.so"}) + + assert.Contains(t, env, "LD_PRELOAD=/lib/existing.so:/etc/thunder/libthunder.so") +} + +func TestThunderInjectMountsAddsNvidiaSMINVMLAndCUDA(t *testing.T) { + manager := NewContainerThunderManager(nil) + initialMounts := []specs.Mount{{Type: "bind", Source: "/src", Destination: "/dst"}} + + mounts := manager.InjectMounts(initialMounts) + + assert.Contains(t, mounts, thunderBindMount("/usr/bin/nvidia-smi")) + assert.Contains(t, mounts, thunderBindMount("/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1")) + assert.Contains(t, mounts, thunderBindMount("/usr/lib/x86_64-linux-gnu/libcuda.so.1")) +} + +func TestThunderAssignCreatesClientEnrollmentAndCachesInstallCommand(t *testing.T) { + client := &fakeThunderServiceClient{ + createResp: &pb.CreateClientEnrollmentResponse{Ok: true, InstallCommand: "curl install thunder"}, + } + manager := NewContainerThunderManager(client) + request := &types.ContainerRequest{ContainerId: "container-123", GpuRequest: []string{"H100"}} + + assigned, err := manager.AssignGPUDevices(request) + if err != nil { + t.Fatal(err) + } + assert.Equal(t, []int{}, assigned) + if len(client.createReqs) != 1 || client.createReqs[0].ContainerId != "container-123" { + t.Fatalf("create requests = %+v", client.createReqs) + } + cmd, ok := manager.installCache.Get("container-123") + assert.True(t, ok) + assert.Equal(t, "curl install thunder", cmd) + + env := manager.InjectAssignedEnvVars([]string{"A=1", "NVIDIA_VISIBLE_DEVICES=void", "WORKER_GPU_DEVICES=0"}, assigned) + assert.Equal(t, []string{"A=1", "NVIDIA_VISIBLE_DEVICES=void", "WORKER_GPU_DEVICES=0"}, env) +} + +func TestThunderAssignReturnsGatewayError(t *testing.T) { + manager := NewContainerThunderManager(&fakeThunderServiceClient{ + createResp: &pb.CreateClientEnrollmentResponse{ErrorMsg: "gateway refused enrollment"}, + }) + + _, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container-123", GpuRequest: []string{"H100"}}) + if err == nil { + t.Fatal("expected Thunder enrollment error") + } + assert.Contains(t, err.Error(), "gateway refused enrollment") +} + +func TestThunderAssignRequiresServiceClient(t *testing.T) { + manager := NewContainerThunderManager(nil) + _, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container-123", GpuRequest: []string{"H100"}}) + if err == nil { + t.Fatal("expected missing Thunder client error") + } + assert.Contains(t, err.Error(), "Thunder service client") +} + +func TestThunderAssignRequiresInstallCommand(t *testing.T) { + manager := NewContainerThunderManager(&fakeThunderServiceClient{ + createResp: &pb.CreateClientEnrollmentResponse{Ok: true}, + }) + _, err := manager.AssignGPUDevices(&types.ContainerRequest{ContainerId: "container-123", GpuRequest: []string{"H100"}}) + if err == nil { + t.Fatal("expected missing install command error") + } + assert.Contains(t, err.Error(), "install command") +} + +func TestThunderUnassignDeletesClientEnrollment(t *testing.T) { + client := &fakeThunderServiceClient{ + deleteResp: &pb.DeleteClientEnrollmentResponse{Ok: true}, + } + manager := NewContainerThunderManager(client) + manager.installCache.Set("container-123", "curl install thunder") + + manager.UnassignGPUDevices("container-123") + + if len(client.deleteReqs) != 1 || client.deleteReqs[0].ContainerId != "container-123" { + t.Fatalf("delete requests = %+v", client.deleteReqs) + } + _, ok := manager.installCache.Get("container-123") + assert.False(t, ok) +} + +func TestInstallThunderClientExecutesCachedInstaller(t *testing.T) { + rt := &mockRuntime{name: "runc"} + manager := NewContainerThunderManager(nil) + manager.installCache.Set("container-123", "curl -fsSL https://get.thundercompute.com/install.sh | sudo THUNDER_NOWARN=1 THUNDER_INSTALL_MODE=client THUNDER_CENTRAL_URL='https://gateway.example' THUNDER_ENROLLMENT_TOKEN='enroll-token' sh") + instances := common.NewSafeMap[*ContainerInstance]() + instances.Set("container-123", &ContainerInstance{ + Runtime: rt, + Spec: &specs.Spec{Process: &specs.Process{Cwd: "/workspace", Env: []string{"A=1"}}}, + }) + worker := &Worker{ + containerThunderManager: manager, + containerInstances: instances, + gpuVirtualized: true, + } + + err := worker.installThunderClient(context.Background(), &types.ContainerRequest{ContainerId: "container-123", GpuRequest: []string{"H100"}}) + if err != nil { + t.Fatal(err) + } + if len(rt.execCalls) != 1 { + t.Fatalf("execCalls = %d, want 1", len(rt.execCalls)) + } + call := rt.execCalls[0] + assert.Equal(t, "container-123", call.containerID) + assert.Equal(t, "/workspace", call.proc.Cwd) + assert.Equal(t, []string{"sh", "-c", "curl -fsSL https://get.thundercompute.com/install.sh | sudo THUNDER_NOWARN=1 THUNDER_INSTALL_MODE=client THUNDER_CENTRAL_URL='https://gateway.example' THUNDER_ENROLLMENT_TOKEN='enroll-token' sh"}, call.proc.Args) + assert.Contains(t, call.proc.Env, "A=1") + assert.Contains(t, call.proc.Env, "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin") +} + +func TestInstallThunderClientRequiresCachedInstaller(t *testing.T) { + worker := &Worker{ + containerThunderManager: NewContainerThunderManager(nil), + containerInstances: common.NewSafeMap[*ContainerInstance](), + gpuVirtualized: true, + } + err := worker.installThunderClient(context.Background(), &types.ContainerRequest{ContainerId: "container-123", GpuRequest: []string{"H100"}}) + if err == nil || !strings.Contains(err.Error(), "install command") { + t.Fatalf("installThunderClient() error = %v", err) + } +} + +type fakeThunderServiceClient struct { + createResp *pb.CreateClientEnrollmentResponse + createErr error + createReqs []*pb.CreateClientEnrollmentRequest + deleteResp *pb.DeleteClientEnrollmentResponse + deleteErr error + deleteReqs []*pb.DeleteClientEnrollmentRequest +} + +func (f *fakeThunderServiceClient) CreateClientEnrollment(ctx context.Context, in *pb.CreateClientEnrollmentRequest, opts ...grpc.CallOption) (*pb.CreateClientEnrollmentResponse, error) { + f.createReqs = append(f.createReqs, in) + if f.createErr != nil { + return nil, f.createErr + } + if f.createResp != nil { + return f.createResp, nil + } + return &pb.CreateClientEnrollmentResponse{Ok: true, InstallCommand: "curl install thunder"}, nil +} + +func (f *fakeThunderServiceClient) DeleteClientEnrollment(ctx context.Context, in *pb.DeleteClientEnrollmentRequest, opts ...grpc.CallOption) (*pb.DeleteClientEnrollmentResponse, error) { + f.deleteReqs = append(f.deleteReqs, in) + if f.deleteErr != nil { + return nil, f.deleteErr + } + if f.deleteResp != nil { + return f.deleteResp, nil + } + return &pb.DeleteClientEnrollmentResponse{Ok: true}, nil +} diff --git a/pkg/worker/worker.go b/pkg/worker/worker.go index 23fdbf854..39aec2182 100644 --- a/pkg/worker/worker.go +++ b/pkg/worker/worker.go @@ -81,6 +81,7 @@ type Worker struct { memoryLimit int64 gpuType string gpuCount uint32 + gpuVirtualized bool podAddr string podHostName string routeLocalTargetHost string @@ -94,6 +95,8 @@ type Worker struct { criuManager CRIUManager containerNetworkManager ContainerNetwork containerGPUManager GPUManager + containerThunderManager GPUManager + thunderSetupTracker *thunderSetupTracker containerMountManager *ContainerMountManager imageClient *ImageClient containerInstances *common.SafeMap[*ContainerInstance] @@ -120,6 +123,17 @@ type Worker struct { config types.AppConfig } +func (w *Worker) gpuVirtualizedForRequest(request *types.ContainerRequest) bool { + return w != nil && w.gpuVirtualized && request != nil && request.RequiresGPU() +} + +func (w *Worker) gpuManagerForRequest(request *types.ContainerRequest) GPUManager { + if w.gpuVirtualizedForRequest(request) { + return w.containerThunderManager + } + return w.containerGPUManager +} + type ContainerInstance struct { Id string StubId string @@ -247,6 +261,7 @@ func NewWorker() (_ *Worker, err error) { if err != nil { return nil, err } + gpuVirtualized := envBool(types.WorkerGPUVirtualizedEnv) configManager, err := common.NewConfigManager[types.AppConfig]() if err != nil { @@ -269,6 +284,11 @@ func NewWorker() (_ *Worker, err error) { return nil, err } + thunderClient, err := NewThunderServiceClient(context.TODO(), config, workerToken) + if err != nil { + return nil, err + } + eventRepo := repo.NewWorkerEventClientRepo(config, workerRepoClient, workerId) poolConfig, poolFound := config.Worker.Pools[workerPoolName] @@ -400,6 +420,7 @@ func NewWorker() (_ *Worker, err error) { return nil, err } containerNetworkManager := newContainerNetwork(baseContainerNetworkManager, podAddr, persistent, machineID, routeTransport, routeLocalTargetHost) + thunderSetupTracker := newThunderSetupTracker() worker := &Worker{ ctx: ctx, @@ -416,6 +437,7 @@ func NewWorker() (_ *Worker, err error) { memoryLimit: memoryLimit, gpuType: gpuType, gpuCount: uint32(gpuCount), + gpuVirtualized: gpuVirtualized, runtime: defaultRuntime, runcRuntime: runcRuntime, gvisorRuntime: gvisorRuntime, @@ -423,6 +445,8 @@ func NewWorker() (_ *Worker, err error) { storageManager: storageManager, fileCacheManager: fileCacheManager, containerGPUManager: NewContainerNvidiaManager(uint32(gpuCount), defaultRuntime.Name()), + containerThunderManager: NewContainerThunderManager(thunderClient), + thunderSetupTracker: thunderSetupTracker, containerNetworkManager: containerNetworkManager, containerMountManager: NewContainerMountManager(config, poolConfig), podAddr: podAddr, @@ -460,6 +484,7 @@ func NewWorker() (_ *Worker, err error) { ImageClient: imageClient, ContainerRepoClient: containerRepoClient, ContainerNetworkManager: containerNetworkManager, + ThunderSetupTracker: thunderSetupTracker, EventRepo: eventRepo, WorkerID: workerId, BackendRoute: worker.backendRouteFor, @@ -553,7 +578,13 @@ containerRequestStream: if request.MachineId == "" { request.MachineId = s.machineID } - log.Info().Str("worker_id", s.workerId).Str("container_id", request.ContainerId).Msg("worker received container request") + log.Info(). + Str("worker_id", s.workerId). + Str("container_id", request.ContainerId). + Str("gpu", request.Gpu). + Uint32("gpu_count", request.GpuCount). + Bool("gpu_virtualized", s.gpuVirtualizedForRequest(request)). + Msg("worker received container request") if !request.Timestamp.IsZero() { s.recordContainerLifecycle(s.ctx, request, containerLifecycleFromDuration(types.ContainerLifecycleWorkerQueueReceive, request, request.Timestamp, time.Since(request.Timestamp), true, map[string]string{ "worker_id": s.workerId, @@ -666,6 +697,9 @@ func (s *Worker) reserveContainerInstance(request *types.ContainerRequest) bool } if request.Stub.Type.Kind() == types.StubTypeSandbox { instance.initializeProcessManagerReadiness() + if s.gpuVirtualizedForRequest(request) { + s.thunderSetupTracker.Begin(request.ContainerId) + } } s.containerInstances.Set(request.ContainerId, instance) diff --git a/pkg/worker/worker_test.go b/pkg/worker/worker_test.go index b167c17e2..d49a90bcf 100644 --- a/pkg/worker/worker_test.go +++ b/pkg/worker/worker_test.go @@ -19,6 +19,22 @@ import ( "google.golang.org/grpc" ) +func TestGpuManagerForRequestUsesWorkerVirtualizationFlag(t *testing.T) { + physical := &testGPUManager{} + thunder := &testGPUManager{} + worker := &Worker{ + gpuVirtualized: true, + containerGPUManager: physical, + containerThunderManager: thunder, + } + + require.Same(t, thunder, worker.gpuManagerForRequest(&types.ContainerRequest{GpuRequest: []string{"H100"}})) + require.Same(t, physical, worker.gpuManagerForRequest(&types.ContainerRequest{})) + + worker.gpuVirtualized = false + require.Same(t, physical, worker.gpuManagerForRequest(&types.ContainerRequest{GpuRequest: []string{"H100"}})) +} + type shutdownSignalRuntime struct { mockRuntime mu sync.Mutex diff --git a/proto/container_repo.pb.go b/proto/container_repo.pb.go index a4473526e..66b37d836 100644 --- a/proto/container_repo.pb.go +++ b/proto/container_repo.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.25.1 +// protoc v3.21.12 // source: container_repo.proto package proto diff --git a/proto/container_repo_grpc.pb.go b/proto/container_repo_grpc.pb.go index b8ef145ce..5d3ae449a 100644 --- a/proto/container_repo_grpc.pb.go +++ b/proto/container_repo_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.1 +// - protoc v3.21.12 // source: container_repo.proto package proto diff --git a/proto/gateway.pb.go b/proto/gateway.pb.go index f06602cb0..57d5402a8 100644 --- a/proto/gateway.pb.go +++ b/proto/gateway.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.25.1 +// protoc-gen-go v1.36.11 +// protoc v3.21.12 // source: gateway.proto package proto @@ -13,6 +13,7 @@ import ( timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -72,18 +73,16 @@ func (SyncContainerWorkspaceOperation) EnumDescriptor() ([]byte, []int) { } type AuthorizeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AuthorizeRequest) Reset() { *x = AuthorizeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeRequest) String() string { @@ -94,7 +93,7 @@ func (*AuthorizeRequest) ProtoMessage() {} func (x *AuthorizeRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -110,23 +109,20 @@ func (*AuthorizeRequest) Descriptor() ([]byte, []int) { } type AuthorizeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + NewToken string `protobuf:"bytes,3,opt,name=new_token,json=newToken,proto3" json:"new_token,omitempty"` + ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - NewToken string `protobuf:"bytes,3,opt,name=new_token,json=newToken,proto3" json:"new_token,omitempty"` - ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AuthorizeResponse) Reset() { *x = AuthorizeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AuthorizeResponse) String() string { @@ -137,7 +133,7 @@ func (*AuthorizeResponse) ProtoMessage() {} func (x *AuthorizeResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -181,20 +177,17 @@ func (x *AuthorizeResponse) GetErrorMsg() string { } type SignPayloadRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` unknownFields protoimpl.UnknownFields - - Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SignPayloadRequest) Reset() { *x = SignPayloadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SignPayloadRequest) String() string { @@ -205,7 +198,7 @@ func (*SignPayloadRequest) ProtoMessage() {} func (x *SignPayloadRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -228,23 +221,20 @@ func (x *SignPayloadRequest) GetPayload() []byte { } type SignPayloadResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SignPayloadResponse) Reset() { *x = SignPayloadResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SignPayloadResponse) String() string { @@ -255,7 +245,7 @@ func (*SignPayloadResponse) ProtoMessage() {} func (x *SignPayloadResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -299,21 +289,18 @@ func (x *SignPayloadResponse) GetErrorMsg() string { } type ObjectMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ObjectMetadata) Reset() { *x = ObjectMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ObjectMetadata) String() string { @@ -324,7 +311,7 @@ func (*ObjectMetadata) ProtoMessage() {} func (x *ObjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -354,21 +341,18 @@ func (x *ObjectMetadata) GetSize() int64 { } type HeadObjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - SupportsPutHeaders bool `protobuf:"varint,2,opt,name=supports_put_headers,json=supportsPutHeaders,proto3" json:"supports_put_headers,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + SupportsPutHeaders bool `protobuf:"varint,2,opt,name=supports_put_headers,json=supportsPutHeaders,proto3" json:"supports_put_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeadObjectRequest) Reset() { *x = HeadObjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeadObjectRequest) String() string { @@ -379,7 +363,7 @@ func (*HeadObjectRequest) ProtoMessage() {} func (x *HeadObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -409,25 +393,22 @@ func (x *HeadObjectRequest) GetSupportsPutHeaders() bool { } type HeadObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - Exists bool `protobuf:"varint,2,opt,name=exists,proto3" json:"exists,omitempty"` - ObjectId string `protobuf:"bytes,3,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` - ObjectMetadata *ObjectMetadata `protobuf:"bytes,4,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` - ErrorMsg string `protobuf:"bytes,5,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` - UseWorkspaceStorage bool `protobuf:"varint,6,opt,name=use_workspace_storage,json=useWorkspaceStorage,proto3" json:"use_workspace_storage,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + Exists bool `protobuf:"varint,2,opt,name=exists,proto3" json:"exists,omitempty"` + ObjectId string `protobuf:"bytes,3,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` + ObjectMetadata *ObjectMetadata `protobuf:"bytes,4,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` + ErrorMsg string `protobuf:"bytes,5,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + UseWorkspaceStorage bool `protobuf:"varint,6,opt,name=use_workspace_storage,json=useWorkspaceStorage,proto3" json:"use_workspace_storage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HeadObjectResponse) Reset() { *x = HeadObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HeadObjectResponse) String() string { @@ -438,7 +419,7 @@ func (*HeadObjectResponse) ProtoMessage() {} func (x *HeadObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -496,24 +477,21 @@ func (x *HeadObjectResponse) GetUseWorkspaceStorage() bool { } type CreateObjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ObjectMetadata *ObjectMetadata `protobuf:"bytes,1,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` - Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` - Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` - Overwrite bool `protobuf:"varint,4,opt,name=overwrite,proto3" json:"overwrite,omitempty"` - SupportsPutHeaders bool `protobuf:"varint,5,opt,name=supports_put_headers,json=supportsPutHeaders,proto3" json:"supports_put_headers,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ObjectMetadata *ObjectMetadata `protobuf:"bytes,1,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` + Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` + Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + Overwrite bool `protobuf:"varint,4,opt,name=overwrite,proto3" json:"overwrite,omitempty"` + SupportsPutHeaders bool `protobuf:"varint,5,opt,name=supports_put_headers,json=supportsPutHeaders,proto3" json:"supports_put_headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateObjectRequest) Reset() { *x = CreateObjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateObjectRequest) String() string { @@ -524,7 +502,7 @@ func (*CreateObjectRequest) ProtoMessage() {} func (x *CreateObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -575,24 +553,21 @@ func (x *CreateObjectRequest) GetSupportsPutHeaders() bool { } type CreateObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` + PresignedUrl string `protobuf:"bytes,3,opt,name=presigned_url,json=presignedUrl,proto3" json:"presigned_url,omitempty"` + ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + PutHeaders map[string]string `protobuf:"bytes,5,rep,name=put_headers,json=putHeaders,proto3" json:"put_headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` - PresignedUrl string `protobuf:"bytes,3,opt,name=presigned_url,json=presignedUrl,proto3" json:"presigned_url,omitempty"` - ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` - PutHeaders map[string]string `protobuf:"bytes,5,rep,name=put_headers,json=putHeaders,proto3" json:"put_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *CreateObjectResponse) Reset() { *x = CreateObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateObjectResponse) String() string { @@ -603,7 +578,7 @@ func (*CreateObjectResponse) ProtoMessage() {} func (x *CreateObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -654,23 +629,20 @@ func (x *CreateObjectResponse) GetPutHeaders() map[string]string { } type PutObjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ObjectContent []byte `protobuf:"bytes,1,opt,name=object_content,json=objectContent,proto3" json:"object_content,omitempty"` - ObjectMetadata *ObjectMetadata `protobuf:"bytes,2,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` - Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` - Overwrite bool `protobuf:"varint,4,opt,name=overwrite,proto3" json:"overwrite,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ObjectContent []byte `protobuf:"bytes,1,opt,name=object_content,json=objectContent,proto3" json:"object_content,omitempty"` + ObjectMetadata *ObjectMetadata `protobuf:"bytes,2,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` + Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` + Overwrite bool `protobuf:"varint,4,opt,name=overwrite,proto3" json:"overwrite,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PutObjectRequest) Reset() { *x = PutObjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PutObjectRequest) String() string { @@ -681,7 +653,7 @@ func (*PutObjectRequest) ProtoMessage() {} func (x *PutObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -725,22 +697,19 @@ func (x *PutObjectRequest) GetOverwrite() bool { } type PutObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` + ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` - ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PutObjectResponse) Reset() { *x = PutObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PutObjectResponse) String() string { @@ -751,7 +720,7 @@ func (*PutObjectResponse) ProtoMessage() {} func (x *PutObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -788,25 +757,22 @@ func (x *PutObjectResponse) GetErrorMsg() string { } type SyncContainerWorkspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + NewPath string `protobuf:"bytes,3,opt,name=new_path,json=newPath,proto3" json:"new_path,omitempty"` + IsDir bool `protobuf:"varint,4,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` + Data []byte `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` + Op SyncContainerWorkspaceOperation `protobuf:"varint,6,opt,name=op,proto3,enum=gateway.SyncContainerWorkspaceOperation" json:"op,omitempty"` unknownFields protoimpl.UnknownFields - - ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - NewPath string `protobuf:"bytes,3,opt,name=new_path,json=newPath,proto3" json:"new_path,omitempty"` - IsDir bool `protobuf:"varint,4,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` - Data []byte `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` - Op SyncContainerWorkspaceOperation `protobuf:"varint,6,opt,name=op,proto3,enum=gateway.SyncContainerWorkspaceOperation" json:"op,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SyncContainerWorkspaceRequest) Reset() { *x = SyncContainerWorkspaceRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SyncContainerWorkspaceRequest) String() string { @@ -817,7 +783,7 @@ func (*SyncContainerWorkspaceRequest) ProtoMessage() {} func (x *SyncContainerWorkspaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -875,20 +841,17 @@ func (x *SyncContainerWorkspaceRequest) GetOp() SyncContainerWorkspaceOperation } type SyncContainerWorkspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SyncContainerWorkspaceResponse) Reset() { *x = SyncContainerWorkspaceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SyncContainerWorkspaceResponse) String() string { @@ -899,7 +862,7 @@ func (*SyncContainerWorkspaceResponse) ProtoMessage() {} func (x *SyncContainerWorkspaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -922,18 +885,16 @@ func (x *SyncContainerWorkspaceResponse) GetOk() bool { } type ListContainersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListContainersRequest) Reset() { *x = ListContainersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListContainersRequest) String() string { @@ -944,7 +905,7 @@ func (*ListContainersRequest) ProtoMessage() {} func (x *ListContainersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -960,22 +921,19 @@ func (*ListContainersRequest) Descriptor() ([]byte, []int) { } type ListContainersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Containers []*Container `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` + Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` + ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Containers []*Container `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` - Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` - ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListContainersResponse) Reset() { *x = ListContainersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListContainersResponse) String() string { @@ -986,7 +944,7 @@ func (*ListContainersResponse) ProtoMessage() {} func (x *ListContainersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1023,20 +981,17 @@ func (x *ListContainersResponse) GetErrorMsg() string { } type StopContainerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` unknownFields protoimpl.UnknownFields - - ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopContainerRequest) Reset() { *x = StopContainerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StopContainerRequest) String() string { @@ -1047,7 +1002,7 @@ func (*StopContainerRequest) ProtoMessage() {} func (x *StopContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1070,21 +1025,18 @@ func (x *StopContainerRequest) GetContainerId() string { } type StopContainerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopContainerResponse) Reset() { *x = StopContainerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StopContainerResponse) String() string { @@ -1095,7 +1047,7 @@ func (*StopContainerResponse) ProtoMessage() {} func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1125,20 +1077,17 @@ func (x *StopContainerResponse) GetErrorMsg() string { } type CheckpointContainerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` unknownFields protoimpl.UnknownFields - - ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CheckpointContainerRequest) Reset() { *x = CheckpointContainerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckpointContainerRequest) String() string { @@ -1149,7 +1098,7 @@ func (*CheckpointContainerRequest) ProtoMessage() {} func (x *CheckpointContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1172,22 +1121,19 @@ func (x *CheckpointContainerRequest) GetContainerId() string { } type CheckpointContainerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + CheckpointId string `protobuf:"bytes,2,opt,name=checkpoint_id,json=checkpointId,proto3" json:"checkpoint_id,omitempty"` + ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - CheckpointId string `protobuf:"bytes,2,opt,name=checkpoint_id,json=checkpointId,proto3" json:"checkpoint_id,omitempty"` - ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CheckpointContainerResponse) Reset() { *x = CheckpointContainerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CheckpointContainerResponse) String() string { @@ -1198,7 +1144,7 @@ func (*CheckpointContainerResponse) ProtoMessage() {} func (x *CheckpointContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1235,24 +1181,21 @@ func (x *CheckpointContainerResponse) GetErrorMsg() string { } type ContainerStreamMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Payload: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Payload: // // *ContainerStreamMessage_AttachRequest // *ContainerStreamMessage_SyncContainerWorkspace - Payload isContainerStreamMessage_Payload `protobuf_oneof:"payload"` + Payload isContainerStreamMessage_Payload `protobuf_oneof:"payload"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ContainerStreamMessage) Reset() { *x = ContainerStreamMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ContainerStreamMessage) String() string { @@ -1263,7 +1206,7 @@ func (*ContainerStreamMessage) ProtoMessage() {} func (x *ContainerStreamMessage) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1278,23 +1221,27 @@ func (*ContainerStreamMessage) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{19} } -func (m *ContainerStreamMessage) GetPayload() isContainerStreamMessage_Payload { - if m != nil { - return m.Payload +func (x *ContainerStreamMessage) GetPayload() isContainerStreamMessage_Payload { + if x != nil { + return x.Payload } return nil } func (x *ContainerStreamMessage) GetAttachRequest() *AttachToContainerRequest { - if x, ok := x.GetPayload().(*ContainerStreamMessage_AttachRequest); ok { - return x.AttachRequest + if x != nil { + if x, ok := x.Payload.(*ContainerStreamMessage_AttachRequest); ok { + return x.AttachRequest + } } return nil } func (x *ContainerStreamMessage) GetSyncContainerWorkspace() *SyncContainerWorkspaceRequest { - if x, ok := x.GetPayload().(*ContainerStreamMessage_SyncContainerWorkspace); ok { - return x.SyncContainerWorkspace + if x != nil { + if x, ok := x.Payload.(*ContainerStreamMessage_SyncContainerWorkspace); ok { + return x.SyncContainerWorkspace + } } return nil } @@ -1316,20 +1263,17 @@ func (*ContainerStreamMessage_AttachRequest) isContainerStreamMessage_Payload() func (*ContainerStreamMessage_SyncContainerWorkspace) isContainerStreamMessage_Payload() {} type AttachToContainerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` unknownFields protoimpl.UnknownFields - - ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AttachToContainerRequest) Reset() { *x = AttachToContainerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AttachToContainerRequest) String() string { @@ -1340,7 +1284,7 @@ func (*AttachToContainerRequest) ProtoMessage() {} func (x *AttachToContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1363,22 +1307,19 @@ func (x *AttachToContainerRequest) GetContainerId() string { } type AttachToContainerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` + Done bool `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"` + ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` unknownFields protoimpl.UnknownFields - - Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` - Done bool `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"` - ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AttachToContainerResponse) Reset() { *x = AttachToContainerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AttachToContainerResponse) String() string { @@ -1389,7 +1330,7 @@ func (*AttachToContainerResponse) ProtoMessage() {} func (x *AttachToContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1427,21 +1368,18 @@ func (x *AttachToContainerResponse) GetExitCode() int32 { // Task messages type StartTaskRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + ContainerId string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` unknownFields protoimpl.UnknownFields - - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` - ContainerId string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartTaskRequest) Reset() { *x = StartTaskRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StartTaskRequest) String() string { @@ -1452,7 +1390,7 @@ func (*StartTaskRequest) ProtoMessage() {} func (x *StartTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1482,20 +1420,17 @@ func (x *StartTaskRequest) GetContainerId() string { } type StartTaskResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartTaskResponse) Reset() { *x = StartTaskResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StartTaskResponse) String() string { @@ -1506,7 +1441,7 @@ func (*StartTaskResponse) ProtoMessage() {} func (x *StartTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1529,26 +1464,23 @@ func (x *StartTaskResponse) GetOk() bool { } type EndTaskRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` - TaskDuration float32 `protobuf:"fixed32,2,opt,name=task_duration,json=taskDuration,proto3" json:"task_duration,omitempty"` - TaskStatus string `protobuf:"bytes,3,opt,name=task_status,json=taskStatus,proto3" json:"task_status,omitempty"` - ContainerId string `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - ContainerHostname string `protobuf:"bytes,5,opt,name=container_hostname,json=containerHostname,proto3" json:"container_hostname,omitempty"` - KeepWarmSeconds float32 `protobuf:"fixed32,6,opt,name=keep_warm_seconds,json=keepWarmSeconds,proto3" json:"keep_warm_seconds,omitempty"` - Result []byte `protobuf:"bytes,7,opt,name=result,proto3" json:"result,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` + TaskDuration float32 `protobuf:"fixed32,2,opt,name=task_duration,json=taskDuration,proto3" json:"task_duration,omitempty"` + TaskStatus string `protobuf:"bytes,3,opt,name=task_status,json=taskStatus,proto3" json:"task_status,omitempty"` + ContainerId string `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + ContainerHostname string `protobuf:"bytes,5,opt,name=container_hostname,json=containerHostname,proto3" json:"container_hostname,omitempty"` + KeepWarmSeconds float32 `protobuf:"fixed32,6,opt,name=keep_warm_seconds,json=keepWarmSeconds,proto3" json:"keep_warm_seconds,omitempty"` + Result []byte `protobuf:"bytes,7,opt,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EndTaskRequest) Reset() { *x = EndTaskRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EndTaskRequest) String() string { @@ -1559,7 +1491,7 @@ func (*EndTaskRequest) ProtoMessage() {} func (x *EndTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1624,20 +1556,17 @@ func (x *EndTaskRequest) GetResult() []byte { } type EndTaskResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EndTaskResponse) Reset() { *x = EndTaskResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EndTaskResponse) String() string { @@ -1648,7 +1577,7 @@ func (*EndTaskResponse) ProtoMessage() {} func (x *EndTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1671,20 +1600,17 @@ func (x *EndTaskResponse) GetOk() bool { } type StringList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` unknownFields protoimpl.UnknownFields - - Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StringList) Reset() { *x = StringList{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringList) String() string { @@ -1695,7 +1621,7 @@ func (*StringList) ProtoMessage() {} func (x *StringList) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1718,21 +1644,18 @@ func (x *StringList) GetValues() []string { } type ListTasksRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListTasksRequest) Reset() { *x = ListTasksRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTasksRequest) String() string { @@ -1743,7 +1666,7 @@ func (*ListTasksRequest) ProtoMessage() {} func (x *ListTasksRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1773,10 +1696,7 @@ func (x *ListTasksRequest) GetLimit() uint32 { } type Task struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` ContainerId string `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` @@ -1788,15 +1708,15 @@ type Task struct { WorkspaceName string `protobuf:"bytes,10,opt,name=workspace_name,json=workspaceName,proto3" json:"workspace_name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Task) Reset() { *x = Task{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Task) String() string { @@ -1807,7 +1727,7 @@ func (*Task) ProtoMessage() {} func (x *Task) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1900,23 +1820,20 @@ func (x *Task) GetUpdatedAt() *timestamppb.Timestamp { } type ListTasksResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Tasks []*Task `protobuf:"bytes,3,rep,name=tasks,proto3" json:"tasks,omitempty"` + Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Tasks []*Task `protobuf:"bytes,3,rep,name=tasks,proto3" json:"tasks,omitempty"` - Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListTasksResponse) Reset() { *x = ListTasksResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTasksResponse) String() string { @@ -1927,7 +1844,7 @@ func (*ListTasksResponse) ProtoMessage() {} func (x *ListTasksResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1971,20 +1888,17 @@ func (x *ListTasksResponse) GetTotal() int32 { } type StopTasksRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TaskIds []string `protobuf:"bytes,1,rep,name=task_ids,json=taskIds,proto3" json:"task_ids,omitempty"` unknownFields protoimpl.UnknownFields - - TaskIds []string `protobuf:"bytes,1,rep,name=task_ids,json=taskIds,proto3" json:"task_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopTasksRequest) Reset() { *x = StopTasksRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StopTasksRequest) String() string { @@ -1995,7 +1909,7 @@ func (*StopTasksRequest) ProtoMessage() {} func (x *StopTasksRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2018,21 +1932,18 @@ func (x *StopTasksRequest) GetTaskIds() []string { } type StopTasksResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopTasksResponse) Reset() { *x = StopTasksResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StopTasksResponse) String() string { @@ -2043,7 +1954,7 @@ func (*StopTasksResponse) ProtoMessage() {} func (x *StopTasksResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2073,22 +1984,19 @@ func (x *StopTasksResponse) GetErrMsg() string { } type Volume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + Config *MountPointConfig `protobuf:"bytes,3,opt,name=config,proto3,oneof" json:"config,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` - Config *MountPointConfig `protobuf:"bytes,3,opt,name=config,proto3,oneof" json:"config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Volume) Reset() { *x = Volume{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Volume) String() string { @@ -2099,7 +2007,7 @@ func (*Volume) ProtoMessage() {} func (x *Volume) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2136,20 +2044,17 @@ func (x *Volume) GetConfig() *MountPointConfig { } type SecretVar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretVar) Reset() { *x = SecretVar{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SecretVar) String() string { @@ -2160,7 +2065,7 @@ func (*SecretVar) ProtoMessage() {} func (x *SecretVar) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2183,23 +2088,20 @@ func (x *SecretVar) GetName() string { } type Autoscaler struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - MaxContainers uint32 `protobuf:"varint,2,opt,name=max_containers,json=maxContainers,proto3" json:"max_containers,omitempty"` - TasksPerContainer uint32 `protobuf:"varint,3,opt,name=tasks_per_container,json=tasksPerContainer,proto3" json:"tasks_per_container,omitempty"` - MinContainers uint32 `protobuf:"varint,4,opt,name=min_containers,json=minContainers,proto3" json:"min_containers,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + MaxContainers uint32 `protobuf:"varint,2,opt,name=max_containers,json=maxContainers,proto3" json:"max_containers,omitempty"` + TasksPerContainer uint32 `protobuf:"varint,3,opt,name=tasks_per_container,json=tasksPerContainer,proto3" json:"tasks_per_container,omitempty"` + MinContainers uint32 `protobuf:"varint,4,opt,name=min_containers,json=minContainers,proto3" json:"min_containers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Autoscaler) Reset() { *x = Autoscaler{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Autoscaler) String() string { @@ -2210,7 +2112,7 @@ func (*Autoscaler) ProtoMessage() {} func (x *Autoscaler) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2254,26 +2156,23 @@ func (x *Autoscaler) GetMinContainers() uint32 { } type LLMConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ModelId string `protobuf:"bytes,1,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` - Engine string `protobuf:"bytes,2,opt,name=engine,proto3" json:"engine,omitempty"` - ServedModelName string `protobuf:"bytes,3,opt,name=served_model_name,json=servedModelName,proto3" json:"served_model_name,omitempty"` - ContextLength int64 `protobuf:"varint,4,opt,name=context_length,json=contextLength,proto3" json:"context_length,omitempty"` - Tokenizer string `protobuf:"bytes,5,opt,name=tokenizer,proto3" json:"tokenizer,omitempty"` - MetricsPath string `protobuf:"bytes,6,opt,name=metrics_path,json=metricsPath,proto3" json:"metrics_path,omitempty"` - SloTier string `protobuf:"bytes,7,opt,name=slo_tier,json=sloTier,proto3" json:"slo_tier,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ModelId string `protobuf:"bytes,1,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` + Engine string `protobuf:"bytes,2,opt,name=engine,proto3" json:"engine,omitempty"` + ServedModelName string `protobuf:"bytes,3,opt,name=served_model_name,json=servedModelName,proto3" json:"served_model_name,omitempty"` + ContextLength int64 `protobuf:"varint,4,opt,name=context_length,json=contextLength,proto3" json:"context_length,omitempty"` + Tokenizer string `protobuf:"bytes,5,opt,name=tokenizer,proto3" json:"tokenizer,omitempty"` + MetricsPath string `protobuf:"bytes,6,opt,name=metrics_path,json=metricsPath,proto3" json:"metrics_path,omitempty"` + SloTier string `protobuf:"bytes,7,opt,name=slo_tier,json=sloTier,proto3" json:"slo_tier,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LLMConfig) Reset() { *x = LLMConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LLMConfig) String() string { @@ -2284,7 +2183,7 @@ func (*LLMConfig) ProtoMessage() {} func (x *LLMConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2349,29 +2248,26 @@ func (x *LLMConfig) GetSloTier() string { } type DatabaseServingConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` - Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - ReadinessProbe string `protobuf:"bytes,3,opt,name=readiness_probe,json=readinessProbe,proto3" json:"readiness_probe,omitempty"` - ConnectionEnvName string `protobuf:"bytes,4,opt,name=connection_env_name,json=connectionEnvName,proto3" json:"connection_env_name,omitempty"` - CredentialSecretNames []string `protobuf:"bytes,5,rep,name=credential_secret_names,json=credentialSecretNames,proto3" json:"credential_secret_names,omitempty"` - DurabilityMode string `protobuf:"bytes,6,opt,name=durability_mode,json=durabilityMode,proto3" json:"durability_mode,omitempty"` - UsernameSecretName string `protobuf:"bytes,7,opt,name=username_secret_name,json=usernameSecretName,proto3" json:"username_secret_name,omitempty"` - PasswordSecretName string `protobuf:"bytes,8,opt,name=password_secret_name,json=passwordSecretName,proto3" json:"password_secret_name,omitempty"` - DatabaseSecretName string `protobuf:"bytes,9,opt,name=database_secret_name,json=databaseSecretName,proto3" json:"database_secret_name,omitempty"` - ConnectionUrlSecretName string `protobuf:"bytes,10,opt,name=connection_url_secret_name,json=connectionUrlSecretName,proto3" json:"connection_url_secret_name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` + Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` + ReadinessProbe string `protobuf:"bytes,3,opt,name=readiness_probe,json=readinessProbe,proto3" json:"readiness_probe,omitempty"` + ConnectionEnvName string `protobuf:"bytes,4,opt,name=connection_env_name,json=connectionEnvName,proto3" json:"connection_env_name,omitempty"` + CredentialSecretNames []string `protobuf:"bytes,5,rep,name=credential_secret_names,json=credentialSecretNames,proto3" json:"credential_secret_names,omitempty"` + DurabilityMode string `protobuf:"bytes,6,opt,name=durability_mode,json=durabilityMode,proto3" json:"durability_mode,omitempty"` + UsernameSecretName string `protobuf:"bytes,7,opt,name=username_secret_name,json=usernameSecretName,proto3" json:"username_secret_name,omitempty"` + PasswordSecretName string `protobuf:"bytes,8,opt,name=password_secret_name,json=passwordSecretName,proto3" json:"password_secret_name,omitempty"` + DatabaseSecretName string `protobuf:"bytes,9,opt,name=database_secret_name,json=databaseSecretName,proto3" json:"database_secret_name,omitempty"` + ConnectionUrlSecretName string `protobuf:"bytes,10,opt,name=connection_url_secret_name,json=connectionUrlSecretName,proto3" json:"connection_url_secret_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DatabaseServingConfig) Reset() { *x = DatabaseServingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DatabaseServingConfig) String() string { @@ -2382,7 +2278,7 @@ func (*DatabaseServingConfig) ProtoMessage() {} func (x *DatabaseServingConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2468,23 +2364,20 @@ func (x *DatabaseServingConfig) GetConnectionUrlSecretName() string { } type ServingConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` AppKind string `protobuf:"bytes,1,opt,name=app_kind,json=appKind,proto3" json:"app_kind,omitempty"` ServingProtocol string `protobuf:"bytes,2,opt,name=serving_protocol,json=servingProtocol,proto3" json:"serving_protocol,omitempty"` Llm *LLMConfig `protobuf:"bytes,3,opt,name=llm,proto3" json:"llm,omitempty"` Database *DatabaseServingConfig `protobuf:"bytes,4,opt,name=database,proto3" json:"database,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ServingConfig) Reset() { *x = ServingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServingConfig) String() string { @@ -2495,7 +2388,7 @@ func (*ServingConfig) ProtoMessage() {} func (x *ServingConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2539,25 +2432,22 @@ func (x *ServingConfig) GetDatabase() *DatabaseServingConfig { } type DurableDisk struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Size string `protobuf:"bytes,2,opt,name=size,proto3" json:"size,omitempty"` + MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + Filesystem string `protobuf:"bytes,4,opt,name=filesystem,proto3" json:"filesystem,omitempty"` + Driver string `protobuf:"bytes,5,opt,name=driver,proto3" json:"driver,omitempty"` + ReadOnly bool `protobuf:"varint,6,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` 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"` - MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` - Filesystem string `protobuf:"bytes,4,opt,name=filesystem,proto3" json:"filesystem,omitempty"` - Driver string `protobuf:"bytes,5,opt,name=driver,proto3" json:"driver,omitempty"` - ReadOnly bool `protobuf:"varint,6,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DurableDisk) Reset() { *x = DurableDisk{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DurableDisk) String() string { @@ -2568,7 +2458,7 @@ func (*DurableDisk) ProtoMessage() {} func (x *DurableDisk) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2626,22 +2516,19 @@ func (x *DurableDisk) GetReadOnly() bool { } type TaskPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timeout int64 `protobuf:"varint,1,opt,name=timeout,proto3" json:"timeout,omitempty"` + MaxRetries uint32 `protobuf:"varint,2,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + Ttl uint32 `protobuf:"varint,3,opt,name=ttl,proto3" json:"ttl,omitempty"` unknownFields protoimpl.UnknownFields - - Timeout int64 `protobuf:"varint,1,opt,name=timeout,proto3" json:"timeout,omitempty"` - MaxRetries uint32 `protobuf:"varint,2,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` - Ttl uint32 `protobuf:"varint,3,opt,name=ttl,proto3" json:"ttl,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TaskPolicy) Reset() { *x = TaskPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TaskPolicy) String() string { @@ -2652,7 +2539,7 @@ func (*TaskPolicy) ProtoMessage() {} func (x *TaskPolicy) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2689,20 +2576,17 @@ func (x *TaskPolicy) GetTtl() uint32 { } type Schema struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields map[string]*SchemaField `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Fields map[string]*SchemaField `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Schema) Reset() { *x = Schema{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Schema) String() string { @@ -2713,7 +2597,7 @@ func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2736,21 +2620,18 @@ func (x *Schema) GetFields() map[string]*SchemaField { } type SchemaField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Fields *Schema `protobuf:"bytes,2,opt,name=fields,proto3" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Fields *Schema `protobuf:"bytes,2,opt,name=fields,proto3" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SchemaField) Reset() { *x = SchemaField{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaField) String() string { @@ -2761,7 +2642,7 @@ func (*SchemaField) ProtoMessage() {} func (x *SchemaField) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2791,64 +2672,61 @@ func (x *SchemaField) GetFields() *Schema { } type GetOrCreateStubRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ObjectId string `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` - ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` - StubType string `protobuf:"bytes,3,opt,name=stub_type,json=stubType,proto3" json:"stub_type,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - PythonVersion string `protobuf:"bytes,5,opt,name=python_version,json=pythonVersion,proto3" json:"python_version,omitempty"` - Cpu int64 `protobuf:"varint,6,opt,name=cpu,proto3" json:"cpu,omitempty"` - Memory int64 `protobuf:"varint,7,opt,name=memory,proto3" json:"memory,omitempty"` - Gpu string `protobuf:"bytes,8,opt,name=gpu,proto3" json:"gpu,omitempty"` - Handler string `protobuf:"bytes,9,opt,name=handler,proto3" json:"handler,omitempty"` - Retries uint32 `protobuf:"varint,10,opt,name=retries,proto3" json:"retries,omitempty"` - Timeout int64 `protobuf:"varint,11,opt,name=timeout,proto3" json:"timeout,omitempty"` - KeepWarmSeconds float32 `protobuf:"fixed32,12,opt,name=keep_warm_seconds,json=keepWarmSeconds,proto3" json:"keep_warm_seconds,omitempty"` - Workers uint32 `protobuf:"varint,13,opt,name=workers,proto3" json:"workers,omitempty"` - MaxPendingTasks uint32 `protobuf:"varint,15,opt,name=max_pending_tasks,json=maxPendingTasks,proto3" json:"max_pending_tasks,omitempty"` - Volumes []*Volume `protobuf:"bytes,16,rep,name=volumes,proto3" json:"volumes,omitempty"` - ForceCreate bool `protobuf:"varint,17,opt,name=force_create,json=forceCreate,proto3" json:"force_create,omitempty"` - OnStart string `protobuf:"bytes,18,opt,name=on_start,json=onStart,proto3" json:"on_start,omitempty"` - CallbackUrl string `protobuf:"bytes,19,opt,name=callback_url,json=callbackUrl,proto3" json:"callback_url,omitempty"` - Authorized bool `protobuf:"varint,20,opt,name=authorized,proto3" json:"authorized,omitempty"` - Secrets []*SecretVar `protobuf:"bytes,21,rep,name=secrets,proto3" json:"secrets,omitempty"` - Autoscaler *Autoscaler `protobuf:"bytes,22,opt,name=autoscaler,proto3" json:"autoscaler,omitempty"` - TaskPolicy *TaskPolicy `protobuf:"bytes,23,opt,name=task_policy,json=taskPolicy,proto3" json:"task_policy,omitempty"` - ConcurrentRequests uint32 `protobuf:"varint,24,opt,name=concurrent_requests,json=concurrentRequests,proto3" json:"concurrent_requests,omitempty"` - Extra string `protobuf:"bytes,25,opt,name=extra,proto3" json:"extra,omitempty"` - CheckpointEnabled bool `protobuf:"varint,26,opt,name=checkpoint_enabled,json=checkpointEnabled,proto3" json:"checkpoint_enabled,omitempty"` - GpuCount uint32 `protobuf:"varint,27,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - OnDeploy string `protobuf:"bytes,28,opt,name=on_deploy,json=onDeploy,proto3" json:"on_deploy,omitempty"` - OnDeployStubId string `protobuf:"bytes,29,opt,name=on_deploy_stub_id,json=onDeployStubId,proto3" json:"on_deploy_stub_id,omitempty"` - Entrypoint []string `protobuf:"bytes,30,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` - Ports []uint32 `protobuf:"varint,31,rep,packed,name=ports,proto3" json:"ports,omitempty"` - Env []string `protobuf:"bytes,32,rep,name=env,proto3" json:"env,omitempty"` - AppName string `protobuf:"bytes,33,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - Pricing *PricingPolicy `protobuf:"bytes,34,opt,name=pricing,proto3" json:"pricing,omitempty"` - Inputs *Schema `protobuf:"bytes,35,opt,name=inputs,proto3" json:"inputs,omitempty"` - Outputs *Schema `protobuf:"bytes,36,opt,name=outputs,proto3" json:"outputs,omitempty"` - Tcp bool `protobuf:"varint,37,opt,name=tcp,proto3" json:"tcp,omitempty"` - BlockNetwork bool `protobuf:"varint,38,opt,name=block_network,json=blockNetwork,proto3" json:"block_network,omitempty"` - AllowList []string `protobuf:"bytes,39,rep,name=allow_list,json=allowList,proto3" json:"allow_list,omitempty"` - DockerEnabled bool `protobuf:"varint,40,opt,name=docker_enabled,json=dockerEnabled,proto3" json:"docker_enabled,omitempty"` - Pool *PoolConfig `protobuf:"bytes,41,opt,name=pool,proto3" json:"pool,omitempty"` - IsService bool `protobuf:"varint,42,opt,name=is_service,json=isService,proto3" json:"is_service,omitempty"` - Serving *ServingConfig `protobuf:"bytes,43,opt,name=serving,proto3" json:"serving,omitempty"` - Disks []*DurableDisk `protobuf:"bytes,44,rep,name=disks,proto3" json:"disks,omitempty"` - AllowMarketplace bool `protobuf:"varint,45,opt,name=allow_marketplace,json=allowMarketplace,proto3" json:"allow_marketplace,omitempty"` - CheckpointTrigger *CheckpointTrigger `protobuf:"bytes,46,opt,name=checkpoint_trigger,json=checkpointTrigger,proto3" json:"checkpoint_trigger,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ObjectId string `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` + ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + StubType string `protobuf:"bytes,3,opt,name=stub_type,json=stubType,proto3" json:"stub_type,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + PythonVersion string `protobuf:"bytes,5,opt,name=python_version,json=pythonVersion,proto3" json:"python_version,omitempty"` + Cpu int64 `protobuf:"varint,6,opt,name=cpu,proto3" json:"cpu,omitempty"` + Memory int64 `protobuf:"varint,7,opt,name=memory,proto3" json:"memory,omitempty"` + Gpu string `protobuf:"bytes,8,opt,name=gpu,proto3" json:"gpu,omitempty"` + Handler string `protobuf:"bytes,9,opt,name=handler,proto3" json:"handler,omitempty"` + Retries uint32 `protobuf:"varint,10,opt,name=retries,proto3" json:"retries,omitempty"` + Timeout int64 `protobuf:"varint,11,opt,name=timeout,proto3" json:"timeout,omitempty"` + KeepWarmSeconds float32 `protobuf:"fixed32,12,opt,name=keep_warm_seconds,json=keepWarmSeconds,proto3" json:"keep_warm_seconds,omitempty"` + Workers uint32 `protobuf:"varint,13,opt,name=workers,proto3" json:"workers,omitempty"` + MaxPendingTasks uint32 `protobuf:"varint,15,opt,name=max_pending_tasks,json=maxPendingTasks,proto3" json:"max_pending_tasks,omitempty"` + Volumes []*Volume `protobuf:"bytes,16,rep,name=volumes,proto3" json:"volumes,omitempty"` + ForceCreate bool `protobuf:"varint,17,opt,name=force_create,json=forceCreate,proto3" json:"force_create,omitempty"` + OnStart string `protobuf:"bytes,18,opt,name=on_start,json=onStart,proto3" json:"on_start,omitempty"` + CallbackUrl string `protobuf:"bytes,19,opt,name=callback_url,json=callbackUrl,proto3" json:"callback_url,omitempty"` + Authorized bool `protobuf:"varint,20,opt,name=authorized,proto3" json:"authorized,omitempty"` + Secrets []*SecretVar `protobuf:"bytes,21,rep,name=secrets,proto3" json:"secrets,omitempty"` + Autoscaler *Autoscaler `protobuf:"bytes,22,opt,name=autoscaler,proto3" json:"autoscaler,omitempty"` + TaskPolicy *TaskPolicy `protobuf:"bytes,23,opt,name=task_policy,json=taskPolicy,proto3" json:"task_policy,omitempty"` + ConcurrentRequests uint32 `protobuf:"varint,24,opt,name=concurrent_requests,json=concurrentRequests,proto3" json:"concurrent_requests,omitempty"` + Extra string `protobuf:"bytes,25,opt,name=extra,proto3" json:"extra,omitempty"` + CheckpointEnabled bool `protobuf:"varint,26,opt,name=checkpoint_enabled,json=checkpointEnabled,proto3" json:"checkpoint_enabled,omitempty"` + GpuCount uint32 `protobuf:"varint,27,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + OnDeploy string `protobuf:"bytes,28,opt,name=on_deploy,json=onDeploy,proto3" json:"on_deploy,omitempty"` + OnDeployStubId string `protobuf:"bytes,29,opt,name=on_deploy_stub_id,json=onDeployStubId,proto3" json:"on_deploy_stub_id,omitempty"` + Entrypoint []string `protobuf:"bytes,30,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` + Ports []uint32 `protobuf:"varint,31,rep,packed,name=ports,proto3" json:"ports,omitempty"` + Env []string `protobuf:"bytes,32,rep,name=env,proto3" json:"env,omitempty"` + AppName string `protobuf:"bytes,33,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + Pricing *PricingPolicy `protobuf:"bytes,34,opt,name=pricing,proto3" json:"pricing,omitempty"` + Inputs *Schema `protobuf:"bytes,35,opt,name=inputs,proto3" json:"inputs,omitempty"` + Outputs *Schema `protobuf:"bytes,36,opt,name=outputs,proto3" json:"outputs,omitempty"` + Tcp bool `protobuf:"varint,37,opt,name=tcp,proto3" json:"tcp,omitempty"` + BlockNetwork bool `protobuf:"varint,38,opt,name=block_network,json=blockNetwork,proto3" json:"block_network,omitempty"` + AllowList []string `protobuf:"bytes,39,rep,name=allow_list,json=allowList,proto3" json:"allow_list,omitempty"` + DockerEnabled bool `protobuf:"varint,40,opt,name=docker_enabled,json=dockerEnabled,proto3" json:"docker_enabled,omitempty"` + Pool *PoolConfig `protobuf:"bytes,41,opt,name=pool,proto3" json:"pool,omitempty"` + IsService bool `protobuf:"varint,42,opt,name=is_service,json=isService,proto3" json:"is_service,omitempty"` + Serving *ServingConfig `protobuf:"bytes,43,opt,name=serving,proto3" json:"serving,omitempty"` + Disks []*DurableDisk `protobuf:"bytes,44,rep,name=disks,proto3" json:"disks,omitempty"` + AllowMarketplace bool `protobuf:"varint,45,opt,name=allow_marketplace,json=allowMarketplace,proto3" json:"allow_marketplace,omitempty"` + CheckpointTrigger *CheckpointTrigger `protobuf:"bytes,46,opt,name=checkpoint_trigger,json=checkpointTrigger,proto3" json:"checkpoint_trigger,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOrCreateStubRequest) Reset() { *x = GetOrCreateStubRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrCreateStubRequest) String() string { @@ -2859,7 +2737,7 @@ func (*GetOrCreateStubRequest) ProtoMessage() {} func (x *GetOrCreateStubRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3190,14 +3068,11 @@ func (x *GetOrCreateStubRequest) GetCheckpointTrigger() *CheckpointTrigger { } type GetOrCreateStubResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - StubId string `protobuf:"bytes,2,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` - ErrMsg string `protobuf:"bytes,3,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - WarnMsg string `protobuf:"bytes,4,opt,name=warn_msg,json=warnMsg,proto3" json:"warn_msg,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + StubId string `protobuf:"bytes,2,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` + ErrMsg string `protobuf:"bytes,3,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + WarnMsg string `protobuf:"bytes,4,opt,name=warn_msg,json=warnMsg,proto3" json:"warn_msg,omitempty"` // Capacity verdict for the requested GPU types, computed at stub creation: // "available", "low", or "none". Empty when no check applies (CPU-only // workloads, private-pool-only stubs, or pool-selector-bound stubs). @@ -3208,15 +3083,15 @@ type GetOrCreateStubResponse struct { // the GPU request. Set instead of capacity_status "none" so clients can // re-issue stub creation targeting this pool. MatchedPrivatePool string `protobuf:"bytes,7,opt,name=matched_private_pool,json=matchedPrivatePool,proto3" json:"matched_private_pool,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetOrCreateStubResponse) Reset() { *x = GetOrCreateStubResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetOrCreateStubResponse) String() string { @@ -3227,7 +3102,7 @@ func (*GetOrCreateStubResponse) ProtoMessage() {} func (x *GetOrCreateStubResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3292,22 +3167,19 @@ func (x *GetOrCreateStubResponse) GetMatchedPrivatePool() string { } type DeployStubRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + StubId string `protobuf:"bytes,1,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Rollout string `protobuf:"bytes,3,opt,name=rollout,proto3" json:"rollout,omitempty"` unknownFields protoimpl.UnknownFields - - StubId string `protobuf:"bytes,1,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Rollout string `protobuf:"bytes,3,opt,name=rollout,proto3" json:"rollout,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeployStubRequest) Reset() { *x = DeployStubRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeployStubRequest) String() string { @@ -3318,7 +3190,7 @@ func (*DeployStubRequest) ProtoMessage() {} func (x *DeployStubRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3355,26 +3227,23 @@ func (x *DeployStubRequest) GetRollout() string { } type DeployStubResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` + InvokeUrl string `protobuf:"bytes,4,opt,name=invoke_url,json=invokeUrl,proto3" json:"invoke_url,omitempty"` + ErrMsg string `protobuf:"bytes,5,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + WarnMsg string `protobuf:"bytes,6,opt,name=warn_msg,json=warnMsg,proto3" json:"warn_msg,omitempty"` + RolloutAction string `protobuf:"bytes,7,opt,name=rollout_action,json=rolloutAction,proto3" json:"rollout_action,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` - Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` - InvokeUrl string `protobuf:"bytes,4,opt,name=invoke_url,json=invokeUrl,proto3" json:"invoke_url,omitempty"` - ErrMsg string `protobuf:"bytes,5,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - WarnMsg string `protobuf:"bytes,6,opt,name=warn_msg,json=warnMsg,proto3" json:"warn_msg,omitempty"` - RolloutAction string `protobuf:"bytes,7,opt,name=rollout_action,json=rolloutAction,proto3" json:"rollout_action,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeployStubResponse) Reset() { *x = DeployStubResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeployStubResponse) String() string { @@ -3385,7 +3254,7 @@ func (*DeployStubResponse) ProtoMessage() {} func (x *DeployStubResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3450,10 +3319,7 @@ func (x *DeployStubResponse) GetRolloutAction() string { } type Deployment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` @@ -3469,15 +3335,15 @@ type Deployment struct { DatabaseKind string `protobuf:"bytes,13,opt,name=database_kind,json=databaseKind,proto3" json:"database_kind,omitempty"` ConnectionStringSecret string `protobuf:"bytes,14,opt,name=connection_string_secret,json=connectionStringSecret,proto3" json:"connection_string_secret,omitempty"` ConnectionEnvName string `protobuf:"bytes,15,opt,name=connection_env_name,json=connectionEnvName,proto3" json:"connection_env_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Deployment) Reset() { *x = Deployment{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Deployment) String() string { @@ -3488,7 +3354,7 @@ func (*Deployment) ProtoMessage() {} func (x *Deployment) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3609,21 +3475,18 @@ func (x *Deployment) GetConnectionEnvName() string { } type ListDeploymentsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListDeploymentsRequest) Reset() { *x = ListDeploymentsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListDeploymentsRequest) String() string { @@ -3634,7 +3497,7 @@ func (*ListDeploymentsRequest) ProtoMessage() {} func (x *ListDeploymentsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3664,22 +3527,19 @@ func (x *ListDeploymentsRequest) GetLimit() uint32 { } type ListDeploymentsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Deployments []*Deployment `protobuf:"bytes,3,rep,name=deployments,proto3" json:"deployments,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Deployments []*Deployment `protobuf:"bytes,3,rep,name=deployments,proto3" json:"deployments,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListDeploymentsResponse) Reset() { *x = ListDeploymentsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListDeploymentsResponse) String() string { @@ -3690,7 +3550,7 @@ func (*ListDeploymentsResponse) ProtoMessage() {} func (x *ListDeploymentsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3727,20 +3587,17 @@ func (x *ListDeploymentsResponse) GetDeployments() []*Deployment { } type StopDeploymentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopDeploymentRequest) Reset() { *x = StopDeploymentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StopDeploymentRequest) String() string { @@ -3751,7 +3608,7 @@ func (*StopDeploymentRequest) ProtoMessage() {} func (x *StopDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3774,21 +3631,18 @@ func (x *StopDeploymentRequest) GetId() string { } type StopDeploymentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopDeploymentResponse) Reset() { *x = StopDeploymentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StopDeploymentResponse) String() string { @@ -3799,7 +3653,7 @@ func (*StopDeploymentResponse) ProtoMessage() {} func (x *StopDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3829,20 +3683,17 @@ func (x *StopDeploymentResponse) GetErrMsg() string { } type StartDeploymentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartDeploymentRequest) Reset() { *x = StartDeploymentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StartDeploymentRequest) String() string { @@ -3853,7 +3704,7 @@ func (*StartDeploymentRequest) ProtoMessage() {} func (x *StartDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3876,21 +3727,18 @@ func (x *StartDeploymentRequest) GetId() string { } type StartDeploymentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartDeploymentResponse) Reset() { *x = StartDeploymentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StartDeploymentResponse) String() string { @@ -3901,7 +3749,7 @@ func (*StartDeploymentResponse) ProtoMessage() {} func (x *StartDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3931,21 +3779,18 @@ func (x *StartDeploymentResponse) GetErrMsg() string { } type ScaleDeploymentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Containers uint32 `protobuf:"varint,2,opt,name=containers,proto3" json:"containers,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Containers uint32 `protobuf:"varint,2,opt,name=containers,proto3" json:"containers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ScaleDeploymentRequest) Reset() { *x = ScaleDeploymentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScaleDeploymentRequest) String() string { @@ -3956,7 +3801,7 @@ func (*ScaleDeploymentRequest) ProtoMessage() {} func (x *ScaleDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3986,21 +3831,18 @@ func (x *ScaleDeploymentRequest) GetContainers() uint32 { } type ScaleDeploymentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ScaleDeploymentResponse) Reset() { *x = ScaleDeploymentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScaleDeploymentResponse) String() string { @@ -4011,7 +3853,7 @@ func (*ScaleDeploymentResponse) ProtoMessage() {} func (x *ScaleDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4041,20 +3883,17 @@ func (x *ScaleDeploymentResponse) GetErrMsg() string { } type DeleteDeploymentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteDeploymentRequest) Reset() { *x = DeleteDeploymentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteDeploymentRequest) String() string { @@ -4065,7 +3904,7 @@ func (*DeleteDeploymentRequest) ProtoMessage() {} func (x *DeleteDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4088,21 +3927,18 @@ func (x *DeleteDeploymentRequest) GetId() string { } type DeleteDeploymentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteDeploymentResponse) Reset() { *x = DeleteDeploymentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteDeploymentResponse) String() string { @@ -4113,7 +3949,7 @@ func (*DeleteDeploymentResponse) ProtoMessage() {} func (x *DeleteDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4143,29 +3979,26 @@ func (x *DeleteDeploymentResponse) GetErrMsg() string { } type Pool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` - Gpu string `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"` - MinFreeGpu string `protobuf:"bytes,5,opt,name=minFreeGpu,proto3" json:"minFreeGpu,omitempty"` - MinFreeCpu string `protobuf:"bytes,6,opt,name=minFreeCpu,proto3" json:"minFreeCpu,omitempty"` - MinFreeMemory string `protobuf:"bytes,7,opt,name=minFreeMemory,proto3" json:"minFreeMemory,omitempty"` - DefaultWorkerCpu string `protobuf:"bytes,8,opt,name=defaultWorkerCpu,proto3" json:"defaultWorkerCpu,omitempty"` - DefaultWorkerMemory string `protobuf:"bytes,9,opt,name=defaultWorkerMemory,proto3" json:"defaultWorkerMemory,omitempty"` - DefaultWorkerGpuCount string `protobuf:"bytes,10,opt,name=defaultWorkerGpuCount,proto3" json:"defaultWorkerGpuCount,omitempty"` - State *WorkerPoolState `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` + Gpu string `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"` + MinFreeGpu string `protobuf:"bytes,5,opt,name=minFreeGpu,proto3" json:"minFreeGpu,omitempty"` + MinFreeCpu string `protobuf:"bytes,6,opt,name=minFreeCpu,proto3" json:"minFreeCpu,omitempty"` + MinFreeMemory string `protobuf:"bytes,7,opt,name=minFreeMemory,proto3" json:"minFreeMemory,omitempty"` + DefaultWorkerCpu string `protobuf:"bytes,8,opt,name=defaultWorkerCpu,proto3" json:"defaultWorkerCpu,omitempty"` + DefaultWorkerMemory string `protobuf:"bytes,9,opt,name=defaultWorkerMemory,proto3" json:"defaultWorkerMemory,omitempty"` + DefaultWorkerGpuCount string `protobuf:"bytes,10,opt,name=defaultWorkerGpuCount,proto3" json:"defaultWorkerGpuCount,omitempty"` + State *WorkerPoolState `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Pool) Reset() { *x = Pool{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Pool) String() string { @@ -4176,7 +4009,7 @@ func (*Pool) ProtoMessage() {} func (x *Pool) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4262,21 +4095,18 @@ func (x *Pool) GetState() *WorkerPoolState { } type ListPoolsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPoolsRequest) Reset() { *x = ListPoolsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoolsRequest) String() string { @@ -4287,7 +4117,7 @@ func (*ListPoolsRequest) ProtoMessage() {} func (x *ListPoolsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4317,22 +4147,19 @@ func (x *ListPoolsRequest) GetLimit() uint32 { } type ListPoolsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pools []*Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pools []*Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPoolsResponse) Reset() { *x = ListPoolsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoolsResponse) String() string { @@ -4343,7 +4170,7 @@ func (*ListPoolsResponse) ProtoMessage() {} func (x *ListPoolsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4380,33 +4207,30 @@ func (x *ListPoolsResponse) GetPools() []*Pool { } type PoolConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Gpu []string `protobuf:"bytes,2,rep,name=gpu,proto3" json:"gpu,omitempty"` - Nodes uint32 `protobuf:"varint,3,opt,name=nodes,proto3" json:"nodes,omitempty"` - Ttl string `protobuf:"bytes,4,opt,name=ttl,proto3" json:"ttl,omitempty"` - MaxSpend float64 `protobuf:"fixed64,5,opt,name=max_spend,json=maxSpend,proto3" json:"max_spend,omitempty"` - Providers []string `protobuf:"bytes,6,rep,name=providers,proto3" json:"providers,omitempty"` - Regions []string `protobuf:"bytes,7,rep,name=regions,proto3" json:"regions,omitempty"` - MinReliability float64 `protobuf:"fixed64,8,opt,name=min_reliability,json=minReliability,proto3" json:"min_reliability,omitempty"` - Selector string `protobuf:"bytes,9,opt,name=selector,proto3" json:"selector,omitempty"` - Mode string `protobuf:"bytes,10,opt,name=mode,proto3" json:"mode,omitempty"` - Transport string `protobuf:"bytes,11,opt,name=transport,proto3" json:"transport,omitempty"` - Fallback string `protobuf:"bytes,12,opt,name=fallback,proto3" json:"fallback,omitempty"` - Priority int32 `protobuf:"varint,13,opt,name=priority,proto3" json:"priority,omitempty"` - OfferId string `protobuf:"bytes,14,opt,name=offer_id,json=offerId,proto3" json:"offer_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Gpu []string `protobuf:"bytes,2,rep,name=gpu,proto3" json:"gpu,omitempty"` + Nodes uint32 `protobuf:"varint,3,opt,name=nodes,proto3" json:"nodes,omitempty"` + Ttl string `protobuf:"bytes,4,opt,name=ttl,proto3" json:"ttl,omitempty"` + MaxSpend float64 `protobuf:"fixed64,5,opt,name=max_spend,json=maxSpend,proto3" json:"max_spend,omitempty"` + Providers []string `protobuf:"bytes,6,rep,name=providers,proto3" json:"providers,omitempty"` + Regions []string `protobuf:"bytes,7,rep,name=regions,proto3" json:"regions,omitempty"` + MinReliability float64 `protobuf:"fixed64,8,opt,name=min_reliability,json=minReliability,proto3" json:"min_reliability,omitempty"` + Selector string `protobuf:"bytes,9,opt,name=selector,proto3" json:"selector,omitempty"` + Mode string `protobuf:"bytes,10,opt,name=mode,proto3" json:"mode,omitempty"` + Transport string `protobuf:"bytes,11,opt,name=transport,proto3" json:"transport,omitempty"` + Fallback string `protobuf:"bytes,12,opt,name=fallback,proto3" json:"fallback,omitempty"` + Priority int32 `protobuf:"varint,13,opt,name=priority,proto3" json:"priority,omitempty"` + OfferId string `protobuf:"bytes,14,opt,name=offer_id,json=offerId,proto3" json:"offer_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PoolConfig) Reset() { *x = PoolConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PoolConfig) String() string { @@ -4417,7 +4241,7 @@ func (*PoolConfig) ProtoMessage() {} func (x *PoolConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4531,38 +4355,35 @@ func (x *PoolConfig) GetOfferId() string { } type PoolOffer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` - InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` - Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` - Gpu string `protobuf:"bytes,5,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - CpuMillicores int64 `protobuf:"varint,7,opt,name=cpu_millicores,json=cpuMillicores,proto3" json:"cpu_millicores,omitempty"` - MemoryMb int64 `protobuf:"varint,8,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"` - HourlyCostMicros int64 `protobuf:"varint,9,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` - Reliability float64 `protobuf:"fixed64,10,opt,name=reliability,proto3" json:"reliability,omitempty"` - Available uint32 `protobuf:"varint,11,opt,name=available,proto3" json:"available,omitempty"` - StorageMb int64 `protobuf:"varint,12,opt,name=storage_mb,json=storageMb,proto3" json:"storage_mb,omitempty"` - Cloud string `protobuf:"bytes,13,opt,name=cloud,proto3" json:"cloud,omitempty"` - NodeCount uint32 `protobuf:"varint,14,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` - DisplayName string `protobuf:"bytes,15,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Category string `protobuf:"bytes,16,opt,name=category,proto3" json:"category,omitempty"` - RegionDisplayName string `protobuf:"bytes,17,opt,name=region_display_name,json=regionDisplayName,proto3" json:"region_display_name,omitempty"` - Latitude float64 `protobuf:"fixed64,18,opt,name=latitude,proto3" json:"latitude,omitempty"` - Longitude float64 `protobuf:"fixed64,19,opt,name=longitude,proto3" json:"longitude,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` + InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + Gpu string `protobuf:"bytes,5,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + CpuMillicores int64 `protobuf:"varint,7,opt,name=cpu_millicores,json=cpuMillicores,proto3" json:"cpu_millicores,omitempty"` + MemoryMb int64 `protobuf:"varint,8,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"` + HourlyCostMicros int64 `protobuf:"varint,9,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` + Reliability float64 `protobuf:"fixed64,10,opt,name=reliability,proto3" json:"reliability,omitempty"` + Available uint32 `protobuf:"varint,11,opt,name=available,proto3" json:"available,omitempty"` + StorageMb int64 `protobuf:"varint,12,opt,name=storage_mb,json=storageMb,proto3" json:"storage_mb,omitempty"` + Cloud string `protobuf:"bytes,13,opt,name=cloud,proto3" json:"cloud,omitempty"` + NodeCount uint32 `protobuf:"varint,14,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` + DisplayName string `protobuf:"bytes,15,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Category string `protobuf:"bytes,16,opt,name=category,proto3" json:"category,omitempty"` + RegionDisplayName string `protobuf:"bytes,17,opt,name=region_display_name,json=regionDisplayName,proto3" json:"region_display_name,omitempty"` + Latitude float64 `protobuf:"fixed64,18,opt,name=latitude,proto3" json:"latitude,omitempty"` + Longitude float64 `protobuf:"fixed64,19,opt,name=longitude,proto3" json:"longitude,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PoolOffer) Reset() { *x = PoolOffer{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PoolOffer) String() string { @@ -4573,7 +4394,7 @@ func (*PoolOffer) ProtoMessage() {} func (x *PoolOffer) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4722,10 +4543,7 @@ func (x *PoolOffer) GetLongitude() float64 { } type ProviderInstance struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"` @@ -4747,15 +4565,15 @@ type ProviderInstance struct { CpuMillicores int64 `protobuf:"varint,19,opt,name=cpu_millicores,json=cpuMillicores,proto3" json:"cpu_millicores,omitempty"` MemoryMb int64 `protobuf:"varint,20,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"` StorageMb int64 `protobuf:"varint,21,opt,name=storage_mb,json=storageMb,proto3" json:"storage_mb,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProviderInstance) Reset() { *x = ProviderInstance{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProviderInstance) String() string { @@ -4766,7 +4584,7 @@ func (*ProviderInstance) ProtoMessage() {} func (x *ProviderInstance) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4929,10 +4747,7 @@ func (x *ProviderInstance) GetStorageMb() int64 { } type PrivatePool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Selector string `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` Config *PoolConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` @@ -4946,15 +4761,15 @@ type PrivatePool struct { ReadyMachineCount uint32 `protobuf:"varint,12,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` ReservedNodes uint32 `protobuf:"varint,13,opt,name=reserved_nodes,json=reservedNodes,proto3" json:"reserved_nodes,omitempty"` Byoc *BYOCPoolState `protobuf:"bytes,14,opt,name=byoc,proto3" json:"byoc,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrivatePool) Reset() { *x = PrivatePool{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PrivatePool) String() string { @@ -4965,7 +4780,7 @@ func (*PrivatePool) ProtoMessage() {} func (x *PrivatePool) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5072,20 +4887,17 @@ func (x *PrivatePool) GetByoc() *BYOCPoolState { } type ListPoolOffersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` unknownFields protoimpl.UnknownFields - - Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPoolOffersRequest) Reset() { *x = ListPoolOffersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoolOffersRequest) String() string { @@ -5096,7 +4908,7 @@ func (*ListPoolOffersRequest) ProtoMessage() {} func (x *ListPoolOffersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5119,22 +4931,19 @@ func (x *ListPoolOffersRequest) GetPool() *PoolConfig { } type ListPoolOffersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Offers []*PoolOffer `protobuf:"bytes,3,rep,name=offers,proto3" json:"offers,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Offers []*PoolOffer `protobuf:"bytes,3,rep,name=offers,proto3" json:"offers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPoolOffersResponse) Reset() { *x = ListPoolOffersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoolOffersResponse) String() string { @@ -5145,7 +4954,7 @@ func (*ListPoolOffersResponse) ProtoMessage() {} func (x *ListPoolOffersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5182,21 +4991,18 @@ func (x *ListPoolOffersResponse) GetOffers() []*PoolOffer { } type LaunchPoolCapacityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` + Nodes uint32 `protobuf:"varint,2,opt,name=nodes,proto3" json:"nodes,omitempty"` unknownFields protoimpl.UnknownFields - - Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` - Nodes uint32 `protobuf:"varint,2,opt,name=nodes,proto3" json:"nodes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LaunchPoolCapacityRequest) Reset() { *x = LaunchPoolCapacityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LaunchPoolCapacityRequest) String() string { @@ -5207,7 +5013,7 @@ func (*LaunchPoolCapacityRequest) ProtoMessage() {} func (x *LaunchPoolCapacityRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5237,25 +5043,22 @@ func (x *LaunchPoolCapacityRequest) GetNodes() uint32 { } type LaunchPoolCapacityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` - ErrorCode string `protobuf:"bytes,4,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"` - RequiredCents int64 `protobuf:"varint,5,opt,name=required_cents,json=requiredCents,proto3" json:"required_cents,omitempty"` - AvailableCents int64 `protobuf:"varint,6,opt,name=available_cents,json=availableCents,proto3" json:"available_cents,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` + ErrorCode string `protobuf:"bytes,4,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"` + RequiredCents int64 `protobuf:"varint,5,opt,name=required_cents,json=requiredCents,proto3" json:"required_cents,omitempty"` + AvailableCents int64 `protobuf:"varint,6,opt,name=available_cents,json=availableCents,proto3" json:"available_cents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LaunchPoolCapacityResponse) Reset() { *x = LaunchPoolCapacityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LaunchPoolCapacityResponse) String() string { @@ -5266,7 +5069,7 @@ func (*LaunchPoolCapacityResponse) ProtoMessage() {} func (x *LaunchPoolCapacityResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5324,21 +5127,18 @@ func (x *LaunchPoolCapacityResponse) GetAvailableCents() int64 { } type ListPrivatePoolsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPrivatePoolsRequest) Reset() { *x = ListPrivatePoolsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPrivatePoolsRequest) String() string { @@ -5349,7 +5149,7 @@ func (*ListPrivatePoolsRequest) ProtoMessage() {} func (x *ListPrivatePoolsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5379,22 +5179,19 @@ func (x *ListPrivatePoolsRequest) GetLimit() uint32 { } type ListPrivatePoolsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pools []*PrivatePool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pools []*PrivatePool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPrivatePoolsResponse) Reset() { *x = ListPrivatePoolsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPrivatePoolsResponse) String() string { @@ -5405,7 +5202,7 @@ func (*ListPrivatePoolsResponse) ProtoMessage() {} func (x *ListPrivatePoolsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5442,28 +5239,25 @@ func (x *ListPrivatePoolsResponse) GetPools() []*PrivatePool { } type CreateBYOCPoolRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` + PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + InstanceType string `protobuf:"bytes,4,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` + DesiredNodes uint32 `protobuf:"varint,5,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` + MaxNodes uint32 `protobuf:"varint,6,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` + AccountId string `protobuf:"bytes,7,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + Gpu string `protobuf:"bytes,8,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,9,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` unknownFields protoimpl.UnknownFields - - Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` - PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` - InstanceType string `protobuf:"bytes,4,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` - DesiredNodes uint32 `protobuf:"varint,5,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` - MaxNodes uint32 `protobuf:"varint,6,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` - AccountId string `protobuf:"bytes,7,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - Gpu string `protobuf:"bytes,8,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,9,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBYOCPoolRequest) Reset() { *x = CreateBYOCPoolRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBYOCPoolRequest) String() string { @@ -5474,7 +5268,7 @@ func (*CreateBYOCPoolRequest) ProtoMessage() {} func (x *CreateBYOCPoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5553,26 +5347,23 @@ func (x *CreateBYOCPoolRequest) GetGpuCount() uint32 { } type CreateBYOCPoolResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` + SetupUrl string `protobuf:"bytes,4,opt,name=setup_url,json=setupUrl,proto3" json:"setup_url,omitempty"` + ResourceName string `protobuf:"bytes,5,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + ResourceUrl string `protobuf:"bytes,6,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` + Byoc *BYOCPoolState `protobuf:"bytes,7,opt,name=byoc,proto3" json:"byoc,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` - SetupUrl string `protobuf:"bytes,4,opt,name=setup_url,json=setupUrl,proto3" json:"setup_url,omitempty"` - ResourceName string `protobuf:"bytes,5,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - ResourceUrl string `protobuf:"bytes,6,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` - Byoc *BYOCPoolState `protobuf:"bytes,7,opt,name=byoc,proto3" json:"byoc,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateBYOCPoolResponse) Reset() { *x = CreateBYOCPoolResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateBYOCPoolResponse) String() string { @@ -5583,7 +5374,7 @@ func (*CreateBYOCPoolResponse) ProtoMessage() {} func (x *CreateBYOCPoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5648,39 +5439,36 @@ func (x *CreateBYOCPoolResponse) GetByoc() *BYOCPoolState { } type BYOCPoolState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` - ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` - ResourceUrl string `protobuf:"bytes,5,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` - DestroyUrl string `protobuf:"bytes,6,opt,name=destroy_url,json=destroyUrl,proto3" json:"destroy_url,omitempty"` - Phase string `protobuf:"bytes,7,opt,name=phase,proto3" json:"phase,omitempty"` - DesiredNodes uint32 `protobuf:"varint,8,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` - MaxNodes uint32 `protobuf:"varint,9,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` - TargetSandboxes uint32 `protobuf:"varint,10,opt,name=target_sandboxes,json=targetSandboxes,proto3" json:"target_sandboxes,omitempty"` - SandboxesPerNode uint32 `protobuf:"varint,11,opt,name=sandboxes_per_node,json=sandboxesPerNode,proto3" json:"sandboxes_per_node,omitempty"` - InstanceType string `protobuf:"bytes,12,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` - MachineCount uint32 `protobuf:"varint,13,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` - ReadyMachineCount uint32 `protobuf:"varint,14,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` - Message string `protobuf:"bytes,15,opt,name=message,proto3" json:"message,omitempty"` - HourlyCostMicros int64 `protobuf:"varint,16,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` - TotalHourlyCostMicros int64 `protobuf:"varint,17,opt,name=total_hourly_cost_micros,json=totalHourlyCostMicros,proto3" json:"total_hourly_cost_micros,omitempty"` - DirectScaleEnabled bool `protobuf:"varint,18,opt,name=direct_scale_enabled,json=directScaleEnabled,proto3" json:"direct_scale_enabled,omitempty"` - Gpu string `protobuf:"bytes,19,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,20,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` + ResourceUrl string `protobuf:"bytes,5,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` + DestroyUrl string `protobuf:"bytes,6,opt,name=destroy_url,json=destroyUrl,proto3" json:"destroy_url,omitempty"` + Phase string `protobuf:"bytes,7,opt,name=phase,proto3" json:"phase,omitempty"` + DesiredNodes uint32 `protobuf:"varint,8,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` + MaxNodes uint32 `protobuf:"varint,9,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` + TargetSandboxes uint32 `protobuf:"varint,10,opt,name=target_sandboxes,json=targetSandboxes,proto3" json:"target_sandboxes,omitempty"` + SandboxesPerNode uint32 `protobuf:"varint,11,opt,name=sandboxes_per_node,json=sandboxesPerNode,proto3" json:"sandboxes_per_node,omitempty"` + InstanceType string `protobuf:"bytes,12,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` + MachineCount uint32 `protobuf:"varint,13,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` + ReadyMachineCount uint32 `protobuf:"varint,14,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` + Message string `protobuf:"bytes,15,opt,name=message,proto3" json:"message,omitempty"` + HourlyCostMicros int64 `protobuf:"varint,16,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` + TotalHourlyCostMicros int64 `protobuf:"varint,17,opt,name=total_hourly_cost_micros,json=totalHourlyCostMicros,proto3" json:"total_hourly_cost_micros,omitempty"` + DirectScaleEnabled bool `protobuf:"varint,18,opt,name=direct_scale_enabled,json=directScaleEnabled,proto3" json:"direct_scale_enabled,omitempty"` + Gpu string `protobuf:"bytes,19,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,20,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BYOCPoolState) Reset() { *x = BYOCPoolState{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BYOCPoolState) String() string { @@ -5691,7 +5479,7 @@ func (*BYOCPoolState) ProtoMessage() {} func (x *BYOCPoolState) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[72] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5847,20 +5635,17 @@ func (x *BYOCPoolState) GetGpuCount() uint32 { } type GetBYOCPoolRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetBYOCPoolRequest) Reset() { *x = GetBYOCPoolRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBYOCPoolRequest) String() string { @@ -5871,7 +5656,7 @@ func (*GetBYOCPoolRequest) ProtoMessage() {} func (x *GetBYOCPoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[73] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5894,26 +5679,23 @@ func (x *GetBYOCPoolRequest) GetPoolName() string { } type GetBYOCPoolResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` - Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"` - ReadyMachineCount uint32 `protobuf:"varint,5,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` - MachineCount uint32 `protobuf:"varint,6,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` - Byoc *BYOCPoolState `protobuf:"bytes,7,opt,name=byoc,proto3" json:"byoc,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` + Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"` + ReadyMachineCount uint32 `protobuf:"varint,5,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` + MachineCount uint32 `protobuf:"varint,6,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` + Byoc *BYOCPoolState `protobuf:"bytes,7,opt,name=byoc,proto3" json:"byoc,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetBYOCPoolResponse) Reset() { *x = GetBYOCPoolResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetBYOCPoolResponse) String() string { @@ -5924,7 +5706,7 @@ func (*GetBYOCPoolResponse) ProtoMessage() {} func (x *GetBYOCPoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5989,22 +5771,19 @@ func (x *GetBYOCPoolResponse) GetByoc() *BYOCPoolState { } type ScaleBYOCPoolRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + DesiredNodes uint32 `protobuf:"varint,2,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` + MaxNodes uint32 `protobuf:"varint,3,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - DesiredNodes uint32 `protobuf:"varint,2,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` - MaxNodes uint32 `protobuf:"varint,3,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ScaleBYOCPoolRequest) Reset() { *x = ScaleBYOCPoolRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScaleBYOCPoolRequest) String() string { @@ -6015,7 +5794,7 @@ func (*ScaleBYOCPoolRequest) ProtoMessage() {} func (x *ScaleBYOCPoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6052,23 +5831,20 @@ func (x *ScaleBYOCPoolRequest) GetMaxNodes() uint32 { } type ScaleBYOCPoolResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` + Byoc *BYOCPoolState `protobuf:"bytes,4,opt,name=byoc,proto3" json:"byoc,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` - Byoc *BYOCPoolState `protobuf:"bytes,4,opt,name=byoc,proto3" json:"byoc,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ScaleBYOCPoolResponse) Reset() { *x = ScaleBYOCPoolResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScaleBYOCPoolResponse) String() string { @@ -6079,7 +5855,7 @@ func (*ScaleBYOCPoolResponse) ProtoMessage() {} func (x *ScaleBYOCPoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[76] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6123,10 +5899,7 @@ func (x *ScaleBYOCPoolResponse) GetByoc() *BYOCPoolState { } type MarketplaceListing struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SellerWorkspaceId string `protobuf:"bytes,2,opt,name=seller_workspace_id,json=sellerWorkspaceId,proto3" json:"seller_workspace_id,omitempty"` DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` @@ -6145,15 +5918,15 @@ type MarketplaceListing struct { Runtime string `protobuf:"bytes,16,opt,name=runtime,proto3" json:"runtime,omitempty"` // Seller-set on-demand rate, per GPU per hour. PricePerGpuHourCents uint32 `protobuf:"varint,17,opt,name=price_per_gpu_hour_cents,json=pricePerGpuHourCents,proto3" json:"price_per_gpu_hour_cents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MarketplaceListing) Reset() { *x = MarketplaceListing{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MarketplaceListing) String() string { @@ -6164,7 +5937,7 @@ func (*MarketplaceListing) ProtoMessage() {} func (x *MarketplaceListing) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[77] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6299,10 +6072,7 @@ func (x *MarketplaceListing) GetPricePerGpuHourCents() uint32 { } type MarketplaceOffer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` SellerWorkspaceId string `protobuf:"bytes,2,opt,name=seller_workspace_id,json=sellerWorkspaceId,proto3" json:"seller_workspace_id,omitempty"` DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` @@ -6324,15 +6094,15 @@ type MarketplaceOffer struct { // returned by marketplace search. Public bool `protobuf:"varint,18,opt,name=public,proto3" json:"public,omitempty"` PricePerGpuHourCents uint32 `protobuf:"varint,19,opt,name=price_per_gpu_hour_cents,json=pricePerGpuHourCents,proto3" json:"price_per_gpu_hour_cents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MarketplaceOffer) Reset() { *x = MarketplaceOffer{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MarketplaceOffer) String() string { @@ -6343,7 +6113,7 @@ func (*MarketplaceOffer) ProtoMessage() {} func (x *MarketplaceOffer) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[78] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6492,30 +6262,27 @@ func (x *MarketplaceOffer) GetPricePerGpuHourCents() uint32 { } type CreateMarketplaceListingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Gpu string `protobuf:"bytes,2,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,3,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` - Preemptible bool `protobuf:"varint,5,opt,name=preemptible,proto3" json:"preemptible,omitempty"` - Public bool `protobuf:"varint,6,opt,name=public,proto3" json:"public,omitempty"` - Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Gpu string `protobuf:"bytes,2,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,3,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` + Preemptible bool `protobuf:"varint,5,opt,name=preemptible,proto3" json:"preemptible,omitempty"` + Public bool `protobuf:"varint,6,opt,name=public,proto3" json:"public,omitempty"` + Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` // Optional pool the listing's machines join. Reusing a pool across listings // shares machine caches; defaults to a name derived from the GPU type. PoolName string `protobuf:"bytes,8,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` PricePerGpuHourCents uint32 `protobuf:"varint,9,opt,name=price_per_gpu_hour_cents,json=pricePerGpuHourCents,proto3" json:"price_per_gpu_hour_cents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateMarketplaceListingRequest) Reset() { *x = CreateMarketplaceListingRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMarketplaceListingRequest) String() string { @@ -6526,7 +6293,7 @@ func (*CreateMarketplaceListingRequest) ProtoMessage() {} func (x *CreateMarketplaceListingRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[79] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6605,22 +6372,19 @@ func (x *CreateMarketplaceListingRequest) GetPricePerGpuHourCents() uint32 { } type CreateMarketplaceListingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Listing *MarketplaceListing `protobuf:"bytes,3,opt,name=listing,proto3" json:"listing,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Listing *MarketplaceListing `protobuf:"bytes,3,opt,name=listing,proto3" json:"listing,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateMarketplaceListingResponse) Reset() { *x = CreateMarketplaceListingResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMarketplaceListingResponse) String() string { @@ -6631,7 +6395,7 @@ func (*CreateMarketplaceListingResponse) ProtoMessage() {} func (x *CreateMarketplaceListingResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[80] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6668,29 +6432,26 @@ func (x *CreateMarketplaceListingResponse) GetListing() *MarketplaceListing { } type UpdateMarketplaceListingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - Gpu string `protobuf:"bytes,3,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,4,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - Source string `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` - Preemptible *bool `protobuf:"varint,6,opt,name=preemptible,proto3,oneof" json:"preemptible,omitempty"` - Public *bool `protobuf:"varint,7,opt,name=public,proto3,oneof" json:"public,omitempty"` - Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"` - Region string `protobuf:"bytes,9,opt,name=region,proto3" json:"region,omitempty"` - PricePerGpuHourCents *uint32 `protobuf:"varint,10,opt,name=price_per_gpu_hour_cents,json=pricePerGpuHourCents,proto3,oneof" json:"price_per_gpu_hour_cents,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Gpu string `protobuf:"bytes,3,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,4,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + Source string `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` + Preemptible *bool `protobuf:"varint,6,opt,name=preemptible,proto3,oneof" json:"preemptible,omitempty"` + Public *bool `protobuf:"varint,7,opt,name=public,proto3,oneof" json:"public,omitempty"` + Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"` + Region string `protobuf:"bytes,9,opt,name=region,proto3" json:"region,omitempty"` + PricePerGpuHourCents *uint32 `protobuf:"varint,10,opt,name=price_per_gpu_hour_cents,json=pricePerGpuHourCents,proto3,oneof" json:"price_per_gpu_hour_cents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateMarketplaceListingRequest) Reset() { *x = UpdateMarketplaceListingRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[81] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateMarketplaceListingRequest) String() string { @@ -6701,7 +6462,7 @@ func (*UpdateMarketplaceListingRequest) ProtoMessage() {} func (x *UpdateMarketplaceListingRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[81] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6787,22 +6548,19 @@ func (x *UpdateMarketplaceListingRequest) GetPricePerGpuHourCents() uint32 { } type UpdateMarketplaceListingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Listing *MarketplaceListing `protobuf:"bytes,3,opt,name=listing,proto3" json:"listing,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Listing *MarketplaceListing `protobuf:"bytes,3,opt,name=listing,proto3" json:"listing,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateMarketplaceListingResponse) Reset() { *x = UpdateMarketplaceListingResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[82] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateMarketplaceListingResponse) String() string { @@ -6813,7 +6571,7 @@ func (*UpdateMarketplaceListingResponse) ProtoMessage() {} func (x *UpdateMarketplaceListingResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[82] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6850,20 +6608,17 @@ func (x *UpdateMarketplaceListingResponse) GetListing() *MarketplaceListing { } type DeleteMarketplaceListingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` unknownFields protoimpl.UnknownFields - - ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMarketplaceListingRequest) Reset() { *x = DeleteMarketplaceListingRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMarketplaceListingRequest) String() string { @@ -6874,7 +6629,7 @@ func (*DeleteMarketplaceListingRequest) ProtoMessage() {} func (x *DeleteMarketplaceListingRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[83] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6897,21 +6652,18 @@ func (x *DeleteMarketplaceListingRequest) GetListingId() string { } type DeleteMarketplaceListingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMarketplaceListingResponse) Reset() { *x = DeleteMarketplaceListingResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMarketplaceListingResponse) String() string { @@ -6922,7 +6674,7 @@ func (*DeleteMarketplaceListingResponse) ProtoMessage() {} func (x *DeleteMarketplaceListingResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[84] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6952,20 +6704,17 @@ func (x *DeleteMarketplaceListingResponse) GetErrMsg() string { } type ListMarketplaceListingsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceListingsRequest) Reset() { *x = ListMarketplaceListingsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceListingsRequest) String() string { @@ -6976,7 +6725,7 @@ func (*ListMarketplaceListingsRequest) ProtoMessage() {} func (x *ListMarketplaceListingsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[85] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6999,22 +6748,19 @@ func (x *ListMarketplaceListingsRequest) GetLimit() uint32 { } type ListMarketplaceListingsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Listings []*MarketplaceListing `protobuf:"bytes,3,rep,name=listings,proto3" json:"listings,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Listings []*MarketplaceListing `protobuf:"bytes,3,rep,name=listings,proto3" json:"listings,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceListingsResponse) Reset() { *x = ListMarketplaceListingsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceListingsResponse) String() string { @@ -7025,7 +6771,7 @@ func (*ListMarketplaceListingsResponse) ProtoMessage() {} func (x *ListMarketplaceListingsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[86] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7062,21 +6808,18 @@ func (x *ListMarketplaceListingsResponse) GetListings() []*MarketplaceListing { } type GetMarketplaceJoinCommandRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` + Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` unknownFields protoimpl.UnknownFields - - ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` - Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetMarketplaceJoinCommandRequest) Reset() { *x = GetMarketplaceJoinCommandRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMarketplaceJoinCommandRequest) String() string { @@ -7087,7 +6830,7 @@ func (*GetMarketplaceJoinCommandRequest) ProtoMessage() {} func (x *GetMarketplaceJoinCommandRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[87] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7117,24 +6860,21 @@ func (x *GetMarketplaceJoinCommandRequest) GetTtl() string { } type GetMarketplaceJoinCommandResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` + Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` - Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` - ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetMarketplaceJoinCommandResponse) Reset() { *x = GetMarketplaceJoinCommandResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMarketplaceJoinCommandResponse) String() string { @@ -7145,7 +6885,7 @@ func (*GetMarketplaceJoinCommandResponse) ProtoMessage() {} func (x *GetMarketplaceJoinCommandResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[88] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7196,21 +6936,18 @@ func (x *GetMarketplaceJoinCommandResponse) GetExpiresAt() *timestamppb.Timestam } type ListMarketplaceOffersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Gpu string `protobuf:"bytes,1,opt,name=gpu,proto3" json:"gpu,omitempty"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - Gpu string `protobuf:"bytes,1,opt,name=gpu,proto3" json:"gpu,omitempty"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceOffersRequest) Reset() { *x = ListMarketplaceOffersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[89] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceOffersRequest) String() string { @@ -7221,7 +6958,7 @@ func (*ListMarketplaceOffersRequest) ProtoMessage() {} func (x *ListMarketplaceOffersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[89] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7251,22 +6988,19 @@ func (x *ListMarketplaceOffersRequest) GetLimit() uint32 { } type ListMarketplaceOffersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Offers []*MarketplaceOffer `protobuf:"bytes,3,rep,name=offers,proto3" json:"offers,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Offers []*MarketplaceOffer `protobuf:"bytes,3,rep,name=offers,proto3" json:"offers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceOffersResponse) Reset() { *x = ListMarketplaceOffersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceOffersResponse) String() string { @@ -7277,7 +7011,7 @@ func (*ListMarketplaceOffersResponse) ProtoMessage() {} func (x *ListMarketplaceOffersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[90] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7314,20 +7048,17 @@ func (x *ListMarketplaceOffersResponse) GetOffers() []*MarketplaceOffer { } type GetMarketplaceOfferRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` unknownFields protoimpl.UnknownFields - - ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetMarketplaceOfferRequest) Reset() { *x = GetMarketplaceOfferRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[91] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMarketplaceOfferRequest) String() string { @@ -7338,7 +7069,7 @@ func (*GetMarketplaceOfferRequest) ProtoMessage() {} func (x *GetMarketplaceOfferRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[91] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7361,22 +7092,19 @@ func (x *GetMarketplaceOfferRequest) GetListingId() string { } type GetMarketplaceOfferResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Offer *MarketplaceOffer `protobuf:"bytes,3,opt,name=offer,proto3" json:"offer,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Offer *MarketplaceOffer `protobuf:"bytes,3,opt,name=offer,proto3" json:"offer,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetMarketplaceOfferResponse) Reset() { *x = GetMarketplaceOfferResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMarketplaceOfferResponse) String() string { @@ -7387,7 +7115,7 @@ func (*GetMarketplaceOfferResponse) ProtoMessage() {} func (x *GetMarketplaceOfferResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[92] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7426,10 +7154,7 @@ func (x *GetMarketplaceOfferResponse) GetOffer() *MarketplaceOffer { // A buyer's exclusive hold on GPUs of one seller machine. Billed on-demand // while held; workloads are launched onto it machine-pinned. type MarketplaceRental struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` ListingId string `protobuf:"bytes,2,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` ListingName string `protobuf:"bytes,3,opt,name=listing_name,json=listingName,proto3" json:"listing_name,omitempty"` @@ -7443,15 +7168,15 @@ type MarketplaceRental struct { // Rate snapshotted when the rental was created; seller price changes don't // affect rentals already held. PricePerGpuHourCents uint32 `protobuf:"varint,11,opt,name=price_per_gpu_hour_cents,json=pricePerGpuHourCents,proto3" json:"price_per_gpu_hour_cents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MarketplaceRental) Reset() { *x = MarketplaceRental{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[93] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MarketplaceRental) String() string { @@ -7462,7 +7187,7 @@ func (*MarketplaceRental) ProtoMessage() {} func (x *MarketplaceRental) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[93] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7555,22 +7280,19 @@ func (x *MarketplaceRental) GetPricePerGpuHourCents() uint32 { } type CreateMarketplaceRentalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` + MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + GpuCount uint32 `protobuf:"varint,3,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` unknownFields protoimpl.UnknownFields - - ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` - MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` - GpuCount uint32 `protobuf:"varint,3,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateMarketplaceRentalRequest) Reset() { *x = CreateMarketplaceRentalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[94] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMarketplaceRentalRequest) String() string { @@ -7581,7 +7303,7 @@ func (*CreateMarketplaceRentalRequest) ProtoMessage() {} func (x *CreateMarketplaceRentalRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[94] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7618,22 +7340,19 @@ func (x *CreateMarketplaceRentalRequest) GetGpuCount() uint32 { } type CreateMarketplaceRentalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Rental *MarketplaceRental `protobuf:"bytes,3,opt,name=rental,proto3" json:"rental,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Rental *MarketplaceRental `protobuf:"bytes,3,opt,name=rental,proto3" json:"rental,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateMarketplaceRentalResponse) Reset() { *x = CreateMarketplaceRentalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[95] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMarketplaceRentalResponse) String() string { @@ -7644,7 +7363,7 @@ func (*CreateMarketplaceRentalResponse) ProtoMessage() {} func (x *CreateMarketplaceRentalResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[95] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7681,18 +7400,16 @@ func (x *CreateMarketplaceRentalResponse) GetRental() *MarketplaceRental { } type ListMarketplaceRentalsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceRentalsRequest) Reset() { *x = ListMarketplaceRentalsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[96] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceRentalsRequest) String() string { @@ -7703,7 +7420,7 @@ func (*ListMarketplaceRentalsRequest) ProtoMessage() {} func (x *ListMarketplaceRentalsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[96] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7719,22 +7436,19 @@ func (*ListMarketplaceRentalsRequest) Descriptor() ([]byte, []int) { } type ListMarketplaceRentalsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Rentals []*MarketplaceRental `protobuf:"bytes,3,rep,name=rentals,proto3" json:"rentals,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Rentals []*MarketplaceRental `protobuf:"bytes,3,rep,name=rentals,proto3" json:"rentals,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceRentalsResponse) Reset() { *x = ListMarketplaceRentalsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[97] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceRentalsResponse) String() string { @@ -7745,7 +7459,7 @@ func (*ListMarketplaceRentalsResponse) ProtoMessage() {} func (x *ListMarketplaceRentalsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[97] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7782,20 +7496,17 @@ func (x *ListMarketplaceRentalsResponse) GetRentals() []*MarketplaceRental { } type DeleteMarketplaceRentalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RentalId string `protobuf:"bytes,1,opt,name=rental_id,json=rentalId,proto3" json:"rental_id,omitempty"` unknownFields protoimpl.UnknownFields - - RentalId string `protobuf:"bytes,1,opt,name=rental_id,json=rentalId,proto3" json:"rental_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMarketplaceRentalRequest) Reset() { *x = DeleteMarketplaceRentalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[98] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMarketplaceRentalRequest) String() string { @@ -7806,7 +7517,7 @@ func (*DeleteMarketplaceRentalRequest) ProtoMessage() {} func (x *DeleteMarketplaceRentalRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[98] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7829,21 +7540,18 @@ func (x *DeleteMarketplaceRentalRequest) GetRentalId() string { } type DeleteMarketplaceRentalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMarketplaceRentalResponse) Reset() { *x = DeleteMarketplaceRentalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMarketplaceRentalResponse) String() string { @@ -7854,7 +7562,7 @@ func (*DeleteMarketplaceRentalResponse) ProtoMessage() {} func (x *DeleteMarketplaceRentalResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[99] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7884,28 +7592,25 @@ func (x *DeleteMarketplaceRentalResponse) GetErrMsg() string { } type LaunchRentalWorkloadRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RentalId string `protobuf:"bytes,1,opt,name=rental_id,json=rentalId,proto3" json:"rental_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RentalId string `protobuf:"bytes,1,opt,name=rental_id,json=rentalId,proto3" json:"rental_id,omitempty"` // "pod" runs the image's own entrypoint (e.g. a vLLM server); "shell" // starts an SSH-able container reachable via `beam shell`. - Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` - ImageId string `protobuf:"bytes,3,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` - Command []string `protobuf:"bytes,4,rep,name=command,proto3" json:"command,omitempty"` - Ports []uint32 `protobuf:"varint,5,rep,packed,name=ports,proto3" json:"ports,omitempty"` - GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - Env []string `protobuf:"bytes,7,rep,name=env,proto3" json:"env,omitempty"` + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` + ImageId string `protobuf:"bytes,3,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + Command []string `protobuf:"bytes,4,rep,name=command,proto3" json:"command,omitempty"` + Ports []uint32 `protobuf:"varint,5,rep,packed,name=ports,proto3" json:"ports,omitempty"` + GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + Env []string `protobuf:"bytes,7,rep,name=env,proto3" json:"env,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LaunchRentalWorkloadRequest) Reset() { *x = LaunchRentalWorkloadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[100] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LaunchRentalWorkloadRequest) String() string { @@ -7916,7 +7621,7 @@ func (*LaunchRentalWorkloadRequest) ProtoMessage() {} func (x *LaunchRentalWorkloadRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[100] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -7981,27 +7686,24 @@ func (x *LaunchRentalWorkloadRequest) GetEnv() []string { } type LaunchRentalWorkloadResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + ContainerId string `protobuf:"bytes,3,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + StubId string `protobuf:"bytes,4,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` + Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` + ShellCommand string `protobuf:"bytes,6,opt,name=shell_command,json=shellCommand,proto3" json:"shell_command,omitempty"` + Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` + Password string `protobuf:"bytes,8,opt,name=password,proto3" json:"password,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - ContainerId string `protobuf:"bytes,3,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - StubId string `protobuf:"bytes,4,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` - Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` - ShellCommand string `protobuf:"bytes,6,opt,name=shell_command,json=shellCommand,proto3" json:"shell_command,omitempty"` - Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,8,opt,name=password,proto3" json:"password,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LaunchRentalWorkloadResponse) Reset() { *x = LaunchRentalWorkloadResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[101] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LaunchRentalWorkloadResponse) String() string { @@ -8012,7 +7714,7 @@ func (*LaunchRentalWorkloadResponse) ProtoMessage() {} func (x *LaunchRentalWorkloadResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[101] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8084,21 +7786,18 @@ func (x *LaunchRentalWorkloadResponse) GetPassword() string { } type ListMarketplaceMachinesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - ListingId string `protobuf:"bytes,1,opt,name=listing_id,json=listingId,proto3" json:"listing_id,omitempty"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceMachinesRequest) Reset() { *x = ListMarketplaceMachinesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[102] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceMachinesRequest) String() string { @@ -8109,7 +7808,7 @@ func (*ListMarketplaceMachinesRequest) ProtoMessage() {} func (x *ListMarketplaceMachinesRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[102] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8139,22 +7838,19 @@ func (x *ListMarketplaceMachinesRequest) GetLimit() uint32 { } type ListMarketplaceMachinesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMarketplaceMachinesResponse) Reset() { *x = ListMarketplaceMachinesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMarketplaceMachinesResponse) String() string { @@ -8165,7 +7861,7 @@ func (*ListMarketplaceMachinesResponse) ProtoMessage() {} func (x *ListMarketplaceMachinesResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[103] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8202,21 +7898,18 @@ func (x *ListMarketplaceMachinesResponse) GetMachines() []*Machine { } type ListMachineContainersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMachineContainersRequest) Reset() { *x = ListMachineContainersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMachineContainersRequest) String() string { @@ -8227,7 +7920,7 @@ func (*ListMachineContainersRequest) ProtoMessage() {} func (x *ListMachineContainersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[104] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8257,29 +7950,26 @@ func (x *ListMachineContainersRequest) GetMachineId() string { } type MachineContainer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + 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"` + WorkspaceId string `protobuf:"bytes,4,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + Gpu string `protobuf:"bytes,5,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + Cpu int64 `protobuf:"varint,7,opt,name=cpu,proto3" json:"cpu,omitempty"` + Memory int64 `protobuf:"varint,8,opt,name=memory,proto3" json:"memory,omitempty"` + ScheduledAt int64 `protobuf:"varint,9,opt,name=scheduled_at,json=scheduledAt,proto3" json:"scheduled_at,omitempty"` + StartedAt int64 `protobuf:"varint,10,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` 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"` - WorkspaceId string `protobuf:"bytes,4,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - Gpu string `protobuf:"bytes,5,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - Cpu int64 `protobuf:"varint,7,opt,name=cpu,proto3" json:"cpu,omitempty"` - Memory int64 `protobuf:"varint,8,opt,name=memory,proto3" json:"memory,omitempty"` - ScheduledAt int64 `protobuf:"varint,9,opt,name=scheduled_at,json=scheduledAt,proto3" json:"scheduled_at,omitempty"` - StartedAt int64 `protobuf:"varint,10,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MachineContainer) Reset() { *x = MachineContainer{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MachineContainer) String() string { @@ -8290,7 +7980,7 @@ func (*MachineContainer) ProtoMessage() {} func (x *MachineContainer) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[105] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8376,22 +8066,19 @@ func (x *MachineContainer) GetStartedAt() int64 { } type ListMachineContainersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Containers []*MachineContainer `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Containers []*MachineContainer `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMachineContainersResponse) Reset() { *x = ListMachineContainersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[106] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMachineContainersResponse) String() string { @@ -8402,7 +8089,7 @@ func (*ListMachineContainersResponse) ProtoMessage() {} func (x *ListMachineContainersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[106] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8439,20 +8126,17 @@ func (x *ListMachineContainersResponse) GetContainers() []*MachineContainer { } type CreatePoolRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` unknownFields protoimpl.UnknownFields - - Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePoolRequest) Reset() { *x = CreatePoolRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePoolRequest) String() string { @@ -8463,7 +8147,7 @@ func (*CreatePoolRequest) ProtoMessage() {} func (x *CreatePoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[107] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8486,22 +8170,19 @@ func (x *CreatePoolRequest) GetPool() *PoolConfig { } type CreatePoolResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePoolResponse) Reset() { *x = CreatePoolResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePoolResponse) String() string { @@ -8512,7 +8193,7 @@ func (*CreatePoolResponse) ProtoMessage() {} func (x *CreatePoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[108] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8549,20 +8230,17 @@ func (x *CreatePoolResponse) GetPool() *PrivatePool { } type DeletePoolRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeletePoolRequest) Reset() { *x = DeletePoolRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePoolRequest) String() string { @@ -8573,7 +8251,7 @@ func (*DeletePoolRequest) ProtoMessage() {} func (x *DeletePoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[109] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8596,21 +8274,18 @@ func (x *DeletePoolRequest) GetName() string { } type DeletePoolResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeletePoolResponse) Reset() { *x = DeletePoolResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[110] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePoolResponse) String() string { @@ -8621,7 +8296,7 @@ func (*DeletePoolResponse) ProtoMessage() {} func (x *DeletePoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[110] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8651,22 +8326,19 @@ func (x *DeletePoolResponse) GetErrMsg() string { } type ExtendPoolCapacityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + MaxSpend float64 `protobuf:"fixed64,3,opt,name=max_spend,json=maxSpend,proto3" json:"max_spend,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` - MaxSpend float64 `protobuf:"fixed64,3,opt,name=max_spend,json=maxSpend,proto3" json:"max_spend,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExtendPoolCapacityRequest) Reset() { *x = ExtendPoolCapacityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[111] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtendPoolCapacityRequest) String() string { @@ -8677,7 +8349,7 @@ func (*ExtendPoolCapacityRequest) ProtoMessage() {} func (x *ExtendPoolCapacityRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[111] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8714,22 +8386,19 @@ func (x *ExtendPoolCapacityRequest) GetMaxSpend() float64 { } type ExtendPoolCapacityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExtendPoolCapacityResponse) Reset() { *x = ExtendPoolCapacityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[112] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtendPoolCapacityResponse) String() string { @@ -8740,7 +8409,7 @@ func (*ExtendPoolCapacityResponse) ProtoMessage() {} func (x *ExtendPoolCapacityResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[112] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8777,21 +8446,18 @@ func (x *ExtendPoolCapacityResponse) GetPool() *PrivatePool { } type CreatePoolJoinTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePoolJoinTokenRequest) Reset() { *x = CreatePoolJoinTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[113] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePoolJoinTokenRequest) String() string { @@ -8802,7 +8468,7 @@ func (*CreatePoolJoinTokenRequest) ProtoMessage() {} func (x *CreatePoolJoinTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[113] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8832,23 +8498,20 @@ func (x *CreatePoolJoinTokenRequest) GetTtl() string { } type CreatePoolJoinTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` - ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreatePoolJoinTokenResponse) Reset() { *x = CreatePoolJoinTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[114] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePoolJoinTokenResponse) String() string { @@ -8859,7 +8522,7 @@ func (*CreatePoolJoinTokenResponse) ProtoMessage() {} func (x *CreatePoolJoinTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[114] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8903,20 +8566,17 @@ func (x *CreatePoolJoinTokenResponse) GetExpiresAt() *timestamppb.Timestamp { } type RevokePoolJoinTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RevokePoolJoinTokenRequest) Reset() { *x = RevokePoolJoinTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[115] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RevokePoolJoinTokenRequest) String() string { @@ -8927,7 +8587,7 @@ func (*RevokePoolJoinTokenRequest) ProtoMessage() {} func (x *RevokePoolJoinTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[115] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -8950,21 +8610,18 @@ func (x *RevokePoolJoinTokenRequest) GetToken() string { } type RevokePoolJoinTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RevokePoolJoinTokenResponse) Reset() { *x = RevokePoolJoinTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[116] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RevokePoolJoinTokenResponse) String() string { @@ -8975,7 +8632,7 @@ func (*RevokePoolJoinTokenResponse) ProtoMessage() {} func (x *RevokePoolJoinTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[116] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9005,21 +8662,18 @@ func (x *RevokePoolJoinTokenResponse) GetErrMsg() string { } type GetPoolJoinCommandRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPoolJoinCommandRequest) Reset() { *x = GetPoolJoinCommandRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[117] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPoolJoinCommandRequest) String() string { @@ -9030,7 +8684,7 @@ func (*GetPoolJoinCommandRequest) ProtoMessage() {} func (x *GetPoolJoinCommandRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[117] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9060,24 +8714,21 @@ func (x *GetPoolJoinCommandRequest) GetTtl() string { } type GetPoolJoinCommandResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` + Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` + ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` - Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` - ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPoolJoinCommandResponse) Reset() { *x = GetPoolJoinCommandResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[118] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPoolJoinCommandResponse) String() string { @@ -9088,7 +8739,7 @@ func (*GetPoolJoinCommandResponse) ProtoMessage() {} func (x *GetPoolJoinCommandResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[118] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9139,21 +8790,18 @@ func (x *GetPoolJoinCommandResponse) GetExpiresAt() *timestamppb.Timestamp { } type ListPoolMachinesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPoolMachinesRequest) Reset() { *x = ListPoolMachinesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[119] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoolMachinesRequest) String() string { @@ -9164,7 +8812,7 @@ func (*ListPoolMachinesRequest) ProtoMessage() {} func (x *ListPoolMachinesRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[119] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9194,22 +8842,19 @@ func (x *ListPoolMachinesRequest) GetLimit() uint32 { } type ListPoolMachinesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListPoolMachinesResponse) Reset() { *x = ListPoolMachinesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[120] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListPoolMachinesResponse) String() string { @@ -9220,7 +8865,7 @@ func (*ListPoolMachinesResponse) ProtoMessage() {} func (x *ListPoolMachinesResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[120] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9257,36 +8902,33 @@ func (x *ListPoolMachinesResponse) GetMachines() []*Machine { } type AgentBootstrapConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GatewayHttpUrl string `protobuf:"bytes,1,opt,name=gateway_http_url,json=gatewayHttpUrl,proto3" json:"gateway_http_url,omitempty"` - GatewayGrpcHost string `protobuf:"bytes,2,opt,name=gateway_grpc_host,json=gatewayGrpcHost,proto3" json:"gateway_grpc_host,omitempty"` - GatewayGrpcPort int32 `protobuf:"varint,3,opt,name=gateway_grpc_port,json=gatewayGrpcPort,proto3" json:"gateway_grpc_port,omitempty"` - GatewayGrpcTls bool `protobuf:"varint,4,opt,name=gateway_grpc_tls,json=gatewayGrpcTls,proto3" json:"gateway_grpc_tls,omitempty"` - WorkspaceId string `protobuf:"bytes,5,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - PoolName string `protobuf:"bytes,6,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - Transport string `protobuf:"bytes,7,opt,name=transport,proto3" json:"transport,omitempty"` - Executor string `protobuf:"bytes,8,opt,name=executor,proto3" json:"executor,omitempty"` - Fallback string `protobuf:"bytes,9,opt,name=fallback,proto3" json:"fallback,omitempty"` - DisabledServices []string `protobuf:"bytes,10,rep,name=disabled_services,json=disabledServices,proto3" json:"disabled_services,omitempty"` - ImageRegistryStore string `protobuf:"bytes,11,opt,name=image_registry_store,json=imageRegistryStore,proto3" json:"image_registry_store,omitempty"` - ImageClipVersion uint32 `protobuf:"varint,12,opt,name=image_clip_version,json=imageClipVersion,proto3" json:"image_clip_version,omitempty"` - ImageLocalCacheEnabled bool `protobuf:"varint,13,opt,name=image_local_cache_enabled,json=imageLocalCacheEnabled,proto3" json:"image_local_cache_enabled,omitempty"` - Telemetry *AgentTelemetryConfig `protobuf:"bytes,14,opt,name=telemetry,proto3" json:"telemetry,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + GatewayHttpUrl string `protobuf:"bytes,1,opt,name=gateway_http_url,json=gatewayHttpUrl,proto3" json:"gateway_http_url,omitempty"` + GatewayGrpcHost string `protobuf:"bytes,2,opt,name=gateway_grpc_host,json=gatewayGrpcHost,proto3" json:"gateway_grpc_host,omitempty"` + GatewayGrpcPort int32 `protobuf:"varint,3,opt,name=gateway_grpc_port,json=gatewayGrpcPort,proto3" json:"gateway_grpc_port,omitempty"` + GatewayGrpcTls bool `protobuf:"varint,4,opt,name=gateway_grpc_tls,json=gatewayGrpcTls,proto3" json:"gateway_grpc_tls,omitempty"` + WorkspaceId string `protobuf:"bytes,5,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + PoolName string `protobuf:"bytes,6,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + Transport string `protobuf:"bytes,7,opt,name=transport,proto3" json:"transport,omitempty"` + Executor string `protobuf:"bytes,8,opt,name=executor,proto3" json:"executor,omitempty"` + Fallback string `protobuf:"bytes,9,opt,name=fallback,proto3" json:"fallback,omitempty"` + DisabledServices []string `protobuf:"bytes,10,rep,name=disabled_services,json=disabledServices,proto3" json:"disabled_services,omitempty"` + ImageRegistryStore string `protobuf:"bytes,11,opt,name=image_registry_store,json=imageRegistryStore,proto3" json:"image_registry_store,omitempty"` + ImageClipVersion uint32 `protobuf:"varint,12,opt,name=image_clip_version,json=imageClipVersion,proto3" json:"image_clip_version,omitempty"` + ImageLocalCacheEnabled bool `protobuf:"varint,13,opt,name=image_local_cache_enabled,json=imageLocalCacheEnabled,proto3" json:"image_local_cache_enabled,omitempty"` + Telemetry *AgentTelemetryConfig `protobuf:"bytes,14,opt,name=telemetry,proto3" json:"telemetry,omitempty"` // Only set for marketplace pools: lets workers on seller machines meter // buyer usage and report it to the billing service. - Billing *AgentBillingConfig `protobuf:"bytes,15,opt,name=billing,proto3" json:"billing,omitempty"` + Billing *AgentBillingConfig `protobuf:"bytes,15,opt,name=billing,proto3" json:"billing,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentBootstrapConfig) Reset() { *x = AgentBootstrapConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[121] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentBootstrapConfig) String() string { @@ -9297,7 +8939,7 @@ func (*AgentBootstrapConfig) ProtoMessage() {} func (x *AgentBootstrapConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[121] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9418,24 +9060,21 @@ func (x *AgentBootstrapConfig) GetBilling() *AgentBillingConfig { } type AgentBillingConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UsageEndpoint string `protobuf:"bytes,1,opt,name=usage_endpoint,json=usageEndpoint,proto3" json:"usage_endpoint,omitempty"` - UsageToken string `protobuf:"bytes,2,opt,name=usage_token,json=usageToken,proto3" json:"usage_token,omitempty"` - CostHookEndpoint string `protobuf:"bytes,3,opt,name=cost_hook_endpoint,json=costHookEndpoint,proto3" json:"cost_hook_endpoint,omitempty"` - CostHookToken string `protobuf:"bytes,4,opt,name=cost_hook_token,json=costHookToken,proto3" json:"cost_hook_token,omitempty"` - BillableMarginPct float64 `protobuf:"fixed64,5,opt,name=billable_margin_pct,json=billableMarginPct,proto3" json:"billable_margin_pct,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + UsageEndpoint string `protobuf:"bytes,1,opt,name=usage_endpoint,json=usageEndpoint,proto3" json:"usage_endpoint,omitempty"` + UsageToken string `protobuf:"bytes,2,opt,name=usage_token,json=usageToken,proto3" json:"usage_token,omitempty"` + CostHookEndpoint string `protobuf:"bytes,3,opt,name=cost_hook_endpoint,json=costHookEndpoint,proto3" json:"cost_hook_endpoint,omitempty"` + CostHookToken string `protobuf:"bytes,4,opt,name=cost_hook_token,json=costHookToken,proto3" json:"cost_hook_token,omitempty"` + BillableMarginPct float64 `protobuf:"fixed64,5,opt,name=billable_margin_pct,json=billableMarginPct,proto3" json:"billable_margin_pct,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentBillingConfig) Reset() { *x = AgentBillingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentBillingConfig) String() string { @@ -9446,7 +9085,7 @@ func (*AgentBillingConfig) ProtoMessage() {} func (x *AgentBillingConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[122] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9497,23 +9136,20 @@ func (x *AgentBillingConfig) GetBillableMarginPct() float64 { } type AgentTelemetryConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + StreamPrefix string `protobuf:"bytes,2,opt,name=stream_prefix,json=streamPrefix,proto3" json:"stream_prefix,omitempty"` + Logs *AgentTelemetrySinkConfig `protobuf:"bytes,3,opt,name=logs,proto3" json:"logs,omitempty"` + Events *AgentTelemetrySinkConfig `protobuf:"bytes,4,opt,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - StreamPrefix string `protobuf:"bytes,2,opt,name=stream_prefix,json=streamPrefix,proto3" json:"stream_prefix,omitempty"` - Logs *AgentTelemetrySinkConfig `protobuf:"bytes,3,opt,name=logs,proto3" json:"logs,omitempty"` - Events *AgentTelemetrySinkConfig `protobuf:"bytes,4,opt,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentTelemetryConfig) Reset() { *x = AgentTelemetryConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[123] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentTelemetryConfig) String() string { @@ -9524,7 +9160,7 @@ func (*AgentTelemetryConfig) ProtoMessage() {} func (x *AgentTelemetryConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[123] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9568,22 +9204,19 @@ func (x *AgentTelemetryConfig) GetEvents() *AgentTelemetrySinkConfig { } type AgentTelemetrySinkConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` + Credential string `protobuf:"bytes,2,opt,name=credential,proto3" json:"credential,omitempty"` + StreamPrefix string `protobuf:"bytes,3,opt,name=stream_prefix,json=streamPrefix,proto3" json:"stream_prefix,omitempty"` unknownFields protoimpl.UnknownFields - - Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` - Credential string `protobuf:"bytes,2,opt,name=credential,proto3" json:"credential,omitempty"` - StreamPrefix string `protobuf:"bytes,3,opt,name=stream_prefix,json=streamPrefix,proto3" json:"stream_prefix,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentTelemetrySinkConfig) Reset() { *x = AgentTelemetrySinkConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[124] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentTelemetrySinkConfig) String() string { @@ -9594,7 +9227,7 @@ func (*AgentTelemetrySinkConfig) ProtoMessage() {} func (x *AgentTelemetrySinkConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[124] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9631,10 +9264,7 @@ func (x *AgentTelemetrySinkConfig) GetStreamPrefix() string { } type JoinAgentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` JoinToken string `protobuf:"bytes,1,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"` MachineFingerprint string `protobuf:"bytes,2,opt,name=machine_fingerprint,json=machineFingerprint,proto3" json:"machine_fingerprint,omitempty"` Hostname string `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"` @@ -9654,17 +9284,17 @@ type JoinAgentRequest struct { // Optional per-machine worker image override. The gateway remembers the // generated value as a baseline so untouched installs continue to follow // future image tag changes while manually edited values remain pinned. - WorkerImage string `protobuf:"bytes,17,opt,name=worker_image,json=workerImage,proto3" json:"worker_image,omitempty"` - Capabilities []string `protobuf:"bytes,18,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + WorkerImage string `protobuf:"bytes,17,opt,name=worker_image,json=workerImage,proto3" json:"worker_image,omitempty"` + Capabilities []string `protobuf:"bytes,18,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JoinAgentRequest) Reset() { *x = JoinAgentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[125] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JoinAgentRequest) String() string { @@ -9675,7 +9305,7 @@ func (*JoinAgentRequest) ProtoMessage() {} func (x *JoinAgentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[125] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9817,26 +9447,23 @@ func (x *JoinAgentRequest) GetCapabilities() []string { } type JoinAgentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + WorkspaceId string `protobuf:"bytes,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + PoolName string `protobuf:"bytes,4,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,5,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + AgentToken string `protobuf:"bytes,6,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + Bootstrap *AgentBootstrapConfig `protobuf:"bytes,7,opt,name=bootstrap,proto3" json:"bootstrap,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - WorkspaceId string `protobuf:"bytes,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - PoolName string `protobuf:"bytes,4,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,5,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` - AgentToken string `protobuf:"bytes,6,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` - Bootstrap *AgentBootstrapConfig `protobuf:"bytes,7,opt,name=bootstrap,proto3" json:"bootstrap,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JoinAgentResponse) Reset() { *x = JoinAgentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[126] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *JoinAgentResponse) String() string { @@ -9847,7 +9474,7 @@ func (*JoinAgentResponse) ProtoMessage() {} func (x *JoinAgentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[126] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9912,23 +9539,20 @@ func (x *JoinAgentResponse) GetBootstrap() *AgentBootstrapConfig { } type AgentPreflightCheck struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + Severity string `protobuf:"bytes,4,opt,name=severity,proto3" json:"severity,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - Severity string `protobuf:"bytes,4,opt,name=severity,proto3" json:"severity,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentPreflightCheck) Reset() { *x = AgentPreflightCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[127] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentPreflightCheck) String() string { @@ -9939,7 +9563,7 @@ func (*AgentPreflightCheck) ProtoMessage() {} func (x *AgentPreflightCheck) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[127] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -9983,34 +9607,31 @@ func (x *AgentPreflightCheck) GetSeverity() string { } type AgentRoute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RouteId string `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + PoolName string `protobuf:"bytes,3,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,4,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + WorkerId string `protobuf:"bytes,5,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` + ContainerId string `protobuf:"bytes,6,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + Kind string `protobuf:"bytes,7,opt,name=kind,proto3" json:"kind,omitempty"` + Port int32 `protobuf:"varint,8,opt,name=port,proto3" json:"port,omitempty"` + Protocol string `protobuf:"bytes,9,opt,name=protocol,proto3" json:"protocol,omitempty"` + Transport string `protobuf:"bytes,10,opt,name=transport,proto3" json:"transport,omitempty"` + LocalTarget string `protobuf:"bytes,11,opt,name=local_target,json=localTarget,proto3" json:"local_target,omitempty"` + ProxyTarget string `protobuf:"bytes,12,opt,name=proxy_target,json=proxyTarget,proto3" json:"proxy_target,omitempty"` + State string `protobuf:"bytes,13,opt,name=state,proto3" json:"state,omitempty"` + Error string `protobuf:"bytes,14,opt,name=error,proto3" json:"error,omitempty"` + UpdatedAt int64 `protobuf:"varint,15,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` unknownFields protoimpl.UnknownFields - - RouteId string `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - PoolName string `protobuf:"bytes,3,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,4,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` - WorkerId string `protobuf:"bytes,5,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` - ContainerId string `protobuf:"bytes,6,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - Kind string `protobuf:"bytes,7,opt,name=kind,proto3" json:"kind,omitempty"` - Port int32 `protobuf:"varint,8,opt,name=port,proto3" json:"port,omitempty"` - Protocol string `protobuf:"bytes,9,opt,name=protocol,proto3" json:"protocol,omitempty"` - Transport string `protobuf:"bytes,10,opt,name=transport,proto3" json:"transport,omitempty"` - LocalTarget string `protobuf:"bytes,11,opt,name=local_target,json=localTarget,proto3" json:"local_target,omitempty"` - ProxyTarget string `protobuf:"bytes,12,opt,name=proxy_target,json=proxyTarget,proto3" json:"proxy_target,omitempty"` - State string `protobuf:"bytes,13,opt,name=state,proto3" json:"state,omitempty"` - Error string `protobuf:"bytes,14,opt,name=error,proto3" json:"error,omitempty"` - UpdatedAt int64 `protobuf:"varint,15,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentRoute) Reset() { *x = AgentRoute{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[128] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentRoute) String() string { @@ -10021,7 +9642,7 @@ func (*AgentRoute) ProtoMessage() {} func (x *AgentRoute) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[128] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10142,21 +9763,18 @@ func (x *AgentRoute) GetUpdatedAt() int64 { } type RequestAgentTransportCredentialRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + Transport string `protobuf:"bytes,2,opt,name=transport,proto3" json:"transport,omitempty"` unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` - Transport string `protobuf:"bytes,2,opt,name=transport,proto3" json:"transport,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RequestAgentTransportCredentialRequest) Reset() { *x = RequestAgentTransportCredentialRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[129] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestAgentTransportCredentialRequest) String() string { @@ -10167,7 +9785,7 @@ func (*RequestAgentTransportCredentialRequest) ProtoMessage() {} func (x *RequestAgentTransportCredentialRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[129] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10197,25 +9815,22 @@ func (x *RequestAgentTransportCredentialRequest) GetTransport() string { } type RequestAgentTransportCredentialResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + AuthKey string `protobuf:"bytes,3,opt,name=auth_key,json=authKey,proto3" json:"auth_key,omitempty"` + ControlUrl string `protobuf:"bytes,4,opt,name=control_url,json=controlUrl,proto3" json:"control_url,omitempty"` + Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` + Ephemeral bool `protobuf:"varint,6,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - AuthKey string `protobuf:"bytes,3,opt,name=auth_key,json=authKey,proto3" json:"auth_key,omitempty"` - ControlUrl string `protobuf:"bytes,4,opt,name=control_url,json=controlUrl,proto3" json:"control_url,omitempty"` - Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` - Ephemeral bool `protobuf:"varint,6,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RequestAgentTransportCredentialResponse) Reset() { *x = RequestAgentTransportCredentialResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[130] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RequestAgentTransportCredentialResponse) String() string { @@ -10226,7 +9841,7 @@ func (*RequestAgentTransportCredentialResponse) ProtoMessage() {} func (x *RequestAgentTransportCredentialResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[130] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10283,32 +9898,29 @@ func (x *RequestAgentTransportCredentialResponse) GetEphemeral() bool { return false } -type ListAgentRoutesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type CreateNodeEnrollmentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + sizeCache protoimpl.SizeCache } -func (x *ListAgentRoutesRequest) Reset() { - *x = ListAgentRoutesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[131] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *CreateNodeEnrollmentRequest) Reset() { + *x = CreateNodeEnrollmentRequest{} + mi := &file_gateway_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListAgentRoutesRequest) String() string { +func (x *CreateNodeEnrollmentRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAgentRoutesRequest) ProtoMessage() {} +func (*CreateNodeEnrollmentRequest) ProtoMessage() {} -func (x *ListAgentRoutesRequest) ProtoReflect() protoreflect.Message { +func (x *CreateNodeEnrollmentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[131] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10318,46 +9930,43 @@ func (x *ListAgentRoutesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAgentRoutesRequest.ProtoReflect.Descriptor instead. -func (*ListAgentRoutesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateNodeEnrollmentRequest.ProtoReflect.Descriptor instead. +func (*CreateNodeEnrollmentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{131} } -func (x *ListAgentRoutesRequest) GetAgentToken() string { +func (x *CreateNodeEnrollmentRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } -type ListAgentRoutesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Routes []*AgentRoute `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` +type CreateNodeEnrollmentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + EnrollmentToken string `protobuf:"bytes,3,opt,name=enrollment_token,json=enrollmentToken,proto3" json:"enrollment_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ListAgentRoutesResponse) Reset() { - *x = ListAgentRoutesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[132] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *CreateNodeEnrollmentResponse) Reset() { + *x = CreateNodeEnrollmentResponse{} + mi := &file_gateway_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ListAgentRoutesResponse) String() string { +func (x *CreateNodeEnrollmentResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAgentRoutesResponse) ProtoMessage() {} +func (*CreateNodeEnrollmentResponse) ProtoMessage() {} -func (x *ListAgentRoutesResponse) ProtoReflect() protoreflect.Message { +func (x *CreateNodeEnrollmentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[132] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10367,63 +9976,55 @@ func (x *ListAgentRoutesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAgentRoutesResponse.ProtoReflect.Descriptor instead. -func (*ListAgentRoutesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateNodeEnrollmentResponse.ProtoReflect.Descriptor instead. +func (*CreateNodeEnrollmentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{132} } -func (x *ListAgentRoutesResponse) GetOk() bool { +func (x *CreateNodeEnrollmentResponse) GetOk() bool { if x != nil { return x.Ok } return false } -func (x *ListAgentRoutesResponse) GetErrMsg() string { +func (x *CreateNodeEnrollmentResponse) GetErrorMsg() string { if x != nil { - return x.ErrMsg + return x.ErrorMsg } return "" } -func (x *ListAgentRoutesResponse) GetRoutes() []*AgentRoute { +func (x *CreateNodeEnrollmentResponse) GetEnrollmentToken() string { if x != nil { - return x.Routes + return x.EnrollmentToken } - return nil + return "" } -type UpdateAgentRouteStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type DeleteNodeEnrollmentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` - RouteId string `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` - State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` - ProxyTarget string `protobuf:"bytes,4,opt,name=proxy_target,json=proxyTarget,proto3" json:"proxy_target,omitempty"` - Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"` - Attrs map[string]string `protobuf:"bytes,6,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } -func (x *UpdateAgentRouteStatusRequest) Reset() { - *x = UpdateAgentRouteStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[133] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x *DeleteNodeEnrollmentRequest) Reset() { + *x = DeleteNodeEnrollmentRequest{} + mi := &file_gateway_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *UpdateAgentRouteStatusRequest) String() string { +func (x *DeleteNodeEnrollmentRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateAgentRouteStatusRequest) ProtoMessage() {} +func (*DeleteNodeEnrollmentRequest) ProtoMessage() {} -func (x *UpdateAgentRouteStatusRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteNodeEnrollmentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[133] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10433,47 +10034,252 @@ func (x *UpdateAgentRouteStatusRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateAgentRouteStatusRequest.ProtoReflect.Descriptor instead. -func (*UpdateAgentRouteStatusRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteNodeEnrollmentRequest.ProtoReflect.Descriptor instead. +func (*DeleteNodeEnrollmentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{133} } -func (x *UpdateAgentRouteStatusRequest) GetAgentToken() string { +func (x *DeleteNodeEnrollmentRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } -func (x *UpdateAgentRouteStatusRequest) GetRouteId() string { - if x != nil { - return x.RouteId - } - return "" +type DeleteNodeEnrollmentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *UpdateAgentRouteStatusRequest) GetState() string { +func (x *DeleteNodeEnrollmentResponse) Reset() { + *x = DeleteNodeEnrollmentResponse{} + mi := &file_gateway_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteNodeEnrollmentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteNodeEnrollmentResponse) ProtoMessage() {} + +func (x *DeleteNodeEnrollmentResponse) ProtoReflect() protoreflect.Message { + mi := &file_gateway_proto_msgTypes[134] if x != nil { - return x.State + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *UpdateAgentRouteStatusRequest) GetProxyTarget() string { +// Deprecated: Use DeleteNodeEnrollmentResponse.ProtoReflect.Descriptor instead. +func (*DeleteNodeEnrollmentResponse) Descriptor() ([]byte, []int) { + return file_gateway_proto_rawDescGZIP(), []int{134} +} + +func (x *DeleteNodeEnrollmentResponse) GetOk() bool { if x != nil { - return x.ProxyTarget + return x.Ok } - return "" + return false } -func (x *UpdateAgentRouteStatusRequest) GetError() string { +func (x *DeleteNodeEnrollmentResponse) GetErrorMsg() string { if x != nil { - return x.Error + return x.ErrorMsg } return "" } -func (x *UpdateAgentRouteStatusRequest) GetAttrs() map[string]string { +type ListAgentRoutesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListAgentRoutesRequest) Reset() { + *x = ListAgentRoutesRequest{} + mi := &file_gateway_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListAgentRoutesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAgentRoutesRequest) ProtoMessage() {} + +func (x *ListAgentRoutesRequest) ProtoReflect() protoreflect.Message { + mi := &file_gateway_proto_msgTypes[135] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAgentRoutesRequest.ProtoReflect.Descriptor instead. +func (*ListAgentRoutesRequest) Descriptor() ([]byte, []int) { + return file_gateway_proto_rawDescGZIP(), []int{135} +} + +func (x *ListAgentRoutesRequest) GetAgentToken() string { + if x != nil { + return x.AgentToken + } + return "" +} + +type ListAgentRoutesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Routes []*AgentRoute `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListAgentRoutesResponse) Reset() { + *x = ListAgentRoutesResponse{} + mi := &file_gateway_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListAgentRoutesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAgentRoutesResponse) ProtoMessage() {} + +func (x *ListAgentRoutesResponse) ProtoReflect() protoreflect.Message { + mi := &file_gateway_proto_msgTypes[136] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAgentRoutesResponse.ProtoReflect.Descriptor instead. +func (*ListAgentRoutesResponse) Descriptor() ([]byte, []int) { + return file_gateway_proto_rawDescGZIP(), []int{136} +} + +func (x *ListAgentRoutesResponse) GetOk() bool { + if x != nil { + return x.Ok + } + return false +} + +func (x *ListAgentRoutesResponse) GetErrMsg() string { + if x != nil { + return x.ErrMsg + } + return "" +} + +func (x *ListAgentRoutesResponse) GetRoutes() []*AgentRoute { + if x != nil { + return x.Routes + } + return nil +} + +type UpdateAgentRouteStatusRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + RouteId string `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` + State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` + ProxyTarget string `protobuf:"bytes,4,opt,name=proxy_target,json=proxyTarget,proto3" json:"proxy_target,omitempty"` + Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"` + Attrs map[string]string `protobuf:"bytes,6,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateAgentRouteStatusRequest) Reset() { + *x = UpdateAgentRouteStatusRequest{} + mi := &file_gateway_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateAgentRouteStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAgentRouteStatusRequest) ProtoMessage() {} + +func (x *UpdateAgentRouteStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_gateway_proto_msgTypes[137] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAgentRouteStatusRequest.ProtoReflect.Descriptor instead. +func (*UpdateAgentRouteStatusRequest) Descriptor() ([]byte, []int) { + return file_gateway_proto_rawDescGZIP(), []int{137} +} + +func (x *UpdateAgentRouteStatusRequest) GetAgentToken() string { + if x != nil { + return x.AgentToken + } + return "" +} + +func (x *UpdateAgentRouteStatusRequest) GetRouteId() string { + if x != nil { + return x.RouteId + } + return "" +} + +func (x *UpdateAgentRouteStatusRequest) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *UpdateAgentRouteStatusRequest) GetProxyTarget() string { + if x != nil { + return x.ProxyTarget + } + return "" +} + +func (x *UpdateAgentRouteStatusRequest) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *UpdateAgentRouteStatusRequest) GetAttrs() map[string]string { if x != nil { return x.Attrs } @@ -10481,21 +10287,18 @@ func (x *UpdateAgentRouteStatusRequest) GetAttrs() map[string]string { } type UpdateAgentRouteStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAgentRouteStatusResponse) Reset() { *x = UpdateAgentRouteStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[134] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAgentRouteStatusResponse) String() string { @@ -10505,8 +10308,8 @@ func (x *UpdateAgentRouteStatusResponse) String() string { func (*UpdateAgentRouteStatusResponse) ProtoMessage() {} func (x *UpdateAgentRouteStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[134] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[138] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10518,7 +10321,7 @@ func (x *UpdateAgentRouteStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAgentRouteStatusResponse.ProtoReflect.Descriptor instead. func (*UpdateAgentRouteStatusResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{134} + return file_gateway_proto_rawDescGZIP(), []int{138} } func (x *UpdateAgentRouteStatusResponse) GetOk() bool { @@ -10536,23 +10339,20 @@ func (x *UpdateAgentRouteStatusResponse) GetErrMsg() string { } type AgentWorkerSlot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` - WorkerToken string `protobuf:"bytes,2,opt,name=worker_token,json=workerToken,proto3" json:"worker_token,omitempty"` - PoolName string `protobuf:"bytes,3,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,4,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` - Cpu int64 `protobuf:"varint,5,opt,name=cpu,proto3" json:"cpu,omitempty"` - Memory int64 `protobuf:"varint,6,opt,name=memory,proto3" json:"memory,omitempty"` - Gpu string `protobuf:"bytes,7,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,8,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - GpuAssignment string `protobuf:"bytes,9,opt,name=gpu_assignment,json=gpuAssignment,proto3" json:"gpu_assignment,omitempty"` - NetworkPrefix string `protobuf:"bytes,10,opt,name=network_prefix,json=networkPrefix,proto3" json:"network_prefix,omitempty"` - WorkerImage string `protobuf:"bytes,11,opt,name=worker_image,json=workerImage,proto3" json:"worker_image,omitempty"` - NetworkSlotPoolSize uint32 `protobuf:"varint,12,opt,name=network_slot_pool_size,json=networkSlotPoolSize,proto3" json:"network_slot_pool_size,omitempty"` - ContainerStartConcurrency uint32 `protobuf:"varint,13,opt,name=container_start_concurrency,json=containerStartConcurrency,proto3" json:"container_start_concurrency,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` + WorkerToken string `protobuf:"bytes,2,opt,name=worker_token,json=workerToken,proto3" json:"worker_token,omitempty"` + PoolName string `protobuf:"bytes,3,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,4,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + Cpu int64 `protobuf:"varint,5,opt,name=cpu,proto3" json:"cpu,omitempty"` + Memory int64 `protobuf:"varint,6,opt,name=memory,proto3" json:"memory,omitempty"` + Gpu string `protobuf:"bytes,7,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,8,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + GpuAssignment string `protobuf:"bytes,9,opt,name=gpu_assignment,json=gpuAssignment,proto3" json:"gpu_assignment,omitempty"` + NetworkPrefix string `protobuf:"bytes,10,opt,name=network_prefix,json=networkPrefix,proto3" json:"network_prefix,omitempty"` + WorkerImage string `protobuf:"bytes,11,opt,name=worker_image,json=workerImage,proto3" json:"worker_image,omitempty"` + NetworkSlotPoolSize uint32 `protobuf:"varint,12,opt,name=network_slot_pool_size,json=networkSlotPoolSize,proto3" json:"network_slot_pool_size,omitempty"` + ContainerStartConcurrency uint32 `protobuf:"varint,13,opt,name=container_start_concurrency,json=containerStartConcurrency,proto3" json:"container_start_concurrency,omitempty"` // Pool mode ("private" / "marketplace" / "external") and the container // runtime the worker must run with. Marketplace slots prefer gVisor but can // fall back to runc for incompatible GPU families. @@ -10576,15 +10376,15 @@ type AgentWorkerSlot struct { Generation string `protobuf:"bytes,25,opt,name=generation,proto3" json:"generation,omitempty"` CpuAffinityEnforced bool `protobuf:"varint,26,opt,name=cpu_affinity_enforced,json=cpuAffinityEnforced,proto3" json:"cpu_affinity_enforced,omitempty"` PoolConfig *AgentPoolRuntimeConfig `protobuf:"bytes,27,opt,name=pool_config,json=poolConfig,proto3" json:"pool_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentWorkerSlot) Reset() { *x = AgentWorkerSlot{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[135] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentWorkerSlot) String() string { @@ -10594,8 +10394,8 @@ func (x *AgentWorkerSlot) String() string { func (*AgentWorkerSlot) ProtoMessage() {} func (x *AgentWorkerSlot) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[135] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[139] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10607,7 +10407,7 @@ func (x *AgentWorkerSlot) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentWorkerSlot.ProtoReflect.Descriptor instead. func (*AgentWorkerSlot) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{135} + return file_gateway_proto_rawDescGZIP(), []int{139} } func (x *AgentWorkerSlot) GetWorkerId() string { @@ -10800,20 +10600,17 @@ func (x *AgentWorkerSlot) GetPoolConfig() *AgentPoolRuntimeConfig { } type StreamAgentRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StreamAgentRequest) Reset() { *x = StreamAgentRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[136] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StreamAgentRequest) String() string { @@ -10823,8 +10620,8 @@ func (x *StreamAgentRequest) String() string { func (*StreamAgentRequest) ProtoMessage() {} func (x *StreamAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[136] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[140] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10836,7 +10633,7 @@ func (x *StreamAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamAgentRequest.ProtoReflect.Descriptor instead. func (*StreamAgentRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{136} + return file_gateway_proto_rawDescGZIP(), []int{140} } func (x *StreamAgentRequest) GetAgentToken() string { @@ -10847,24 +10644,21 @@ func (x *StreamAgentRequest) GetAgentToken() string { } type StreamAgentResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Routes []*AgentRoute `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` + Slots []*AgentWorkerSlot `protobuf:"bytes,4,rep,name=slots,proto3" json:"slots,omitempty"` + Ssh *AgentSSHConfig `protobuf:"bytes,5,opt,name=ssh,proto3" json:"ssh,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Routes []*AgentRoute `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` - Slots []*AgentWorkerSlot `protobuf:"bytes,4,rep,name=slots,proto3" json:"slots,omitempty"` - Ssh *AgentSSHConfig `protobuf:"bytes,5,opt,name=ssh,proto3" json:"ssh,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StreamAgentResponse) Reset() { *x = StreamAgentResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[137] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StreamAgentResponse) String() string { @@ -10874,8 +10668,8 @@ func (x *StreamAgentResponse) String() string { func (*StreamAgentResponse) ProtoMessage() {} func (x *StreamAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[137] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[141] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10887,7 +10681,7 @@ func (x *StreamAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamAgentResponse.ProtoReflect.Descriptor instead. func (*StreamAgentResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{137} + return file_gateway_proto_rawDescGZIP(), []int{141} } func (x *StreamAgentResponse) GetOk() bool { @@ -10926,25 +10720,22 @@ func (x *StreamAgentResponse) GetSsh() *AgentSSHConfig { } type AgentLogRecord struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - WorkerId string `protobuf:"bytes,2,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` - Level string `protobuf:"bytes,3,opt,name=level,proto3" json:"level,omitempty"` - Stream string `protobuf:"bytes,4,opt,name=stream,proto3" json:"stream,omitempty"` - Line string `protobuf:"bytes,5,opt,name=line,proto3" json:"line,omitempty"` - TimestampUnixNano int64 `protobuf:"varint,6,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + WorkerId string `protobuf:"bytes,2,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` + Level string `protobuf:"bytes,3,opt,name=level,proto3" json:"level,omitempty"` + Stream string `protobuf:"bytes,4,opt,name=stream,proto3" json:"stream,omitempty"` + Line string `protobuf:"bytes,5,opt,name=line,proto3" json:"line,omitempty"` + TimestampUnixNano int64 `protobuf:"varint,6,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentLogRecord) Reset() { *x = AgentLogRecord{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentLogRecord) String() string { @@ -10954,8 +10745,8 @@ func (x *AgentLogRecord) String() string { func (*AgentLogRecord) ProtoMessage() {} func (x *AgentLogRecord) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[138] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[142] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -10967,7 +10758,7 @@ func (x *AgentLogRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentLogRecord.ProtoReflect.Descriptor instead. func (*AgentLogRecord) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{138} + return file_gateway_proto_rawDescGZIP(), []int{142} } func (x *AgentLogRecord) GetSource() string { @@ -11013,32 +10804,29 @@ func (x *AgentLogRecord) GetTimestampUnixNano() int64 { } type AgentMetricSnapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TimestampUnixNano int64 `protobuf:"varint,1,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` - CpuUtilizationPct float32 `protobuf:"fixed32,2,opt,name=cpu_utilization_pct,json=cpuUtilizationPct,proto3" json:"cpu_utilization_pct,omitempty"` - MemoryUsedMb uint64 `protobuf:"varint,3,opt,name=memory_used_mb,json=memoryUsedMb,proto3" json:"memory_used_mb,omitempty"` - MemoryTotalMb uint64 `protobuf:"varint,4,opt,name=memory_total_mb,json=memoryTotalMb,proto3" json:"memory_total_mb,omitempty"` - MemoryUtilizationPct float32 `protobuf:"fixed32,5,opt,name=memory_utilization_pct,json=memoryUtilizationPct,proto3" json:"memory_utilization_pct,omitempty"` - DiskUsedMb uint64 `protobuf:"varint,6,opt,name=disk_used_mb,json=diskUsedMb,proto3" json:"disk_used_mb,omitempty"` - DiskTotalMb uint64 `protobuf:"varint,7,opt,name=disk_total_mb,json=diskTotalMb,proto3" json:"disk_total_mb,omitempty"` - DiskUsagePct float32 `protobuf:"fixed32,8,opt,name=disk_usage_pct,json=diskUsagePct,proto3" json:"disk_usage_pct,omitempty"` - DiskPath string `protobuf:"bytes,9,opt,name=disk_path,json=diskPath,proto3" json:"disk_path,omitempty"` - WorkerCount uint32 `protobuf:"varint,10,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` - ContainerCount uint32 `protobuf:"varint,11,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` - FreeGpuCount uint32 `protobuf:"varint,12,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` - PathMetrics []*MachinePathMetrics `protobuf:"bytes,13,rep,name=path_metrics,json=pathMetrics,proto3" json:"path_metrics,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TimestampUnixNano int64 `protobuf:"varint,1,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` + CpuUtilizationPct float32 `protobuf:"fixed32,2,opt,name=cpu_utilization_pct,json=cpuUtilizationPct,proto3" json:"cpu_utilization_pct,omitempty"` + MemoryUsedMb uint64 `protobuf:"varint,3,opt,name=memory_used_mb,json=memoryUsedMb,proto3" json:"memory_used_mb,omitempty"` + MemoryTotalMb uint64 `protobuf:"varint,4,opt,name=memory_total_mb,json=memoryTotalMb,proto3" json:"memory_total_mb,omitempty"` + MemoryUtilizationPct float32 `protobuf:"fixed32,5,opt,name=memory_utilization_pct,json=memoryUtilizationPct,proto3" json:"memory_utilization_pct,omitempty"` + DiskUsedMb uint64 `protobuf:"varint,6,opt,name=disk_used_mb,json=diskUsedMb,proto3" json:"disk_used_mb,omitempty"` + DiskTotalMb uint64 `protobuf:"varint,7,opt,name=disk_total_mb,json=diskTotalMb,proto3" json:"disk_total_mb,omitempty"` + DiskUsagePct float32 `protobuf:"fixed32,8,opt,name=disk_usage_pct,json=diskUsagePct,proto3" json:"disk_usage_pct,omitempty"` + DiskPath string `protobuf:"bytes,9,opt,name=disk_path,json=diskPath,proto3" json:"disk_path,omitempty"` + WorkerCount uint32 `protobuf:"varint,10,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` + ContainerCount uint32 `protobuf:"varint,11,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` + FreeGpuCount uint32 `protobuf:"varint,12,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` + PathMetrics []*MachinePathMetrics `protobuf:"bytes,13,rep,name=path_metrics,json=pathMetrics,proto3" json:"path_metrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentMetricSnapshot) Reset() { *x = AgentMetricSnapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[139] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentMetricSnapshot) String() string { @@ -11048,8 +10836,8 @@ func (x *AgentMetricSnapshot) String() string { func (*AgentMetricSnapshot) ProtoMessage() {} func (x *AgentMetricSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[139] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[143] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11061,7 +10849,7 @@ func (x *AgentMetricSnapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentMetricSnapshot.ProtoReflect.Descriptor instead. func (*AgentMetricSnapshot) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{139} + return file_gateway_proto_rawDescGZIP(), []int{143} } func (x *AgentMetricSnapshot) GetTimestampUnixNano() int64 { @@ -11156,25 +10944,22 @@ func (x *AgentMetricSnapshot) GetPathMetrics() []*MachinePathMetrics { } type AgentEventRecord struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - Attrs map[string]string `protobuf:"bytes,4,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - TimestampUnixNano int64 `protobuf:"varint,5,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` - EventType string `protobuf:"bytes,6,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + Attrs map[string]string `protobuf:"bytes,4,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + TimestampUnixNano int64 `protobuf:"varint,5,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` + EventType string `protobuf:"bytes,6,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentEventRecord) Reset() { *x = AgentEventRecord{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[140] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentEventRecord) String() string { @@ -11184,8 +10969,8 @@ func (x *AgentEventRecord) String() string { func (*AgentEventRecord) ProtoMessage() {} func (x *AgentEventRecord) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[140] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[144] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11197,7 +10982,7 @@ func (x *AgentEventRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentEventRecord.ProtoReflect.Descriptor instead. func (*AgentEventRecord) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{140} + return file_gateway_proto_rawDescGZIP(), []int{144} } func (x *AgentEventRecord) GetAction() string { @@ -11243,23 +11028,20 @@ func (x *AgentEventRecord) GetEventType() string { } type AgentTelemetryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + Logs []*AgentLogRecord `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"` + Metrics *AgentMetricSnapshot `protobuf:"bytes,3,opt,name=metrics,proto3" json:"metrics,omitempty"` + Events []*AgentEventRecord `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` - Logs []*AgentLogRecord `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"` - Metrics *AgentMetricSnapshot `protobuf:"bytes,3,opt,name=metrics,proto3" json:"metrics,omitempty"` - Events []*AgentEventRecord `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentTelemetryRequest) Reset() { *x = AgentTelemetryRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[141] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentTelemetryRequest) String() string { @@ -11269,8 +11051,8 @@ func (x *AgentTelemetryRequest) String() string { func (*AgentTelemetryRequest) ProtoMessage() {} func (x *AgentTelemetryRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[141] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[145] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11282,7 +11064,7 @@ func (x *AgentTelemetryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentTelemetryRequest.ProtoReflect.Descriptor instead. func (*AgentTelemetryRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{141} + return file_gateway_proto_rawDescGZIP(), []int{145} } func (x *AgentTelemetryRequest) GetAgentToken() string { @@ -11314,21 +11096,18 @@ func (x *AgentTelemetryRequest) GetEvents() []*AgentEventRecord { } type AgentTelemetryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentTelemetryResponse) Reset() { *x = AgentTelemetryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[142] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentTelemetryResponse) String() string { @@ -11338,8 +11117,8 @@ func (x *AgentTelemetryResponse) String() string { func (*AgentTelemetryResponse) ProtoMessage() {} func (x *AgentTelemetryResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[142] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[146] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11351,7 +11130,7 @@ func (x *AgentTelemetryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentTelemetryResponse.ProtoReflect.Descriptor instead. func (*AgentTelemetryResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{142} + return file_gateway_proto_rawDescGZIP(), []int{146} } func (x *AgentTelemetryResponse) GetOk() bool { @@ -11369,36 +11148,33 @@ func (x *AgentTelemetryResponse) GetErrMsg() string { } type Machine struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Cpu int64 `protobuf:"varint,2,opt,name=cpu,proto3" json:"cpu,omitempty"` - Memory int64 `protobuf:"varint,3,opt,name=memory,proto3" json:"memory,omitempty"` - Gpu string `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"` - GpuCount uint32 `protobuf:"varint,5,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - PoolName string `protobuf:"bytes,7,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - ProviderName string `protobuf:"bytes,8,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` - RegistrationToken string `protobuf:"bytes,9,opt,name=registration_token,json=registrationToken,proto3" json:"registration_token,omitempty"` - TailscaleUrl string `protobuf:"bytes,10,opt,name=tailscale_url,json=tailscaleUrl,proto3" json:"tailscale_url,omitempty"` - TailscaleAuth string `protobuf:"bytes,11,opt,name=tailscale_auth,json=tailscaleAuth,proto3" json:"tailscale_auth,omitempty"` - LastKeepalive string `protobuf:"bytes,12,opt,name=last_keepalive,json=lastKeepalive,proto3" json:"last_keepalive,omitempty"` - Created string `protobuf:"bytes,13,opt,name=created,proto3" json:"created,omitempty"` - AgentVersion string `protobuf:"bytes,14,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"` - MachineMetrics *MachineMetrics `protobuf:"bytes,15,opt,name=machine_metrics,json=machineMetrics,proto3" json:"machine_metrics,omitempty"` - UserData string `protobuf:"bytes,16,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` - Ssh *MachineSSHAccess `protobuf:"bytes,17,opt,name=ssh,proto3" json:"ssh,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Cpu int64 `protobuf:"varint,2,opt,name=cpu,proto3" json:"cpu,omitempty"` + Memory int64 `protobuf:"varint,3,opt,name=memory,proto3" json:"memory,omitempty"` + Gpu string `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"` + GpuCount uint32 `protobuf:"varint,5,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + PoolName string `protobuf:"bytes,7,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + ProviderName string `protobuf:"bytes,8,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"` + RegistrationToken string `protobuf:"bytes,9,opt,name=registration_token,json=registrationToken,proto3" json:"registration_token,omitempty"` + TailscaleUrl string `protobuf:"bytes,10,opt,name=tailscale_url,json=tailscaleUrl,proto3" json:"tailscale_url,omitempty"` + TailscaleAuth string `protobuf:"bytes,11,opt,name=tailscale_auth,json=tailscaleAuth,proto3" json:"tailscale_auth,omitempty"` + LastKeepalive string `protobuf:"bytes,12,opt,name=last_keepalive,json=lastKeepalive,proto3" json:"last_keepalive,omitempty"` + Created string `protobuf:"bytes,13,opt,name=created,proto3" json:"created,omitempty"` + AgentVersion string `protobuf:"bytes,14,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"` + MachineMetrics *MachineMetrics `protobuf:"bytes,15,opt,name=machine_metrics,json=machineMetrics,proto3" json:"machine_metrics,omitempty"` + UserData string `protobuf:"bytes,16,opt,name=user_data,json=userData,proto3" json:"user_data,omitempty"` + Ssh *MachineSSHAccess `protobuf:"bytes,17,opt,name=ssh,proto3" json:"ssh,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Machine) Reset() { *x = Machine{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[143] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Machine) String() string { @@ -11408,8 +11184,8 @@ func (x *Machine) String() string { func (*Machine) ProtoMessage() {} func (x *Machine) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[143] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[147] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11421,7 +11197,7 @@ func (x *Machine) ProtoReflect() protoreflect.Message { // Deprecated: Use Machine.ProtoReflect.Descriptor instead. func (*Machine) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{143} + return file_gateway_proto_rawDescGZIP(), []int{147} } func (x *Machine) GetId() string { @@ -11544,36 +11320,33 @@ func (x *Machine) GetSsh() *MachineSSHAccess { } type MachineMetrics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TotalCpuAvailable int32 `protobuf:"varint,1,opt,name=total_cpu_available,json=totalCpuAvailable,proto3" json:"total_cpu_available,omitempty"` - TotalMemoryAvailable int32 `protobuf:"varint,2,opt,name=total_memory_available,json=totalMemoryAvailable,proto3" json:"total_memory_available,omitempty"` - CpuUtilizationPct float32 `protobuf:"fixed32,3,opt,name=cpu_utilization_pct,json=cpuUtilizationPct,proto3" json:"cpu_utilization_pct,omitempty"` - MemoryUtilizationPct float32 `protobuf:"fixed32,4,opt,name=memory_utilization_pct,json=memoryUtilizationPct,proto3" json:"memory_utilization_pct,omitempty"` - WorkerCount int32 `protobuf:"varint,5,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` - ContainerCount int32 `protobuf:"varint,6,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` - FreeGpuCount int32 `protobuf:"varint,7,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` - CacheUsagePct float32 `protobuf:"fixed32,8,opt,name=cache_usage_pct,json=cacheUsagePct,proto3" json:"cache_usage_pct,omitempty"` - CacheCapacity int32 `protobuf:"varint,9,opt,name=cache_capacity,json=cacheCapacity,proto3" json:"cache_capacity,omitempty"` - CacheMemoryUsage int32 `protobuf:"varint,10,opt,name=cache_memory_usage,json=cacheMemoryUsage,proto3" json:"cache_memory_usage,omitempty"` - CacheCpuUsage float32 `protobuf:"fixed32,11,opt,name=cache_cpu_usage,json=cacheCpuUsage,proto3" json:"cache_cpu_usage,omitempty"` - MemoryUsedMb int64 `protobuf:"varint,12,opt,name=memory_used_mb,json=memoryUsedMb,proto3" json:"memory_used_mb,omitempty"` - MemoryTotalMb int64 `protobuf:"varint,13,opt,name=memory_total_mb,json=memoryTotalMb,proto3" json:"memory_total_mb,omitempty"` - DiskUsedMb int64 `protobuf:"varint,14,opt,name=disk_used_mb,json=diskUsedMb,proto3" json:"disk_used_mb,omitempty"` - DiskTotalMb int64 `protobuf:"varint,15,opt,name=disk_total_mb,json=diskTotalMb,proto3" json:"disk_total_mb,omitempty"` - DiskUsagePct float32 `protobuf:"fixed32,16,opt,name=disk_usage_pct,json=diskUsagePct,proto3" json:"disk_usage_pct,omitempty"` - PathMetrics []*MachinePathMetrics `protobuf:"bytes,17,rep,name=path_metrics,json=pathMetrics,proto3" json:"path_metrics,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TotalCpuAvailable int32 `protobuf:"varint,1,opt,name=total_cpu_available,json=totalCpuAvailable,proto3" json:"total_cpu_available,omitempty"` + TotalMemoryAvailable int32 `protobuf:"varint,2,opt,name=total_memory_available,json=totalMemoryAvailable,proto3" json:"total_memory_available,omitempty"` + CpuUtilizationPct float32 `protobuf:"fixed32,3,opt,name=cpu_utilization_pct,json=cpuUtilizationPct,proto3" json:"cpu_utilization_pct,omitempty"` + MemoryUtilizationPct float32 `protobuf:"fixed32,4,opt,name=memory_utilization_pct,json=memoryUtilizationPct,proto3" json:"memory_utilization_pct,omitempty"` + WorkerCount int32 `protobuf:"varint,5,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` + ContainerCount int32 `protobuf:"varint,6,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` + FreeGpuCount int32 `protobuf:"varint,7,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` + CacheUsagePct float32 `protobuf:"fixed32,8,opt,name=cache_usage_pct,json=cacheUsagePct,proto3" json:"cache_usage_pct,omitempty"` + CacheCapacity int32 `protobuf:"varint,9,opt,name=cache_capacity,json=cacheCapacity,proto3" json:"cache_capacity,omitempty"` + CacheMemoryUsage int32 `protobuf:"varint,10,opt,name=cache_memory_usage,json=cacheMemoryUsage,proto3" json:"cache_memory_usage,omitempty"` + CacheCpuUsage float32 `protobuf:"fixed32,11,opt,name=cache_cpu_usage,json=cacheCpuUsage,proto3" json:"cache_cpu_usage,omitempty"` + MemoryUsedMb int64 `protobuf:"varint,12,opt,name=memory_used_mb,json=memoryUsedMb,proto3" json:"memory_used_mb,omitempty"` + MemoryTotalMb int64 `protobuf:"varint,13,opt,name=memory_total_mb,json=memoryTotalMb,proto3" json:"memory_total_mb,omitempty"` + DiskUsedMb int64 `protobuf:"varint,14,opt,name=disk_used_mb,json=diskUsedMb,proto3" json:"disk_used_mb,omitempty"` + DiskTotalMb int64 `protobuf:"varint,15,opt,name=disk_total_mb,json=diskTotalMb,proto3" json:"disk_total_mb,omitempty"` + DiskUsagePct float32 `protobuf:"fixed32,16,opt,name=disk_usage_pct,json=diskUsagePct,proto3" json:"disk_usage_pct,omitempty"` + PathMetrics []*MachinePathMetrics `protobuf:"bytes,17,rep,name=path_metrics,json=pathMetrics,proto3" json:"path_metrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MachineMetrics) Reset() { *x = MachineMetrics{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[144] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MachineMetrics) String() string { @@ -11583,8 +11356,8 @@ func (x *MachineMetrics) String() string { func (*MachineMetrics) ProtoMessage() {} func (x *MachineMetrics) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[144] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[148] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11596,7 +11369,7 @@ func (x *MachineMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineMetrics.ProtoReflect.Descriptor instead. func (*MachineMetrics) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{144} + return file_gateway_proto_rawDescGZIP(), []int{148} } func (x *MachineMetrics) GetTotalCpuAvailable() int32 { @@ -11719,25 +11492,22 @@ func (x *MachineMetrics) GetPathMetrics() []*MachinePathMetrics { } type MachinePathMetrics struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + UsedMb uint64 `protobuf:"varint,3,opt,name=used_mb,json=usedMb,proto3" json:"used_mb,omitempty"` + TotalMb uint64 `protobuf:"varint,4,opt,name=total_mb,json=totalMb,proto3" json:"total_mb,omitempty"` + AvailableMb uint64 `protobuf:"varint,5,opt,name=available_mb,json=availableMb,proto3" json:"available_mb,omitempty"` + UsagePct float32 `protobuf:"fixed32,6,opt,name=usage_pct,json=usagePct,proto3" json:"usage_pct,omitempty"` unknownFields protoimpl.UnknownFields - - Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - UsedMb uint64 `protobuf:"varint,3,opt,name=used_mb,json=usedMb,proto3" json:"used_mb,omitempty"` - TotalMb uint64 `protobuf:"varint,4,opt,name=total_mb,json=totalMb,proto3" json:"total_mb,omitempty"` - AvailableMb uint64 `protobuf:"varint,5,opt,name=available_mb,json=availableMb,proto3" json:"available_mb,omitempty"` - UsagePct float32 `protobuf:"fixed32,6,opt,name=usage_pct,json=usagePct,proto3" json:"usage_pct,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MachinePathMetrics) Reset() { *x = MachinePathMetrics{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[145] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MachinePathMetrics) String() string { @@ -11747,8 +11517,8 @@ func (x *MachinePathMetrics) String() string { func (*MachinePathMetrics) ProtoMessage() {} func (x *MachinePathMetrics) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[145] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[149] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11760,7 +11530,7 @@ func (x *MachinePathMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use MachinePathMetrics.ProtoReflect.Descriptor instead. func (*MachinePathMetrics) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{145} + return file_gateway_proto_rawDescGZIP(), []int{149} } func (x *MachinePathMetrics) GetLabel() string { @@ -11806,21 +11576,18 @@ func (x *MachinePathMetrics) GetUsagePct() float32 { } type ListMachinesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListMachinesRequest) Reset() { *x = ListMachinesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[146] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMachinesRequest) String() string { @@ -11830,8 +11597,8 @@ func (x *ListMachinesRequest) String() string { func (*ListMachinesRequest) ProtoMessage() {} func (x *ListMachinesRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[146] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[150] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11843,7 +11610,7 @@ func (x *ListMachinesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMachinesRequest.ProtoReflect.Descriptor instead. func (*ListMachinesRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{146} + return file_gateway_proto_rawDescGZIP(), []int{150} } func (x *ListMachinesRequest) GetPoolName() string { @@ -11861,28 +11628,25 @@ func (x *ListMachinesRequest) GetLimit() uint32 { } type ListMachinesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` // gpus reports live worker availability per GPU type (a worker with that // GPU is currently registered). - Gpus map[string]bool `protobuf:"bytes,4,rep,name=gpus,proto3" json:"gpus,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Gpus map[string]bool `protobuf:"bytes,4,rep,name=gpus,proto3" json:"gpus,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // supported_gpus reports pool-config-based serverless support per GPU // type: true when a pool could serve the GPU even if scaled to zero. - SupportedGpus map[string]bool `protobuf:"bytes,5,rep,name=supported_gpus,json=supportedGpus,proto3" json:"supported_gpus,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + SupportedGpus map[string]bool `protobuf:"bytes,5,rep,name=supported_gpus,json=supportedGpus,proto3" json:"supported_gpus,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListMachinesResponse) Reset() { *x = ListMachinesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[147] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[151] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListMachinesResponse) String() string { @@ -11892,8 +11656,8 @@ func (x *ListMachinesResponse) String() string { func (*ListMachinesResponse) ProtoMessage() {} func (x *ListMachinesResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[147] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[151] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11905,7 +11669,7 @@ func (x *ListMachinesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMachinesResponse.ProtoReflect.Descriptor instead. func (*ListMachinesResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{147} + return file_gateway_proto_rawDescGZIP(), []int{151} } func (x *ListMachinesResponse) GetOk() bool { @@ -11944,20 +11708,17 @@ func (x *ListMachinesResponse) GetSupportedGpus() map[string]bool { } type CreateMachineRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateMachineRequest) Reset() { *x = CreateMachineRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[148] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[152] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMachineRequest) String() string { @@ -11967,8 +11728,8 @@ func (x *CreateMachineRequest) String() string { func (*CreateMachineRequest) ProtoMessage() {} func (x *CreateMachineRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[148] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[152] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -11980,7 +11741,7 @@ func (x *CreateMachineRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMachineRequest.ProtoReflect.Descriptor instead. func (*CreateMachineRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{148} + return file_gateway_proto_rawDescGZIP(), []int{152} } func (x *CreateMachineRequest) GetPoolName() string { @@ -11991,28 +11752,25 @@ func (x *CreateMachineRequest) GetPoolName() string { } type CreateMachineResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Machine *Machine `protobuf:"bytes,3,opt,name=machine,proto3" json:"machine,omitempty"` - AgentUpstreamUrl string `protobuf:"bytes,4,opt,name=agent_upstream_url,json=agentUpstreamUrl,proto3" json:"agent_upstream_url,omitempty"` - AgentUpstreamBranch string `protobuf:"bytes,5,opt,name=agent_upstream_branch,json=agentUpstreamBranch,proto3" json:"agent_upstream_branch,omitempty"` - AgentUpstreamToken string `protobuf:"bytes,6,opt,name=agent_upstream_token,json=agentUpstreamToken,proto3" json:"agent_upstream_token,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Machine *Machine `protobuf:"bytes,3,opt,name=machine,proto3" json:"machine,omitempty"` + AgentUpstreamUrl string `protobuf:"bytes,4,opt,name=agent_upstream_url,json=agentUpstreamUrl,proto3" json:"agent_upstream_url,omitempty"` + AgentUpstreamBranch string `protobuf:"bytes,5,opt,name=agent_upstream_branch,json=agentUpstreamBranch,proto3" json:"agent_upstream_branch,omitempty"` + AgentUpstreamToken string `protobuf:"bytes,6,opt,name=agent_upstream_token,json=agentUpstreamToken,proto3" json:"agent_upstream_token,omitempty"` // Agent-backed managed pools return the systemd installer here. The join // token embedded in the command is short-lived and machine-bound. InstallCommand string `protobuf:"bytes,7,opt,name=install_command,json=installCommand,proto3" json:"install_command,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateMachineResponse) Reset() { *x = CreateMachineResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[149] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[153] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateMachineResponse) String() string { @@ -12022,8 +11780,8 @@ func (x *CreateMachineResponse) String() string { func (*CreateMachineResponse) ProtoMessage() {} func (x *CreateMachineResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[149] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[153] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12035,7 +11793,7 @@ func (x *CreateMachineResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMachineResponse.ProtoReflect.Descriptor instead. func (*CreateMachineResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{149} + return file_gateway_proto_rawDescGZIP(), []int{153} } func (x *CreateMachineResponse) GetOk() bool { @@ -12088,21 +11846,18 @@ func (x *CreateMachineResponse) GetInstallCommand() string { } type DeleteMachineRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` unknownFields protoimpl.UnknownFields - - MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` - PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMachineRequest) Reset() { *x = DeleteMachineRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[150] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[154] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMachineRequest) String() string { @@ -12112,8 +11867,8 @@ func (x *DeleteMachineRequest) String() string { func (*DeleteMachineRequest) ProtoMessage() {} func (x *DeleteMachineRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[150] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[154] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12125,7 +11880,7 @@ func (x *DeleteMachineRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMachineRequest.ProtoReflect.Descriptor instead. func (*DeleteMachineRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{150} + return file_gateway_proto_rawDescGZIP(), []int{154} } func (x *DeleteMachineRequest) GetMachineId() string { @@ -12143,21 +11898,18 @@ func (x *DeleteMachineRequest) GetPoolName() string { } type DeleteMachineResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteMachineResponse) Reset() { *x = DeleteMachineResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[151] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[155] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteMachineResponse) String() string { @@ -12167,8 +11919,8 @@ func (x *DeleteMachineResponse) String() string { func (*DeleteMachineResponse) ProtoMessage() {} func (x *DeleteMachineResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[151] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[155] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12180,7 +11932,7 @@ func (x *DeleteMachineResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMachineResponse.ProtoReflect.Descriptor instead. func (*DeleteMachineResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{151} + return file_gateway_proto_rawDescGZIP(), []int{155} } func (x *DeleteMachineResponse) GetOk() bool { @@ -12198,27 +11950,24 @@ func (x *DeleteMachineResponse) GetErrMsg() string { } type Token struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` + Reusable bool `protobuf:"varint,4,opt,name=reusable,proto3" json:"reusable,omitempty"` + WorkspaceId *uint32 `protobuf:"varint,5,opt,name=workspace_id,json=workspaceId,proto3,oneof" json:"workspace_id,omitempty"` + TokenType string `protobuf:"bytes,6,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` unknownFields protoimpl.UnknownFields - - TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` - Reusable bool `protobuf:"varint,4,opt,name=reusable,proto3" json:"reusable,omitempty"` - WorkspaceId *uint32 `protobuf:"varint,5,opt,name=workspace_id,json=workspaceId,proto3,oneof" json:"workspace_id,omitempty"` - TokenType string `protobuf:"bytes,6,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Token) Reset() { *x = Token{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[152] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[156] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Token) String() string { @@ -12228,8 +11977,8 @@ func (x *Token) String() string { func (*Token) ProtoMessage() {} func (x *Token) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[152] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[156] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12241,7 +11990,7 @@ func (x *Token) ProtoReflect() protoreflect.Message { // Deprecated: Use Token.ProtoReflect.Descriptor instead. func (*Token) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{152} + return file_gateway_proto_rawDescGZIP(), []int{156} } func (x *Token) GetTokenId() string { @@ -12301,18 +12050,16 @@ func (x *Token) GetUpdatedAt() *timestamppb.Timestamp { } type ListTokensRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListTokensRequest) Reset() { *x = ListTokensRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[153] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTokensRequest) String() string { @@ -12322,8 +12069,8 @@ func (x *ListTokensRequest) String() string { func (*ListTokensRequest) ProtoMessage() {} func (x *ListTokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[153] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[157] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12335,26 +12082,23 @@ func (x *ListTokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTokensRequest.ProtoReflect.Descriptor instead. func (*ListTokensRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{153} + return file_gateway_proto_rawDescGZIP(), []int{157} } type ListTokensResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Tokens []*Token `protobuf:"bytes,3,rep,name=tokens,proto3" json:"tokens,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Tokens []*Token `protobuf:"bytes,3,rep,name=tokens,proto3" json:"tokens,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListTokensResponse) Reset() { *x = ListTokensResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[154] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[158] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListTokensResponse) String() string { @@ -12364,8 +12108,8 @@ func (x *ListTokensResponse) String() string { func (*ListTokensResponse) ProtoMessage() {} func (x *ListTokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[154] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[158] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12377,7 +12121,7 @@ func (x *ListTokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTokensResponse.ProtoReflect.Descriptor instead. func (*ListTokensResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{154} + return file_gateway_proto_rawDescGZIP(), []int{158} } func (x *ListTokensResponse) GetOk() bool { @@ -12402,20 +12146,17 @@ func (x *ListTokensResponse) GetTokens() []*Token { } type CreateTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TokenType string `protobuf:"bytes,1,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` unknownFields protoimpl.UnknownFields - - TokenType string `protobuf:"bytes,1,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateTokenRequest) Reset() { *x = CreateTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[155] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[159] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateTokenRequest) String() string { @@ -12425,8 +12166,8 @@ func (x *CreateTokenRequest) String() string { func (*CreateTokenRequest) ProtoMessage() {} func (x *CreateTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[155] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[159] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12438,7 +12179,7 @@ func (x *CreateTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTokenRequest.ProtoReflect.Descriptor instead. func (*CreateTokenRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{155} + return file_gateway_proto_rawDescGZIP(), []int{159} } func (x *CreateTokenRequest) GetTokenType() string { @@ -12449,22 +12190,19 @@ func (x *CreateTokenRequest) GetTokenType() string { } type CreateTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateTokenResponse) Reset() { *x = CreateTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[156] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[160] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateTokenResponse) String() string { @@ -12474,8 +12212,8 @@ func (x *CreateTokenResponse) String() string { func (*CreateTokenResponse) ProtoMessage() {} func (x *CreateTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[156] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[160] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12487,7 +12225,7 @@ func (x *CreateTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTokenResponse.ProtoReflect.Descriptor instead. func (*CreateTokenResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{156} + return file_gateway_proto_rawDescGZIP(), []int{160} } func (x *CreateTokenResponse) GetOk() bool { @@ -12512,20 +12250,17 @@ func (x *CreateTokenResponse) GetToken() *Token { } type ToggleTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` unknownFields protoimpl.UnknownFields - - TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToggleTokenRequest) Reset() { *x = ToggleTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[157] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[161] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToggleTokenRequest) String() string { @@ -12535,8 +12270,8 @@ func (x *ToggleTokenRequest) String() string { func (*ToggleTokenRequest) ProtoMessage() {} func (x *ToggleTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[157] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[161] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12548,7 +12283,7 @@ func (x *ToggleTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ToggleTokenRequest.ProtoReflect.Descriptor instead. func (*ToggleTokenRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{157} + return file_gateway_proto_rawDescGZIP(), []int{161} } func (x *ToggleTokenRequest) GetTokenId() string { @@ -12559,22 +12294,19 @@ func (x *ToggleTokenRequest) GetTokenId() string { } type ToggleTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ToggleTokenResponse) Reset() { *x = ToggleTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[158] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[162] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ToggleTokenResponse) String() string { @@ -12584,8 +12316,8 @@ func (x *ToggleTokenResponse) String() string { func (*ToggleTokenResponse) ProtoMessage() {} func (x *ToggleTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[158] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[162] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12597,7 +12329,7 @@ func (x *ToggleTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ToggleTokenResponse.ProtoReflect.Descriptor instead. func (*ToggleTokenResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{158} + return file_gateway_proto_rawDescGZIP(), []int{162} } func (x *ToggleTokenResponse) GetOk() bool { @@ -12622,20 +12354,17 @@ func (x *ToggleTokenResponse) GetToken() *Token { } type DeleteTokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` unknownFields protoimpl.UnknownFields - - TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteTokenRequest) Reset() { *x = DeleteTokenRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[159] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[163] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteTokenRequest) String() string { @@ -12645,8 +12374,8 @@ func (x *DeleteTokenRequest) String() string { func (*DeleteTokenRequest) ProtoMessage() {} func (x *DeleteTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[159] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[163] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12658,7 +12387,7 @@ func (x *DeleteTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTokenRequest.ProtoReflect.Descriptor instead. func (*DeleteTokenRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{159} + return file_gateway_proto_rawDescGZIP(), []int{163} } func (x *DeleteTokenRequest) GetTokenId() string { @@ -12669,21 +12398,18 @@ func (x *DeleteTokenRequest) GetTokenId() string { } type DeleteTokenResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteTokenResponse) Reset() { *x = DeleteTokenResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[160] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[164] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteTokenResponse) String() string { @@ -12693,8 +12419,8 @@ func (x *DeleteTokenResponse) String() string { func (*DeleteTokenResponse) ProtoMessage() {} func (x *DeleteTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[160] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[164] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12706,7 +12432,7 @@ func (x *DeleteTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTokenResponse.ProtoReflect.Descriptor instead. func (*DeleteTokenResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{160} + return file_gateway_proto_rawDescGZIP(), []int{164} } func (x *DeleteTokenResponse) GetOk() bool { @@ -12724,23 +12450,20 @@ func (x *DeleteTokenResponse) GetErrMsg() string { } type GetURLRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + StubId string `protobuf:"bytes,1,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` + DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` + UrlType string `protobuf:"bytes,3,opt,name=url_type,json=urlType,proto3" json:"url_type,omitempty"` + IsShell bool `protobuf:"varint,4,opt,name=is_shell,json=isShell,proto3" json:"is_shell,omitempty"` unknownFields protoimpl.UnknownFields - - StubId string `protobuf:"bytes,1,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` - DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` - UrlType string `protobuf:"bytes,3,opt,name=url_type,json=urlType,proto3" json:"url_type,omitempty"` - IsShell bool `protobuf:"varint,4,opt,name=is_shell,json=isShell,proto3" json:"is_shell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetURLRequest) Reset() { *x = GetURLRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[161] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[165] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetURLRequest) String() string { @@ -12750,8 +12473,8 @@ func (x *GetURLRequest) String() string { func (*GetURLRequest) ProtoMessage() {} func (x *GetURLRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[161] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[165] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12763,7 +12486,7 @@ func (x *GetURLRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetURLRequest.ProtoReflect.Descriptor instead. func (*GetURLRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{161} + return file_gateway_proto_rawDescGZIP(), []int{165} } func (x *GetURLRequest) GetStubId() string { @@ -12795,22 +12518,19 @@ func (x *GetURLRequest) GetIsShell() bool { } type GetURLResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetURLResponse) Reset() { *x = GetURLResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[162] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[166] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetURLResponse) String() string { @@ -12820,8 +12540,8 @@ func (x *GetURLResponse) String() string { func (*GetURLResponse) ProtoMessage() {} func (x *GetURLResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[162] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[166] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12833,7 +12553,7 @@ func (x *GetURLResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetURLResponse.ProtoReflect.Descriptor instead. func (*GetURLResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{162} + return file_gateway_proto_rawDescGZIP(), []int{166} } func (x *GetURLResponse) GetOk() bool { @@ -12858,18 +12578,16 @@ func (x *GetURLResponse) GetUrl() string { } type ListWorkersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListWorkersRequest) Reset() { *x = ListWorkersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[163] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[167] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListWorkersRequest) String() string { @@ -12879,8 +12597,8 @@ func (x *ListWorkersRequest) String() string { func (*ListWorkersRequest) ProtoMessage() {} func (x *ListWorkersRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[163] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[167] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12892,26 +12610,23 @@ func (x *ListWorkersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkersRequest.ProtoReflect.Descriptor instead. func (*ListWorkersRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{163} + return file_gateway_proto_rawDescGZIP(), []int{167} } type ListWorkersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Workers []*Worker `protobuf:"bytes,3,rep,name=workers,proto3" json:"workers,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Workers []*Worker `protobuf:"bytes,3,rep,name=workers,proto3" json:"workers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListWorkersResponse) Reset() { *x = ListWorkersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[164] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListWorkersResponse) String() string { @@ -12921,8 +12636,8 @@ func (x *ListWorkersResponse) String() string { func (*ListWorkersResponse) ProtoMessage() {} func (x *ListWorkersResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[164] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[168] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12934,7 +12649,7 @@ func (x *ListWorkersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWorkersResponse.ProtoReflect.Descriptor instead. func (*ListWorkersResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{164} + return file_gateway_proto_rawDescGZIP(), []int{168} } func (x *ListWorkersResponse) GetOk() bool { @@ -12959,20 +12674,17 @@ func (x *ListWorkersResponse) GetWorkers() []*Worker { } type CordonWorkerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` unknownFields protoimpl.UnknownFields - - WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CordonWorkerRequest) Reset() { *x = CordonWorkerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[165] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CordonWorkerRequest) String() string { @@ -12982,8 +12694,8 @@ func (x *CordonWorkerRequest) String() string { func (*CordonWorkerRequest) ProtoMessage() {} func (x *CordonWorkerRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[165] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[169] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -12995,7 +12707,7 @@ func (x *CordonWorkerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CordonWorkerRequest.ProtoReflect.Descriptor instead. func (*CordonWorkerRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{165} + return file_gateway_proto_rawDescGZIP(), []int{169} } func (x *CordonWorkerRequest) GetWorkerId() string { @@ -13006,21 +12718,18 @@ func (x *CordonWorkerRequest) GetWorkerId() string { } type CordonWorkerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CordonWorkerResponse) Reset() { *x = CordonWorkerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[166] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[170] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CordonWorkerResponse) String() string { @@ -13030,8 +12739,8 @@ func (x *CordonWorkerResponse) String() string { func (*CordonWorkerResponse) ProtoMessage() {} func (x *CordonWorkerResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[166] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[170] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13043,7 +12752,7 @@ func (x *CordonWorkerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CordonWorkerResponse.ProtoReflect.Descriptor instead. func (*CordonWorkerResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{166} + return file_gateway_proto_rawDescGZIP(), []int{170} } func (x *CordonWorkerResponse) GetOk() bool { @@ -13061,20 +12770,17 @@ func (x *CordonWorkerResponse) GetErrMsg() string { } type UncordonWorkerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` unknownFields protoimpl.UnknownFields - - WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UncordonWorkerRequest) Reset() { *x = UncordonWorkerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[167] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[171] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UncordonWorkerRequest) String() string { @@ -13084,8 +12790,8 @@ func (x *UncordonWorkerRequest) String() string { func (*UncordonWorkerRequest) ProtoMessage() {} func (x *UncordonWorkerRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[167] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[171] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13097,7 +12803,7 @@ func (x *UncordonWorkerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UncordonWorkerRequest.ProtoReflect.Descriptor instead. func (*UncordonWorkerRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{167} + return file_gateway_proto_rawDescGZIP(), []int{171} } func (x *UncordonWorkerRequest) GetWorkerId() string { @@ -13108,21 +12814,18 @@ func (x *UncordonWorkerRequest) GetWorkerId() string { } type UncordonWorkerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UncordonWorkerResponse) Reset() { *x = UncordonWorkerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[168] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[172] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UncordonWorkerResponse) String() string { @@ -13132,8 +12835,8 @@ func (x *UncordonWorkerResponse) String() string { func (*UncordonWorkerResponse) ProtoMessage() {} func (x *UncordonWorkerResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[168] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[172] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13145,7 +12848,7 @@ func (x *UncordonWorkerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UncordonWorkerResponse.ProtoReflect.Descriptor instead. func (*UncordonWorkerResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{168} + return file_gateway_proto_rawDescGZIP(), []int{172} } func (x *UncordonWorkerResponse) GetOk() bool { @@ -13163,20 +12866,17 @@ func (x *UncordonWorkerResponse) GetErrMsg() string { } type DrainWorkerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` unknownFields protoimpl.UnknownFields - - WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DrainWorkerRequest) Reset() { *x = DrainWorkerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[169] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[173] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DrainWorkerRequest) String() string { @@ -13186,8 +12886,8 @@ func (x *DrainWorkerRequest) String() string { func (*DrainWorkerRequest) ProtoMessage() {} func (x *DrainWorkerRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[169] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[173] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13199,7 +12899,7 @@ func (x *DrainWorkerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DrainWorkerRequest.ProtoReflect.Descriptor instead. func (*DrainWorkerRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{169} + return file_gateway_proto_rawDescGZIP(), []int{173} } func (x *DrainWorkerRequest) GetWorkerId() string { @@ -13210,21 +12910,18 @@ func (x *DrainWorkerRequest) GetWorkerId() string { } type DrainWorkerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DrainWorkerResponse) Reset() { *x = DrainWorkerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[170] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[174] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DrainWorkerResponse) String() string { @@ -13234,8 +12931,8 @@ func (x *DrainWorkerResponse) String() string { func (*DrainWorkerResponse) ProtoMessage() {} func (x *DrainWorkerResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[170] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[174] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13247,7 +12944,7 @@ func (x *DrainWorkerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DrainWorkerResponse.ProtoReflect.Descriptor instead. func (*DrainWorkerResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{170} + return file_gateway_proto_rawDescGZIP(), []int{174} } func (x *DrainWorkerResponse) GetOk() bool { @@ -13265,18 +12962,16 @@ func (x *DrainWorkerResponse) GetErrMsg() string { } type ExportWorkspaceConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExportWorkspaceConfigRequest) Reset() { *x = ExportWorkspaceConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[171] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[175] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExportWorkspaceConfigRequest) String() string { @@ -13286,8 +12981,8 @@ func (x *ExportWorkspaceConfigRequest) String() string { func (*ExportWorkspaceConfigRequest) ProtoMessage() {} func (x *ExportWorkspaceConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[171] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[175] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13299,30 +12994,27 @@ func (x *ExportWorkspaceConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportWorkspaceConfigRequest.ProtoReflect.Descriptor instead. func (*ExportWorkspaceConfigRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{171} + return file_gateway_proto_rawDescGZIP(), []int{175} } type ExportWorkspaceConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GatewayHttpHost string `protobuf:"bytes,1,opt,name=gateway_http_host,json=gatewayHttpHost,proto3" json:"gateway_http_host,omitempty"` - GatewayHttpPort int32 `protobuf:"varint,2,opt,name=gateway_http_port,json=gatewayHttpPort,proto3" json:"gateway_http_port,omitempty"` - GatewayHttpTls bool `protobuf:"varint,3,opt,name=gateway_http_tls,json=gatewayHttpTls,proto3" json:"gateway_http_tls,omitempty"` - GatewayGrpcHost string `protobuf:"bytes,4,opt,name=gateway_grpc_host,json=gatewayGrpcHost,proto3" json:"gateway_grpc_host,omitempty"` - GatewayGrpcPort int32 `protobuf:"varint,5,opt,name=gateway_grpc_port,json=gatewayGrpcPort,proto3" json:"gateway_grpc_port,omitempty"` - GatewayGrpcTls bool `protobuf:"varint,6,opt,name=gateway_grpc_tls,json=gatewayGrpcTls,proto3" json:"gateway_grpc_tls,omitempty"` - WorkspaceId string `protobuf:"bytes,7,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + GatewayHttpHost string `protobuf:"bytes,1,opt,name=gateway_http_host,json=gatewayHttpHost,proto3" json:"gateway_http_host,omitempty"` + GatewayHttpPort int32 `protobuf:"varint,2,opt,name=gateway_http_port,json=gatewayHttpPort,proto3" json:"gateway_http_port,omitempty"` + GatewayHttpTls bool `protobuf:"varint,3,opt,name=gateway_http_tls,json=gatewayHttpTls,proto3" json:"gateway_http_tls,omitempty"` + GatewayGrpcHost string `protobuf:"bytes,4,opt,name=gateway_grpc_host,json=gatewayGrpcHost,proto3" json:"gateway_grpc_host,omitempty"` + GatewayGrpcPort int32 `protobuf:"varint,5,opt,name=gateway_grpc_port,json=gatewayGrpcPort,proto3" json:"gateway_grpc_port,omitempty"` + GatewayGrpcTls bool `protobuf:"varint,6,opt,name=gateway_grpc_tls,json=gatewayGrpcTls,proto3" json:"gateway_grpc_tls,omitempty"` + WorkspaceId string `protobuf:"bytes,7,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExportWorkspaceConfigResponse) Reset() { *x = ExportWorkspaceConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[172] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[176] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExportWorkspaceConfigResponse) String() string { @@ -13332,8 +13024,8 @@ func (x *ExportWorkspaceConfigResponse) String() string { func (*ExportWorkspaceConfigResponse) ProtoMessage() {} func (x *ExportWorkspaceConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[172] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[176] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13345,7 +13037,7 @@ func (x *ExportWorkspaceConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportWorkspaceConfigResponse.ProtoReflect.Descriptor instead. func (*ExportWorkspaceConfigResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{172} + return file_gateway_proto_rawDescGZIP(), []int{176} } func (x *ExportWorkspaceConfigResponse) GetGatewayHttpHost() string { @@ -13398,25 +13090,22 @@ func (x *ExportWorkspaceConfigResponse) GetWorkspaceId() string { } type UpdateAgentAvailabilityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` - Schedulable bool `protobuf:"varint,2,opt,name=schedulable,proto3" json:"schedulable,omitempty"` - Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + Schedulable bool `protobuf:"varint,2,opt,name=schedulable,proto3" json:"schedulable,omitempty"` + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Unix nanoseconds, matching the *_unix_nano convention used elsewhere in // this file (e.g. AgentLogRecord.timestamp_unix_nano). ObservedAtUnixNano int64 `protobuf:"varint,4,opt,name=observed_at_unix_nano,json=observedAtUnixNano,proto3" json:"observed_at_unix_nano,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateAgentAvailabilityRequest) Reset() { *x = UpdateAgentAvailabilityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[173] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAgentAvailabilityRequest) String() string { @@ -13426,8 +13115,8 @@ func (x *UpdateAgentAvailabilityRequest) String() string { func (*UpdateAgentAvailabilityRequest) ProtoMessage() {} func (x *UpdateAgentAvailabilityRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[173] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[177] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13439,7 +13128,7 @@ func (x *UpdateAgentAvailabilityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAgentAvailabilityRequest.ProtoReflect.Descriptor instead. func (*UpdateAgentAvailabilityRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{173} + return file_gateway_proto_rawDescGZIP(), []int{177} } func (x *UpdateAgentAvailabilityRequest) GetAgentToken() string { @@ -13471,21 +13160,18 @@ func (x *UpdateAgentAvailabilityRequest) GetObservedAtUnixNano() int64 { } type UpdateAgentAvailabilityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAgentAvailabilityResponse) Reset() { *x = UpdateAgentAvailabilityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[174] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAgentAvailabilityResponse) String() string { @@ -13495,8 +13181,8 @@ func (x *UpdateAgentAvailabilityResponse) String() string { func (*UpdateAgentAvailabilityResponse) ProtoMessage() {} func (x *UpdateAgentAvailabilityResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[174] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[178] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13508,7 +13194,7 @@ func (x *UpdateAgentAvailabilityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAgentAvailabilityResponse.ProtoReflect.Descriptor instead. func (*UpdateAgentAvailabilityResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{174} + return file_gateway_proto_rawDescGZIP(), []int{178} } func (x *UpdateAgentAvailabilityResponse) GetOk() bool { @@ -13528,21 +13214,18 @@ func (x *UpdateAgentAvailabilityResponse) GetErrMsg() string { // Managed SSH messages live at the end of this file so adding the feature // does not renumber every existing generated message implementation. type DownloadMachineSSHKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DownloadMachineSSHKeyRequest) Reset() { *x = DownloadMachineSSHKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[175] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[179] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DownloadMachineSSHKeyRequest) String() string { @@ -13552,8 +13235,8 @@ func (x *DownloadMachineSSHKeyRequest) String() string { func (*DownloadMachineSSHKeyRequest) ProtoMessage() {} func (x *DownloadMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[175] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[179] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13565,7 +13248,7 @@ func (x *DownloadMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadMachineSSHKeyRequest.ProtoReflect.Descriptor instead. func (*DownloadMachineSSHKeyRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{175} + return file_gateway_proto_rawDescGZIP(), []int{179} } func (x *DownloadMachineSSHKeyRequest) GetPoolName() string { @@ -13583,26 +13266,23 @@ func (x *DownloadMachineSSHKeyRequest) GetMachineId() string { } type DownloadMachineSSHKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - PrivateKey string `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - Filename string `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` - Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` - Fingerprint string `protobuf:"bytes,6,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` - ActivationRequired bool `protobuf:"varint,7,opt,name=activation_required,json=activationRequired,proto3" json:"activation_required,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + PrivateKey string `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + Filename string `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` + Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` + Fingerprint string `protobuf:"bytes,6,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` + ActivationRequired bool `protobuf:"varint,7,opt,name=activation_required,json=activationRequired,proto3" json:"activation_required,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DownloadMachineSSHKeyResponse) Reset() { *x = DownloadMachineSSHKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[176] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[180] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DownloadMachineSSHKeyResponse) String() string { @@ -13612,8 +13292,8 @@ func (x *DownloadMachineSSHKeyResponse) String() string { func (*DownloadMachineSSHKeyResponse) ProtoMessage() {} func (x *DownloadMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[176] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[180] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13625,7 +13305,7 @@ func (x *DownloadMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadMachineSSHKeyResponse.ProtoReflect.Descriptor instead. func (*DownloadMachineSSHKeyResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{176} + return file_gateway_proto_rawDescGZIP(), []int{180} } func (x *DownloadMachineSSHKeyResponse) GetOk() bool { @@ -13678,21 +13358,18 @@ func (x *DownloadMachineSSHKeyResponse) GetActivationRequired() bool { } type RotateMachineSSHKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RotateMachineSSHKeyRequest) Reset() { *x = RotateMachineSSHKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[177] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[181] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RotateMachineSSHKeyRequest) String() string { @@ -13702,8 +13379,8 @@ func (x *RotateMachineSSHKeyRequest) String() string { func (*RotateMachineSSHKeyRequest) ProtoMessage() {} func (x *RotateMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[177] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[181] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13715,7 +13392,7 @@ func (x *RotateMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateMachineSSHKeyRequest.ProtoReflect.Descriptor instead. func (*RotateMachineSSHKeyRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{177} + return file_gateway_proto_rawDescGZIP(), []int{181} } func (x *RotateMachineSSHKeyRequest) GetPoolName() string { @@ -13733,22 +13410,19 @@ func (x *RotateMachineSSHKeyRequest) GetMachineId() string { } type RotateMachineSSHKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Ssh *MachineSSHAccess `protobuf:"bytes,3,opt,name=ssh,proto3" json:"ssh,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Ssh *MachineSSHAccess `protobuf:"bytes,3,opt,name=ssh,proto3" json:"ssh,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RotateMachineSSHKeyResponse) Reset() { *x = RotateMachineSSHKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[178] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[182] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RotateMachineSSHKeyResponse) String() string { @@ -13758,8 +13432,8 @@ func (x *RotateMachineSSHKeyResponse) String() string { func (*RotateMachineSSHKeyResponse) ProtoMessage() {} func (x *RotateMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[178] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[182] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13771,7 +13445,7 @@ func (x *RotateMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateMachineSSHKeyResponse.ProtoReflect.Descriptor instead. func (*RotateMachineSSHKeyResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{178} + return file_gateway_proto_rawDescGZIP(), []int{182} } func (x *RotateMachineSSHKeyResponse) GetOk() bool { @@ -13796,22 +13470,19 @@ func (x *RotateMachineSSHKeyResponse) GetSsh() *MachineSSHAccess { } type ActivateMachineSSHKeyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` + MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` + Generation uint64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` unknownFields protoimpl.UnknownFields - - PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` - MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` - Generation uint64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ActivateMachineSSHKeyRequest) Reset() { *x = ActivateMachineSSHKeyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[179] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[183] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ActivateMachineSSHKeyRequest) String() string { @@ -13821,8 +13492,8 @@ func (x *ActivateMachineSSHKeyRequest) String() string { func (*ActivateMachineSSHKeyRequest) ProtoMessage() {} func (x *ActivateMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[179] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[183] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13834,7 +13505,7 @@ func (x *ActivateMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivateMachineSSHKeyRequest.ProtoReflect.Descriptor instead. func (*ActivateMachineSSHKeyRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{179} + return file_gateway_proto_rawDescGZIP(), []int{183} } func (x *ActivateMachineSSHKeyRequest) GetPoolName() string { @@ -13859,22 +13530,19 @@ func (x *ActivateMachineSSHKeyRequest) GetGeneration() uint64 { } type ActivateMachineSSHKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + Ssh *MachineSSHAccess `protobuf:"bytes,3,opt,name=ssh,proto3" json:"ssh,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` - Ssh *MachineSSHAccess `protobuf:"bytes,3,opt,name=ssh,proto3" json:"ssh,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ActivateMachineSSHKeyResponse) Reset() { *x = ActivateMachineSSHKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[180] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[184] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ActivateMachineSSHKeyResponse) String() string { @@ -13884,8 +13552,8 @@ func (x *ActivateMachineSSHKeyResponse) String() string { func (*ActivateMachineSSHKeyResponse) ProtoMessage() {} func (x *ActivateMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[180] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[184] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13897,7 +13565,7 @@ func (x *ActivateMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivateMachineSSHKeyResponse.ProtoReflect.Descriptor instead. func (*ActivateMachineSSHKeyResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{180} + return file_gateway_proto_rawDescGZIP(), []int{184} } func (x *ActivateMachineSSHKeyResponse) GetOk() bool { @@ -13922,24 +13590,21 @@ func (x *ActivateMachineSSHKeyResponse) GetSsh() *MachineSSHAccess { } type AgentSSHConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - KeyFingerprint string `protobuf:"bytes,4,opt,name=key_fingerprint,json=keyFingerprint,proto3" json:"key_fingerprint,omitempty"` - Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + KeyFingerprint string `protobuf:"bytes,4,opt,name=key_fingerprint,json=keyFingerprint,proto3" json:"key_fingerprint,omitempty"` + Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentSSHConfig) Reset() { - *x = AgentSSHConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[181] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + *x = AgentSSHConfig{} + mi := &file_gateway_proto_msgTypes[185] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentSSHConfig) String() string { @@ -13949,8 +13614,8 @@ func (x *AgentSSHConfig) String() string { func (*AgentSSHConfig) ProtoMessage() {} func (x *AgentSSHConfig) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[181] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[185] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -13962,7 +13627,7 @@ func (x *AgentSSHConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentSSHConfig.ProtoReflect.Descriptor instead. func (*AgentSSHConfig) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{181} + return file_gateway_proto_rawDescGZIP(), []int{185} } func (x *AgentSSHConfig) GetEnabled() bool { @@ -14001,26 +13666,23 @@ func (x *AgentSSHConfig) GetGeneration() uint64 { } type UpdateAgentSSHStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` - Generation uint64 `protobuf:"varint,2,opt,name=generation,proto3" json:"generation,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - PublicIp string `protobuf:"bytes,4,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` - HostKeyFingerprint string `protobuf:"bytes,5,opt,name=host_key_fingerprint,json=hostKeyFingerprint,proto3" json:"host_key_fingerprint,omitempty"` - Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` - ListenPort uint32 `protobuf:"varint,7,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` + Generation uint64 `protobuf:"varint,2,opt,name=generation,proto3" json:"generation,omitempty"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + PublicIp string `protobuf:"bytes,4,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` + HostKeyFingerprint string `protobuf:"bytes,5,opt,name=host_key_fingerprint,json=hostKeyFingerprint,proto3" json:"host_key_fingerprint,omitempty"` + Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + ListenPort uint32 `protobuf:"varint,7,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateAgentSSHStatusRequest) Reset() { *x = UpdateAgentSSHStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[182] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[186] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAgentSSHStatusRequest) String() string { @@ -14030,8 +13692,8 @@ func (x *UpdateAgentSSHStatusRequest) String() string { func (*UpdateAgentSSHStatusRequest) ProtoMessage() {} func (x *UpdateAgentSSHStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[182] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[186] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14043,7 +13705,7 @@ func (x *UpdateAgentSSHStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAgentSSHStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateAgentSSHStatusRequest) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{182} + return file_gateway_proto_rawDescGZIP(), []int{186} } func (x *UpdateAgentSSHStatusRequest) GetAgentToken() string { @@ -14096,21 +13758,18 @@ func (x *UpdateAgentSSHStatusRequest) GetListenPort() uint32 { } type UpdateAgentSSHStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateAgentSSHStatusResponse) Reset() { *x = UpdateAgentSSHStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[183] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[187] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateAgentSSHStatusResponse) String() string { @@ -14120,8 +13779,8 @@ func (x *UpdateAgentSSHStatusResponse) String() string { func (*UpdateAgentSSHStatusResponse) ProtoMessage() {} func (x *UpdateAgentSSHStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[183] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[187] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14133,7 +13792,7 @@ func (x *UpdateAgentSSHStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAgentSSHStatusResponse.ProtoReflect.Descriptor instead. func (*UpdateAgentSSHStatusResponse) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{183} + return file_gateway_proto_rawDescGZIP(), []int{187} } func (x *UpdateAgentSSHStatusResponse) GetOk() bool { @@ -14151,10 +13810,7 @@ func (x *UpdateAgentSSHStatusResponse) GetErrMsg() string { } type MachineSSHAccess struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Supported bool `protobuf:"varint,1,opt,name=supported,proto3" json:"supported,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` PublicIp string `protobuf:"bytes,3,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` @@ -14173,15 +13829,15 @@ type MachineSSHAccess struct { PendingKeyDownloaded bool `protobuf:"varint,16,opt,name=pending_key_downloaded,json=pendingKeyDownloaded,proto3" json:"pending_key_downloaded,omitempty"` Error string `protobuf:"bytes,17,opt,name=error,proto3" json:"error,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MachineSSHAccess) Reset() { *x = MachineSSHAccess{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[184] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[188] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MachineSSHAccess) String() string { @@ -14191,8 +13847,8 @@ func (x *MachineSSHAccess) String() string { func (*MachineSSHAccess) ProtoMessage() {} func (x *MachineSSHAccess) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[184] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[188] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14204,7 +13860,7 @@ func (x *MachineSSHAccess) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSSHAccess.ProtoReflect.Descriptor instead. func (*MachineSSHAccess) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{184} + return file_gateway_proto_rawDescGZIP(), []int{188} } func (x *MachineSSHAccess) GetSupported() bool { @@ -14337,24 +13993,21 @@ func (x *MachineSSHAccess) GetUpdatedAt() *timestamppb.Timestamp { // means the managed pool configuration is authoritative; older gateways omit // it and agents retain their installer-level state/cache defaults. type AgentPoolCacheDiskConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` + MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` + MaxUsagePct float64 `protobuf:"fixed64,4,opt,name=max_usage_pct,json=maxUsagePct,proto3" json:"max_usage_pct,omitempty"` + MinFreeBytes int64 `protobuf:"varint,5,opt,name=min_free_bytes,json=minFreeBytes,proto3" json:"min_free_bytes,omitempty"` unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` - MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` - MaxUsagePct float64 `protobuf:"fixed64,4,opt,name=max_usage_pct,json=maxUsagePct,proto3" json:"max_usage_pct,omitempty"` - MinFreeBytes int64 `protobuf:"varint,5,opt,name=min_free_bytes,json=minFreeBytes,proto3" json:"min_free_bytes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentPoolCacheDiskConfig) Reset() { *x = AgentPoolCacheDiskConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[185] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[189] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentPoolCacheDiskConfig) String() string { @@ -14364,8 +14017,8 @@ func (x *AgentPoolCacheDiskConfig) String() string { func (*AgentPoolCacheDiskConfig) ProtoMessage() {} func (x *AgentPoolCacheDiskConfig) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[185] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[189] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14377,7 +14030,7 @@ func (x *AgentPoolCacheDiskConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentPoolCacheDiskConfig.ProtoReflect.Descriptor instead. func (*AgentPoolCacheDiskConfig) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{185} + return file_gateway_proto_rawDescGZIP(), []int{189} } func (x *AgentPoolCacheDiskConfig) GetEnabled() bool { @@ -14416,21 +14069,18 @@ func (x *AgentPoolCacheDiskConfig) GetMinFreeBytes() int64 { } type AgentPoolCacheConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Disk *AgentPoolCacheDiskConfig `protobuf:"bytes,2,opt,name=disk,proto3" json:"disk,omitempty"` unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - Disk *AgentPoolCacheDiskConfig `protobuf:"bytes,2,opt,name=disk,proto3" json:"disk,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AgentPoolCacheConfig) Reset() { *x = AgentPoolCacheConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[186] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[190] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentPoolCacheConfig) String() string { @@ -14440,8 +14090,8 @@ func (x *AgentPoolCacheConfig) String() string { func (*AgentPoolCacheConfig) ProtoMessage() {} func (x *AgentPoolCacheConfig) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[186] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[190] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14453,7 +14103,7 @@ func (x *AgentPoolCacheConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentPoolCacheConfig.ProtoReflect.Descriptor instead. func (*AgentPoolCacheConfig) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{186} + return file_gateway_proto_rawDescGZIP(), []int{190} } func (x *AgentPoolCacheConfig) GetEnabled() bool { @@ -14471,28 +14121,26 @@ func (x *AgentPoolCacheConfig) GetDisk() *AgentPoolCacheDiskConfig { } type AgentPoolRuntimeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetworkPreallocation bool `protobuf:"varint,1,opt,name=network_preallocation,json=networkPreallocation,proto3" json:"network_preallocation,omitempty"` - CriuEnabled bool `protobuf:"varint,2,opt,name=criu_enabled,json=criuEnabled,proto3" json:"criu_enabled,omitempty"` - TmpSizeLimit string `protobuf:"bytes,3,opt,name=tmp_size_limit,json=tmpSizeLimit,proto3" json:"tmp_size_limit,omitempty"` - StorageMode string `protobuf:"bytes,4,opt,name=storage_mode,json=storageMode,proto3" json:"storage_mode,omitempty"` - StoragePath string `protobuf:"bytes,5,opt,name=storage_path,json=storagePath,proto3" json:"storage_path,omitempty"` - ImagesPath string `protobuf:"bytes,6,opt,name=images_path,json=imagesPath,proto3" json:"images_path,omitempty"` - DurableDisksPath string `protobuf:"bytes,7,opt,name=durable_disks_path,json=durableDisksPath,proto3" json:"durable_disks_path,omitempty"` - Cache *AgentPoolCacheConfig `protobuf:"bytes,8,opt,name=cache,proto3" json:"cache,omitempty"` - ConfigGroup string `protobuf:"bytes,9,opt,name=config_group,json=configGroup,proto3" json:"config_group,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + NetworkPreallocation bool `protobuf:"varint,1,opt,name=network_preallocation,json=networkPreallocation,proto3" json:"network_preallocation,omitempty"` + CriuEnabled bool `protobuf:"varint,2,opt,name=criu_enabled,json=criuEnabled,proto3" json:"criu_enabled,omitempty"` + TmpSizeLimit string `protobuf:"bytes,3,opt,name=tmp_size_limit,json=tmpSizeLimit,proto3" json:"tmp_size_limit,omitempty"` + StorageMode string `protobuf:"bytes,4,opt,name=storage_mode,json=storageMode,proto3" json:"storage_mode,omitempty"` + StoragePath string `protobuf:"bytes,5,opt,name=storage_path,json=storagePath,proto3" json:"storage_path,omitempty"` + ImagesPath string `protobuf:"bytes,6,opt,name=images_path,json=imagesPath,proto3" json:"images_path,omitempty"` + DurableDisksPath string `protobuf:"bytes,7,opt,name=durable_disks_path,json=durableDisksPath,proto3" json:"durable_disks_path,omitempty"` + Cache *AgentPoolCacheConfig `protobuf:"bytes,8,opt,name=cache,proto3" json:"cache,omitempty"` + ConfigGroup string `protobuf:"bytes,9,opt,name=config_group,json=configGroup,proto3" json:"config_group,omitempty"` + GpuVirtualized bool `protobuf:"varint,10,opt,name=gpu_virtualized,json=gpuVirtualized,proto3" json:"gpu_virtualized,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AgentPoolRuntimeConfig) Reset() { *x = AgentPoolRuntimeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_gateway_proto_msgTypes[187] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gateway_proto_msgTypes[191] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AgentPoolRuntimeConfig) String() string { @@ -14502,8 +14150,8 @@ func (x *AgentPoolRuntimeConfig) String() string { func (*AgentPoolRuntimeConfig) ProtoMessage() {} func (x *AgentPoolRuntimeConfig) ProtoReflect() protoreflect.Message { - mi := &file_gateway_proto_msgTypes[187] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gateway_proto_msgTypes[191] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -14515,7 +14163,7 @@ func (x *AgentPoolRuntimeConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentPoolRuntimeConfig.ProtoReflect.Descriptor instead. func (*AgentPoolRuntimeConfig) Descriptor() ([]byte, []int) { - return file_gateway_proto_rawDescGZIP(), []int{187} + return file_gateway_proto_rawDescGZIP(), []int{191} } func (x *AgentPoolRuntimeConfig) GetNetworkPreallocation() bool { @@ -14581,2750 +14229,1390 @@ func (x *AgentPoolRuntimeConfig) GetConfigGroup() string { return "" } +func (x *AgentPoolRuntimeConfig) GetGpuVirtualized() bool { + if x != nil { + return x.GpuVirtualized + } + return false +} + var File_gateway_proto protoreflect.FileDescriptor -var file_gateway_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x21, - 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, - 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x53, - 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x7e, 0x0a, 0x13, 0x53, - 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, - 0x6f, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1b, - 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x38, 0x0a, 0x0e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x03, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x59, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x30, - 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x70, 0x75, 0x74, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x22, 0xec, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0f, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, - 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x75, - 0x73, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x75, 0x73, 0x65, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, - 0xcf, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, - 0x30, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x70, 0x75, 0x74, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x22, 0x94, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x4e, 0x0a, 0x0b, 0x70, 0x75, 0x74, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x75, - 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, - 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x75, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, - 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, - 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x50, 0x75, 0x74, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, - 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xd6, 0x01, 0x0a, 0x1d, 0x53, 0x79, 0x6e, 0x63, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 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, 0x12, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x74, 0x68, 0x12, 0x15, 0x0a, 0x06, 0x69, - 0x73, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, - 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x79, 0x6e, - 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, - 0x22, 0x30, 0x0a, 0x1e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, - 0x6f, 0x6b, 0x22, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x77, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x4d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 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, 0x22, - 0x44, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 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, 0x22, 0x6f, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x02, 0x6f, 0x6b, 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, 0x1b, 0x0a, 0x09, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xd3, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, - 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x62, - 0x0a, 0x18, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x16, 0x73, 0x79, 0x6e, 0x63, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x3d, 0x0a, - 0x18, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 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, 0x22, 0x64, 0x0a, 0x19, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x4e, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x49, 0x64, 0x22, 0x23, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x22, 0x85, 0x02, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, - 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6b, - 0x65, 0x65, 0x70, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x57, 0x61, 0x72, 0x6d, - 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x21, 0x0a, 0x0f, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, - 0x6f, 0x6b, 0x22, 0x24, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, - 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb9, 0x03, 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 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, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 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, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 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, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x77, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, - 0x12, 0x23, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, - 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x2d, 0x0a, 0x10, 0x53, - 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x11, 0x53, 0x74, - 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, - 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x78, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 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, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 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, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x09, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x61, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, - 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, - 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, - 0x13, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x74, 0x61, 0x73, 0x6b, - 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x25, 0x0a, - 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x09, 0x4c, 0x4c, 0x4d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x6c, 0x6f, - 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6c, 0x6f, - 0x54, 0x69, 0x65, 0x72, 0x22, 0xcc, 0x03, 0x0a, 0x15, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, - 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, - 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, - 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, - 0x76, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x36, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x15, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x75, 0x72, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x69, 0x6e, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4b, 0x69, 0x6e, 0x64, - 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x03, 0x6c, - 0x6c, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4c, 0x4c, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x6c, 0x6c, - 0x6d, 0x12, 0x3a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0xa9, 0x01, - 0x0a, 0x0b, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 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, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x18, 0x04, 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, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 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, 0x22, 0x59, 0x0a, 0x0a, 0x54, 0x61, 0x73, - 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x03, 0x74, 0x74, 0x6c, 0x22, 0x8e, 0x01, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, - 0x33, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x22, 0xc4, 0x0c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, - 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, - 0x63, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x77, - 0x61, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x57, 0x61, 0x72, 0x6d, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, - 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, - 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, - 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, - 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x61, 0x72, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x52, 0x0a, 0x61, 0x75, 0x74, - 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x0a, - 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x1c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x29, 0x0a, - 0x11, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x73, 0x74, 0x75, 0x62, 0x5f, - 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, - 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x70, - 0x72, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x07, 0x70, 0x72, 0x69, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x06, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, - 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x63, - 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x18, 0x26, 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, 0x27, 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, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x04, - 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, - 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x18, - 0x2c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x05, 0x64, 0x69, 0x73, - 0x6b, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, - 0x47, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x2e, 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, 0x22, 0xfc, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x6f, 0x6b, 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, 0x17, 0x0a, - 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x6d, - 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x4d, 0x73, - 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x70, 0x61, - 0x63, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x47, 0x70, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, - 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x5a, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x6f, 0x6c, - 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x6c, - 0x6f, 0x75, 0x74, 0x22, 0xdd, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, - 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, - 0x6f, 0x6b, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, - 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x25, 0x0a, 0x0e, - 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x65, 0x6e, 0x76, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x07, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x79, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, - 0x35, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x27, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x41, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, - 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x22, 0x28, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x17, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, - 0x22, 0x48, 0x0a, 0x16, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x42, 0x0a, 0x17, 0x53, 0x63, - 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x29, - 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xec, - 0x02, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, - 0x47, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, - 0x65, 0x65, 0x47, 0x70, 0x75, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, - 0x43, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x70, 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, - 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, - 0x6e, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x70, 0x75, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x43, 0x70, 0x75, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x15, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xbb, 0x01, - 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x11, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x23, 0x0a, 0x05, 0x70, 0x6f, 0x6f, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0xf9, - 0x02, 0x0a, 0x0a, 0x50, 0x6f, 0x6f, 0x6c, 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, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, - 0x67, 0x70, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6d, - 0x61, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, - 0x6d, 0x61, 0x78, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x52, 0x65, - 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, - 0x19, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x22, 0xd2, 0x04, 0x0a, 0x09, 0x50, - 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, - 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, - 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, - 0x72, 0x79, 0x4d, 0x62, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, - 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, - 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x62, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, - 0x62, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x6f, 0x64, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, - 0xfb, 0x05, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x19, 0x0a, - 0x08, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, - 0x12, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, - 0x72, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, - 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x69, 0x6c, - 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x5f, 0x61, 0x74, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x10, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, - 0x6c, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, - 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x62, 0x22, 0xad, 0x04, - 0x0a, 0x0b, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6d, 0x69, 0x63, - 0x72, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x74, 0x65, 0x64, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 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, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x65, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, - 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, - 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0x40, 0x0a, - 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, - 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, - 0x6d, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, - 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, - 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x22, 0x5a, - 0x0a, 0x19, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, - 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, - 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, - 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x1a, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, - 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x43, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2a, 0x0a, 0x05, - 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, - 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0x9d, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x69, - 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, - 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, - 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, - 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, - 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x74, 0x75, 0x70, - 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x62, - 0x79, 0x6f, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0xd8, 0x05, 0x0a, 0x0d, 0x42, 0x59, 0x4f, 0x43, - 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, - 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x29, 0x0a, - 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, - 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, - 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x61, 0x6e, 0x64, - 0x62, 0x6f, 0x78, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x50, - 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, - 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x6f, - 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, - 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, - 0x63, 0x72, 0x6f, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, - 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c, - 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x12, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x31, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, - 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, - 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x62, - 0x79, 0x6f, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0x75, 0x0a, 0x14, 0x53, 0x63, 0x61, 0x6c, 0x65, - 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x96, - 0x01, 0x0a, 0x15, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x62, - 0x79, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0xe2, 0x04, 0x0a, 0x12, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2e, - 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x6c, - 0x6c, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, - 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, - 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, - 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x11, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, - 0x47, 0x70, 0x75, 0x48, 0x6f, 0x75, 0x72, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x9a, 0x05, 0x0a, - 0x10, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, - 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, - 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, - 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, - 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, - 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x12, 0x17, 0x0a, - 0x07, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x67, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x64, 0x69, 0x73, 0x6b, 0x47, 0x62, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, - 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, - 0x66, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x39, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x12, 0x36, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, - 0x70, 0x75, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x14, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x47, 0x70, 0x75, - 0x48, 0x6f, 0x75, 0x72, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xb2, 0x02, 0x0a, 0x1f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, - 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, - 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, - 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, - 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x47, 0x70, 0x75, 0x48, 0x6f, 0x75, 0x72, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x82, - 0x01, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x07, - 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x22, 0x93, 0x03, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, - 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, - 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, - 0x69, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x14, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x47, 0x70, 0x75, 0x48, 0x6f, 0x75, 0x72, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x88, 0x01, - 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x62, 0x6c, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x68, - 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x20, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x40, - 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, - 0x22, 0x4b, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x36, 0x0a, - 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, - 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, - 0x73, 0x67, 0x12, 0x37, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x53, 0x0a, 0x20, 0x47, - 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4a, 0x6f, 0x69, - 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, - 0x22, 0xb7, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x46, 0x0a, 0x1c, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, - 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x22, 0x7b, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x31, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x22, - 0x3b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x22, 0x77, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, - 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, - 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, - 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2f, 0x0a, 0x05, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x05, - 0x6f, 0x66, 0x66, 0x65, 0x72, 0x22, 0x88, 0x03, 0x0a, 0x11, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 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, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, - 0x0a, 0x63, 0x72, 0x65, 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, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x5f, 0x63, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x50, 0x65, 0x72, 0x47, 0x70, 0x75, 0x48, 0x6f, 0x75, 0x72, 0x43, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0x7b, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, - 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7e, 0x0a, - 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x06, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x22, 0x1f, 0x0a, - 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7f, - 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x07, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x22, - 0x3d, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x4a, - 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xc8, 0x01, 0x0a, 0x1b, 0x4c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x03, 0x65, 0x6e, 0x76, 0x22, 0xf2, 0x01, 0x0a, 0x1c, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x03, 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, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x22, 0x78, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, - 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x1c, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, - 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xa4, 0x02, 0x0a, 0x10, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 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, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 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, 0x22, 0x83, - 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6f, 0x6f, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x70, 0x6f, - 0x6f, 0x6c, 0x22, 0x67, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x27, 0x0a, 0x11, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, - 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, - 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x4d, 0x73, 0x67, 0x22, 0x5e, 0x0a, 0x19, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, - 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x70, - 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x70, - 0x65, 0x6e, 0x64, 0x22, 0x6f, 0x0a, 0x1a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, - 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, - 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, - 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x4b, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, - 0x6c, 0x22, 0x97, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, - 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x32, 0x0a, 0x1a, 0x52, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x46, 0x0a, 0x1b, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, - 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x4a, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x74, 0x74, 0x6c, 0x22, 0xb0, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, - 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, - 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 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, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x4c, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x22, 0x71, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, - 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x94, 0x05, 0x0a, 0x14, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, - 0x70, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, - 0x70, 0x63, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x54, 0x6c, 0x73, 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, - 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x30, 0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x39, 0x0a, 0x19, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x09, 0x74, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x74, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0xe2, - 0x01, 0x0a, 0x12, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x75, - 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x75, 0x73, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, - 0x12, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x73, 0x74, 0x48, - 0x6f, 0x6f, 0x6b, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, - 0x6f, 0x73, 0x74, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x11, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x50, 0x63, 0x74, 0x22, 0xc7, 0x01, 0x0a, 0x14, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x35, 0x0a, 0x04, 0x6c, - 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x53, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x6f, - 0x67, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x81, 0x01, - 0x0a, 0x18, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x53, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x0d, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x22, 0x81, 0x05, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6e, 0x67, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, - 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x67, - 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x3a, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, - 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0x17, 0x0a, 0x07, 0x67, 0x70, 0x75, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x67, 0x70, 0x75, 0x49, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, - 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x21, - 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x11, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, - 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, - 0x72, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3b, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, - 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, - 0x70, 0x22, 0x6f, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x6c, 0x69, - 0x67, 0x68, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x22, 0xb9, 0x03, 0x0a, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 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, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x77, - 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x67, - 0x0a, 0x26, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x27, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, - 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, - 0x61, 0x6c, 0x22, 0x39, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6f, 0x0a, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0xad, - 0x02, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x05, 0x61, - 0x74, 0x74, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, - 0x74, 0x74, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x49, - 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x96, 0x08, 0x0a, 0x0f, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 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, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, - 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x67, 0x70, 0x75, 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, 0x25, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x70, 0x75, 0x41, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, - 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6c, 0x6f, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x11, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, - 0x6c, 0x6c, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 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, 0x12, 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, 0x13, 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, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, - 0x73, 0x65, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, - 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x1f, 0x0a, 0x0b, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x6f, 0x6f, 0x74, - 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x76, 0x69, - 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, - 0x63, 0x70, 0x75, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x70, 0x75, - 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, - 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x35, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc6, 0x01, 0x0a, 0x13, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, - 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, - 0x52, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x73, - 0x73, 0x68, 0x22, 0xb7, 0x01, 0x0a, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x2e, 0x0a, 0x13, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, - 0x61, 0x6e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x22, 0xb4, 0x04, 0x0a, - 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, - 0x4e, 0x61, 0x6e, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x11, 0x63, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, - 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x4d, 0x62, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x6b, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x69, - 0x73, 0x6b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x24, - 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, - 0x65, 0x50, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, - 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x22, 0xa1, 0x02, 0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 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, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x2e, - 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, - 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x12, 0x1d, - 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x38, 0x0a, - 0x0a, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd0, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, - 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x07, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x41, 0x0a, 0x16, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xb9, 0x04, - 0x0a, 0x07, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, - 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 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, 0x1b, 0x0a, 0x09, 0x70, 0x6f, - 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x55, 0x72, 0x6c, - 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x63, - 0x61, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, - 0x0f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x03, - 0x73, 0x73, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0xed, 0x05, 0x0a, 0x0e, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2e, 0x0a, 0x13, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x43, 0x70, 0x75, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x16, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x11, 0x63, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x63, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x70, 0x75, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x72, - 0x65, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, - 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, - 0x63, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x63, - 0x68, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x61, 0x63, 0x68, 0x65, 0x4d, 0x65, 0x6d, 0x6f, - 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, - 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, - 0x62, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, - 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x20, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, - 0x22, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x4d, 0x62, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x64, 0x69, 0x73, - 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x70, 0x61, 0x74, - 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0b, 0x70, 0x61, - 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x12, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, - 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, - 0x64, 0x4d, 0x62, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x21, - 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, - 0x62, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x75, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x22, 0x48, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xfe, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x67, 0x70, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x70, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x67, 0x70, 0x75, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 0x73, 0x1a, 0x37, - 0x0a, 0x09, 0x47, 0x70, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x33, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa9, - 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x2c, 0x0a, - 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x15, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, - 0x30, 0x0a, 0x14, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, - 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, - 0x22, 0xb6, 0x02, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 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, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x65, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x26, 0x0a, - 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x33, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x13, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x2f, 0x0a, 0x12, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, - 0x64, 0x22, 0x64, 0x0a, 0x13, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2f, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, - 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, - 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, - 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, - 0x62, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x22, 0x4b, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x14, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x67, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x12, 0x27, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x22, 0x32, 0x0a, 0x13, 0x43, 0x6f, - 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3f, - 0x0a, 0x14, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, - 0x34, 0x0a, 0x15, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, - 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x16, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, - 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, - 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x31, 0x0a, 0x12, 0x44, 0x72, 0x61, 0x69, - 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x13, 0x44, - 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, - 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x1e, 0x0a, 0x1c, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc6, 0x02, 0x0a, 0x1d, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x6f, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x48, 0x74, 0x74, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, - 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, 0x70, 0x54, 0x6c, 0x73, 0x12, - 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, - 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, - 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x54, 0x6c, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x22, 0xae, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, - 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x22, 0x4a, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x22, 0x5a, 0x0a, 0x1c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 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, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xf8, 0x01, - 0x0a, 0x1d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, - 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x58, 0x0a, 0x1a, 0x52, 0x6f, 0x74, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x49, 0x64, 0x22, 0x73, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, - 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x73, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0x7a, 0x0a, 0x1c, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x1d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, - 0x03, 0x73, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0xae, 0x01, 0x0a, 0x0e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x65, 0x79, - 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfc, 0x01, 0x0a, 0x1b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, - 0x70, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, - 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x12, 0x68, 0x6f, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, - 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, - 0x4d, 0x73, 0x67, 0x22, 0xda, 0x05, 0x0a, 0x10, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, - 0x53, 0x48, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 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, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, - 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6b, - 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, - 0x79, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x12, 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, 0xba, 0x01, 0x0a, 0x18, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x70, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x66, - 0x72, 0x65, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x67, 0x0a, - 0x14, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x35, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, - 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x22, 0x83, 0x03, 0x0a, 0x16, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x33, 0x0a, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x65, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x72, - 0x69, 0x75, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6d, 0x70, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x74, 0x6d, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x73, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2a, 0x43, 0x0a, 0x1f, - 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x09, 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, - 0x02, 0x32, 0x9e, 0x42, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, - 0x22, 0x0f, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x12, 0x5f, 0x0a, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x73, 0x69, - 0x67, 0x6e, 0x12, 0x5e, 0x0a, 0x0a, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x11, 0x12, 0x0f, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x68, 0x61, 0x73, - 0x68, 0x7d, 0x12, 0x60, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x75, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x28, 0x01, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0d, 0x12, 0x0b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x77, - 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, - 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x5e, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x22, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x53, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, - 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x12, 0x5a, 0x0a, 0x09, 0x53, 0x74, 0x6f, - 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, - 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x52, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x08, 0x12, 0x06, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x67, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x12, 0x1f, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x73, 0x74, 0x75, - 0x62, 0x73, 0x12, 0x5f, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, - 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x12, 0x57, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2f, 0x7b, - 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x72, 0x6c, 0x12, 0x6a, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x71, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x22, 0x16, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x75, 0x0a, 0x0f, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x17, 0x2f, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x78, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x72, 0x0a, 0x10, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0x52, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x19, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x70, - 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, - 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, - 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x3a, 0x6f, 0x66, 0x66, 0x65, 0x72, - 0x73, 0x12, 0x77, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, - 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, - 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x70, 0x6f, - 0x6f, 0x6c, 0x73, 0x3a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x12, 0x6f, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x20, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x70, 0x6f, - 0x6f, 0x6c, 0x73, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x69, 0x0a, 0x0e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, - 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, - 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, - 0x73, 0x2f, 0x62, 0x79, 0x6f, 0x63, 0x12, 0x69, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, - 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, - 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x79, 0x6f, - 0x63, 0x12, 0x78, 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, - 0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x61, - 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, - 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x70, - 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x2f, 0x62, 0x79, 0x6f, 0x63, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x18, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x9e, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x9b, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x2a, 0x22, 0x2f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8b, - 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xae, 0x01, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4a, - 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x29, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4a, 0x6f, - 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x83, 0x01, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, - 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x6f, 0x66, 0x66, - 0x65, 0x72, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, - 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x6f, 0x66, 0x66, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x8d, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, - 0x12, 0x87, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x2f, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x17, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x6e, 0x74, 0x61, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x22, 0x2a, 0x20, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2f, - 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x14, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x52, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x2f, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x12, 0xa1, 0x01, - 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, - 0x61, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x35, 0x12, 0x33, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, - 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, - 0x73, 0x12, 0x5c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, - 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, - 0x2a, 0x0d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, - 0x7e, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, - 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, - 0x8b, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, - 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, - 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, - 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x86, 0x01, - 0x0a, 0x13, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, - 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x70, 0x6f, - 0x6f, 0x6c, 0x73, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, - 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, - 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, - 0x2a, 0x22, 0x1f, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x12, 0x7c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, - 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, - 0x12, 0xac, 0x01, 0x0a, 0x15, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, - 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, - 0x73, 0x68, 0x2f, 0x6b, 0x65, 0x79, 0x3a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0xa4, 0x01, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, - 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, - 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x6b, 0x65, 0x79, 0x3a, - 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x15, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, - 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x70, 0x6f, 0x6f, - 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x6b, 0x65, 0x79, 0x3a, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4a, 0x6f, 0x69, - 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x6a, 0x6f, 0x69, - 0x6e, 0x12, 0xac, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, - 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x12, 0x73, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, - 0x2a, 0x22, 0x12, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, - 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x8a, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, - 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x73, 0x68, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, - 0x22, 0x13, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, - 0x01, 0x12, 0x59, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x5e, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0b, 0x12, 0x09, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0d, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x2e, - 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0e, 0x3a, 0x01, 0x2a, 0x22, 0x09, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x56, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x09, 0x12, 0x07, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x22, 0x07, 0x2f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0b, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, - 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x19, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x5a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x65, 0x72, 0x73, 0x12, 0x70, 0x0a, 0x0c, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, - 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, - 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x77, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x12, 0x78, 0x0a, 0x0e, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, - 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1f, 0x22, 0x1d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, - 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, - 0x12, 0x6c, 0x0a, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, - 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, - 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1c, 0x22, 0x1a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x77, 0x6f, - 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x81, - 0x01, 0x0a, 0x15, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, - 0x11, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 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, -} +const file_gateway_proto_rawDesc = "" + + "\n" + + "\rgateway.proto\x12\agateway\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto\x1a\vtypes.proto\"\x12\n" + + "\x10AuthorizeRequest\"\x80\x01\n" + + "\x11AuthorizeResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12!\n" + + "\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x12\x1b\n" + + "\tnew_token\x18\x03 \x01(\tR\bnewToken\x12\x1b\n" + + "\terror_msg\x18\x04 \x01(\tR\berrorMsg\".\n" + + "\x12SignPayloadRequest\x12\x18\n" + + "\apayload\x18\x01 \x01(\fR\apayload\"~\n" + + "\x13SignPayloadResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1c\n" + + "\tsignature\x18\x02 \x01(\tR\tsignature\x12\x1c\n" + + "\ttimestamp\x18\x03 \x01(\x03R\ttimestamp\x12\x1b\n" + + "\terror_msg\x18\x04 \x01(\tR\berrorMsg\"8\n" + + "\x0eObjectMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + + "\x04size\x18\x02 \x01(\x03R\x04size\"Y\n" + + "\x11HeadObjectRequest\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x120\n" + + "\x14supports_put_headers\x18\x02 \x01(\bR\x12supportsPutHeaders\"\xec\x01\n" + + "\x12HeadObjectResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x16\n" + + "\x06exists\x18\x02 \x01(\bR\x06exists\x12\x1b\n" + + "\tobject_id\x18\x03 \x01(\tR\bobjectId\x12@\n" + + "\x0fobject_metadata\x18\x04 \x01(\v2\x17.gateway.ObjectMetadataR\x0eobjectMetadata\x12\x1b\n" + + "\terror_msg\x18\x05 \x01(\tR\berrorMsg\x122\n" + + "\x15use_workspace_storage\x18\x06 \x01(\bR\x13useWorkspaceStorage\"\xcf\x01\n" + + "\x13CreateObjectRequest\x12@\n" + + "\x0fobject_metadata\x18\x01 \x01(\v2\x17.gateway.ObjectMetadataR\x0eobjectMetadata\x12\x12\n" + + "\x04hash\x18\x02 \x01(\tR\x04hash\x12\x12\n" + + "\x04size\x18\x03 \x01(\x03R\x04size\x12\x1c\n" + + "\toverwrite\x18\x04 \x01(\bR\toverwrite\x120\n" + + "\x14supports_put_headers\x18\x05 \x01(\bR\x12supportsPutHeaders\"\x94\x02\n" + + "\x14CreateObjectResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\tobject_id\x18\x02 \x01(\tR\bobjectId\x12#\n" + + "\rpresigned_url\x18\x03 \x01(\tR\fpresignedUrl\x12\x1b\n" + + "\terror_msg\x18\x04 \x01(\tR\berrorMsg\x12N\n" + + "\vput_headers\x18\x05 \x03(\v2-.gateway.CreateObjectResponse.PutHeadersEntryR\n" + + "putHeaders\x1a=\n" + + "\x0fPutHeadersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xad\x01\n" + + "\x10PutObjectRequest\x12%\n" + + "\x0eobject_content\x18\x01 \x01(\fR\robjectContent\x12@\n" + + "\x0fobject_metadata\x18\x02 \x01(\v2\x17.gateway.ObjectMetadataR\x0eobjectMetadata\x12\x12\n" + + "\x04hash\x18\x03 \x01(\tR\x04hash\x12\x1c\n" + + "\toverwrite\x18\x04 \x01(\bR\toverwrite\"]\n" + + "\x11PutObjectResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\tobject_id\x18\x02 \x01(\tR\bobjectId\x12\x1b\n" + + "\terror_msg\x18\x03 \x01(\tR\berrorMsg\"\xd6\x01\n" + + "\x1dSyncContainerWorkspaceRequest\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\x12\x12\n" + + "\x04path\x18\x02 \x01(\tR\x04path\x12\x19\n" + + "\bnew_path\x18\x03 \x01(\tR\anewPath\x12\x15\n" + + "\x06is_dir\x18\x04 \x01(\bR\x05isDir\x12\x12\n" + + "\x04data\x18\x05 \x01(\fR\x04data\x128\n" + + "\x02op\x18\x06 \x01(\x0e2(.gateway.SyncContainerWorkspaceOperationR\x02op\"0\n" + + "\x1eSyncContainerWorkspaceResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\"\x17\n" + + "\x15ListContainersRequest\"w\n" + + "\x16ListContainersResponse\x120\n" + + "\n" + + "containers\x18\x01 \x03(\v2\x10.types.ContainerR\n" + + "containers\x12\x0e\n" + + "\x02ok\x18\x02 \x01(\bR\x02ok\x12\x1b\n" + + "\terror_msg\x18\x03 \x01(\tR\berrorMsg\"9\n" + + "\x14StopContainerRequest\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\"D\n" + + "\x15StopContainerResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\terror_msg\x18\x02 \x01(\tR\berrorMsg\"?\n" + + "\x1aCheckpointContainerRequest\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\"o\n" + + "\x1bCheckpointContainerResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12#\n" + + "\rcheckpoint_id\x18\x02 \x01(\tR\fcheckpointId\x12\x1b\n" + + "\terror_msg\x18\x03 \x01(\tR\berrorMsg\"\xd3\x01\n" + + "\x16ContainerStreamMessage\x12J\n" + + "\x0eattach_request\x18\x01 \x01(\v2!.gateway.AttachToContainerRequestH\x00R\rattachRequest\x12b\n" + + "\x18sync_container_workspace\x18\x02 \x01(\v2&.gateway.SyncContainerWorkspaceRequestH\x00R\x16syncContainerWorkspaceB\t\n" + + "\apayload\"=\n" + + "\x18AttachToContainerRequest\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\"d\n" + + "\x19AttachToContainerResponse\x12\x16\n" + + "\x06output\x18\x01 \x01(\tR\x06output\x12\x12\n" + + "\x04done\x18\x02 \x01(\bR\x04done\x12\x1b\n" + + "\texit_code\x18\x03 \x01(\x05R\bexitCode\"N\n" + + "\x10StartTaskRequest\x12\x17\n" + + "\atask_id\x18\x01 \x01(\tR\x06taskId\x12!\n" + + "\fcontainer_id\x18\x02 \x01(\tR\vcontainerId\"#\n" + + "\x11StartTaskResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\"\x85\x02\n" + + "\x0eEndTaskRequest\x12\x17\n" + + "\atask_id\x18\x01 \x01(\tR\x06taskId\x12#\n" + + "\rtask_duration\x18\x02 \x01(\x02R\ftaskDuration\x12\x1f\n" + + "\vtask_status\x18\x03 \x01(\tR\n" + + "taskStatus\x12!\n" + + "\fcontainer_id\x18\x04 \x01(\tR\vcontainerId\x12-\n" + + "\x12container_hostname\x18\x05 \x01(\tR\x11containerHostname\x12*\n" + + "\x11keep_warm_seconds\x18\x06 \x01(\x02R\x0fkeepWarmSeconds\x12\x16\n" + + "\x06result\x18\a \x01(\fR\x06result\"!\n" + + "\x0fEndTaskResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\"$\n" + + "\n" + + "StringList\x12\x16\n" + + "\x06values\x18\x01 \x03(\tR\x06values\"\xbb\x01\n" + + "\x10ListTasksRequest\x12@\n" + + "\afilters\x18\x01 \x03(\v2&.gateway.ListTasksRequest.FiltersEntryR\afilters\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\x1aO\n" + + "\fFiltersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12)\n" + + "\x05value\x18\x02 \x01(\v2\x13.gateway.StringListR\x05value:\x028\x01\"\xb9\x03\n" + + "\x04Task\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\x12\x16\n" + + "\x06status\x18\x03 \x01(\tR\x06status\x12!\n" + + "\fcontainer_id\x18\x04 \x01(\tR\vcontainerId\x129\n" + + "\n" + + "started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x125\n" + + "\bended_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\aendedAt\x12\x17\n" + + "\astub_id\x18\a \x01(\tR\x06stubId\x12\x1b\n" + + "\tstub_name\x18\b \x01(\tR\bstubName\x12!\n" + + "\fworkspace_id\x18\t \x01(\tR\vworkspaceId\x12%\n" + + "\x0eworkspace_name\x18\n" + + " \x01(\tR\rworkspaceName\x129\n" + + "\n" + + "created_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "updated_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"w\n" + + "\x11ListTasksResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12#\n" + + "\x05tasks\x18\x03 \x03(\v2\r.gateway.TaskR\x05tasks\x12\x14\n" + + "\x05total\x18\x04 \x01(\x05R\x05total\"-\n" + + "\x10StopTasksRequest\x12\x19\n" + + "\btask_ids\x18\x01 \x03(\tR\ataskIds\"<\n" + + "\x11StopTasksResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"x\n" + + "\x06Volume\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + + "\n" + + "mount_path\x18\x02 \x01(\tR\tmountPath\x124\n" + + "\x06config\x18\x03 \x01(\v2\x17.types.MountPointConfigH\x00R\x06config\x88\x01\x01B\t\n" + + "\a_config\"\x1f\n" + + "\tSecretVar\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\x9e\x01\n" + + "\n" + + "Autoscaler\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12%\n" + + "\x0emax_containers\x18\x02 \x01(\rR\rmaxContainers\x12.\n" + + "\x13tasks_per_container\x18\x03 \x01(\rR\x11tasksPerContainer\x12%\n" + + "\x0emin_containers\x18\x04 \x01(\rR\rminContainers\"\xed\x01\n" + + "\tLLMConfig\x12\x19\n" + + "\bmodel_id\x18\x01 \x01(\tR\amodelId\x12\x16\n" + + "\x06engine\x18\x02 \x01(\tR\x06engine\x12*\n" + + "\x11served_model_name\x18\x03 \x01(\tR\x0fservedModelName\x12%\n" + + "\x0econtext_length\x18\x04 \x01(\x03R\rcontextLength\x12\x1c\n" + + "\ttokenizer\x18\x05 \x01(\tR\ttokenizer\x12!\n" + + "\fmetrics_path\x18\x06 \x01(\tR\vmetricsPath\x12\x19\n" + + "\bslo_tier\x18\a \x01(\tR\asloTier\"\xcc\x03\n" + + "\x15DatabaseServingConfig\x12\x12\n" + + "\x04kind\x18\x01 \x01(\tR\x04kind\x12\x12\n" + + "\x04port\x18\x02 \x01(\rR\x04port\x12'\n" + + "\x0freadiness_probe\x18\x03 \x01(\tR\x0ereadinessProbe\x12.\n" + + "\x13connection_env_name\x18\x04 \x01(\tR\x11connectionEnvName\x126\n" + + "\x17credential_secret_names\x18\x05 \x03(\tR\x15credentialSecretNames\x12'\n" + + "\x0fdurability_mode\x18\x06 \x01(\tR\x0edurabilityMode\x120\n" + + "\x14username_secret_name\x18\a \x01(\tR\x12usernameSecretName\x120\n" + + "\x14password_secret_name\x18\b \x01(\tR\x12passwordSecretName\x120\n" + + "\x14database_secret_name\x18\t \x01(\tR\x12databaseSecretName\x12;\n" + + "\x1aconnection_url_secret_name\x18\n" + + " \x01(\tR\x17connectionUrlSecretName\"\xb7\x01\n" + + "\rServingConfig\x12\x19\n" + + "\bapp_kind\x18\x01 \x01(\tR\aappKind\x12)\n" + + "\x10serving_protocol\x18\x02 \x01(\tR\x0fservingProtocol\x12$\n" + + "\x03llm\x18\x03 \x01(\v2\x12.gateway.LLMConfigR\x03llm\x12:\n" + + "\bdatabase\x18\x04 \x01(\v2\x1e.gateway.DatabaseServingConfigR\bdatabase\"\xa9\x01\n" + + "\vDurableDisk\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" + + "\x04size\x18\x02 \x01(\tR\x04size\x12\x1d\n" + + "\n" + + "mount_path\x18\x03 \x01(\tR\tmountPath\x12\x1e\n" + + "\n" + + "filesystem\x18\x04 \x01(\tR\n" + + "filesystem\x12\x16\n" + + "\x06driver\x18\x05 \x01(\tR\x06driver\x12\x1b\n" + + "\tread_only\x18\x06 \x01(\bR\breadOnly\"Y\n" + + "\n" + + "TaskPolicy\x12\x18\n" + + "\atimeout\x18\x01 \x01(\x03R\atimeout\x12\x1f\n" + + "\vmax_retries\x18\x02 \x01(\rR\n" + + "maxRetries\x12\x10\n" + + "\x03ttl\x18\x03 \x01(\rR\x03ttl\"\x8e\x01\n" + + "\x06Schema\x123\n" + + "\x06fields\x18\x01 \x03(\v2\x1b.gateway.Schema.FieldsEntryR\x06fields\x1aO\n" + + "\vFieldsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12*\n" + + "\x05value\x18\x02 \x01(\v2\x14.gateway.SchemaFieldR\x05value:\x028\x01\"J\n" + + "\vSchemaField\x12\x12\n" + + "\x04type\x18\x01 \x01(\tR\x04type\x12'\n" + + "\x06fields\x18\x02 \x01(\v2\x0f.gateway.SchemaR\x06fields\"\xca\f\n" + + "\x16GetOrCreateStubRequest\x12\x1b\n" + + "\tobject_id\x18\x01 \x01(\tR\bobjectId\x12\x19\n" + + "\bimage_id\x18\x02 \x01(\tR\aimageId\x12\x1b\n" + + "\tstub_type\x18\x03 \x01(\tR\bstubType\x12\x12\n" + + "\x04name\x18\x04 \x01(\tR\x04name\x12%\n" + + "\x0epython_version\x18\x05 \x01(\tR\rpythonVersion\x12\x10\n" + + "\x03cpu\x18\x06 \x01(\x03R\x03cpu\x12\x16\n" + + "\x06memory\x18\a \x01(\x03R\x06memory\x12\x10\n" + + "\x03gpu\x18\b \x01(\tR\x03gpu\x12\x18\n" + + "\ahandler\x18\t \x01(\tR\ahandler\x12\x18\n" + + "\aretries\x18\n" + + " \x01(\rR\aretries\x12\x18\n" + + "\atimeout\x18\v \x01(\x03R\atimeout\x12*\n" + + "\x11keep_warm_seconds\x18\f \x01(\x02R\x0fkeepWarmSeconds\x12\x18\n" + + "\aworkers\x18\r \x01(\rR\aworkers\x12*\n" + + "\x11max_pending_tasks\x18\x0f \x01(\rR\x0fmaxPendingTasks\x12)\n" + + "\avolumes\x18\x10 \x03(\v2\x0f.gateway.VolumeR\avolumes\x12!\n" + + "\fforce_create\x18\x11 \x01(\bR\vforceCreate\x12\x19\n" + + "\bon_start\x18\x12 \x01(\tR\aonStart\x12!\n" + + "\fcallback_url\x18\x13 \x01(\tR\vcallbackUrl\x12\x1e\n" + + "\n" + + "authorized\x18\x14 \x01(\bR\n" + + "authorized\x12,\n" + + "\asecrets\x18\x15 \x03(\v2\x12.gateway.SecretVarR\asecrets\x123\n" + + "\n" + + "autoscaler\x18\x16 \x01(\v2\x13.gateway.AutoscalerR\n" + + "autoscaler\x124\n" + + "\vtask_policy\x18\x17 \x01(\v2\x13.gateway.TaskPolicyR\n" + + "taskPolicy\x12/\n" + + "\x13concurrent_requests\x18\x18 \x01(\rR\x12concurrentRequests\x12\x14\n" + + "\x05extra\x18\x19 \x01(\tR\x05extra\x12-\n" + + "\x12checkpoint_enabled\x18\x1a \x01(\bR\x11checkpointEnabled\x12\x1b\n" + + "\tgpu_count\x18\x1b \x01(\rR\bgpuCount\x12\x1b\n" + + "\ton_deploy\x18\x1c \x01(\tR\bonDeploy\x12)\n" + + "\x11on_deploy_stub_id\x18\x1d \x01(\tR\x0eonDeployStubId\x12\x1e\n" + + "\n" + + "entrypoint\x18\x1e \x03(\tR\n" + + "entrypoint\x12\x14\n" + + "\x05ports\x18\x1f \x03(\rR\x05ports\x12\x10\n" + + "\x03env\x18 \x03(\tR\x03env\x12\x19\n" + + "\bapp_name\x18! \x01(\tR\aappName\x12.\n" + + "\apricing\x18\" \x01(\v2\x14.types.PricingPolicyR\apricing\x12'\n" + + "\x06inputs\x18# \x01(\v2\x0f.gateway.SchemaR\x06inputs\x12)\n" + + "\aoutputs\x18$ \x01(\v2\x0f.gateway.SchemaR\aoutputs\x12\x10\n" + + "\x03tcp\x18% \x01(\bR\x03tcp\x12#\n" + + "\rblock_network\x18& \x01(\bR\fblockNetwork\x12\x1d\n" + + "\n" + + "allow_list\x18' \x03(\tR\tallowList\x12%\n" + + "\x0edocker_enabled\x18( \x01(\bR\rdockerEnabled\x12'\n" + + "\x04pool\x18) \x01(\v2\x13.gateway.PoolConfigR\x04pool\x12\x1d\n" + + "\n" + + "is_service\x18* \x01(\bR\tisService\x120\n" + + "\aserving\x18+ \x01(\v2\x16.gateway.ServingConfigR\aserving\x12*\n" + + "\x05disks\x18, \x03(\v2\x14.gateway.DurableDiskR\x05disks\x12+\n" + + "\x11allow_marketplace\x18- \x01(\bR\x10allowMarketplace\x12G\n" + + "\x12checkpoint_trigger\x18. \x01(\v2\x18.types.CheckpointTriggerR\x11checkpointTriggerJ\x04\b/\x100\"\xfc\x01\n" + + "\x17GetOrCreateStubResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\astub_id\x18\x02 \x01(\tR\x06stubId\x12\x17\n" + + "\aerr_msg\x18\x03 \x01(\tR\x06errMsg\x12\x19\n" + + "\bwarn_msg\x18\x04 \x01(\tR\awarnMsg\x12'\n" + + "\x0fcapacity_status\x18\x05 \x01(\tR\x0ecapacityStatus\x12)\n" + + "\x10unsupported_gpus\x18\x06 \x03(\tR\x0funsupportedGpus\x120\n" + + "\x14matched_private_pool\x18\a \x01(\tR\x12matchedPrivatePool\"Z\n" + + "\x11DeployStubRequest\x12\x17\n" + + "\astub_id\x18\x01 \x01(\tR\x06stubId\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + + "\arollout\x18\x03 \x01(\tR\arollout\"\xdd\x01\n" + + "\x12DeployStubResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12#\n" + + "\rdeployment_id\x18\x02 \x01(\tR\fdeploymentId\x12\x18\n" + + "\aversion\x18\x03 \x01(\rR\aversion\x12\x1d\n" + + "\n" + + "invoke_url\x18\x04 \x01(\tR\tinvokeUrl\x12\x17\n" + + "\aerr_msg\x18\x05 \x01(\tR\x06errMsg\x12\x19\n" + + "\bwarn_msg\x18\x06 \x01(\tR\awarnMsg\x12%\n" + + "\x0erollout_action\x18\a \x01(\tR\rrolloutAction\"\x9b\x04\n" + + "\n" + + "Deployment\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" + + "\x06active\x18\x03 \x01(\bR\x06active\x12\x17\n" + + "\astub_id\x18\x04 \x01(\tR\x06stubId\x12\x1b\n" + + "\tstub_type\x18\x05 \x01(\tR\bstubType\x12\x1b\n" + + "\tstub_name\x18\x06 \x01(\tR\bstubName\x12\x18\n" + + "\aversion\x18\a \x01(\rR\aversion\x12!\n" + + "\fworkspace_id\x18\b \x01(\tR\vworkspaceId\x12%\n" + + "\x0eworkspace_name\x18\t \x01(\tR\rworkspaceName\x129\n" + + "\n" + + "created_at\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "updated_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x15\n" + + "\x06app_id\x18\f \x01(\tR\x05appId\x12#\n" + + "\rdatabase_kind\x18\r \x01(\tR\fdatabaseKind\x128\n" + + "\x18connection_string_secret\x18\x0e \x01(\tR\x16connectionStringSecret\x12.\n" + + "\x13connection_env_name\x18\x0f \x01(\tR\x11connectionEnvName\"\xc7\x01\n" + + "\x16ListDeploymentsRequest\x12F\n" + + "\afilters\x18\x01 \x03(\v2,.gateway.ListDeploymentsRequest.FiltersEntryR\afilters\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\x1aO\n" + + "\fFiltersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12)\n" + + "\x05value\x18\x02 \x01(\v2\x13.gateway.StringListR\x05value:\x028\x01\"y\n" + + "\x17ListDeploymentsResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x125\n" + + "\vdeployments\x18\x03 \x03(\v2\x13.gateway.DeploymentR\vdeployments\"'\n" + + "\x15StopDeploymentRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"A\n" + + "\x16StopDeploymentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"(\n" + + "\x16StartDeploymentRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"B\n" + + "\x17StartDeploymentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"H\n" + + "\x16ScaleDeploymentRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1e\n" + + "\n" + + "containers\x18\x02 \x01(\rR\n" + + "containers\"B\n" + + "\x17ScaleDeploymentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\")\n" + + "\x17DeleteDeploymentRequest\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"C\n" + + "\x18DeleteDeploymentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\xec\x02\n" + + "\x04Pool\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" + + "\x06active\x18\x03 \x01(\bR\x06active\x12\x10\n" + + "\x03gpu\x18\x04 \x01(\tR\x03gpu\x12\x1e\n" + + "\n" + + "minFreeGpu\x18\x05 \x01(\tR\n" + + "minFreeGpu\x12\x1e\n" + + "\n" + + "minFreeCpu\x18\x06 \x01(\tR\n" + + "minFreeCpu\x12$\n" + + "\rminFreeMemory\x18\a \x01(\tR\rminFreeMemory\x12*\n" + + "\x10defaultWorkerCpu\x18\b \x01(\tR\x10defaultWorkerCpu\x120\n" + + "\x13defaultWorkerMemory\x18\t \x01(\tR\x13defaultWorkerMemory\x124\n" + + "\x15defaultWorkerGpuCount\x18\n" + + " \x01(\tR\x15defaultWorkerGpuCount\x12,\n" + + "\x05state\x18\v \x01(\v2\x16.types.WorkerPoolStateR\x05state\"\xbb\x01\n" + + "\x10ListPoolsRequest\x12@\n" + + "\afilters\x18\x01 \x03(\v2&.gateway.ListPoolsRequest.FiltersEntryR\afilters\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\x1aO\n" + + "\fFiltersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12)\n" + + "\x05value\x18\x02 \x01(\v2\x13.gateway.StringListR\x05value:\x028\x01\"a\n" + + "\x11ListPoolsResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12#\n" + + "\x05pools\x18\x03 \x03(\v2\r.gateway.PoolR\x05pools\"\xf9\x02\n" + + "\n" + + "PoolConfig\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n" + + "\x03gpu\x18\x02 \x03(\tR\x03gpu\x12\x14\n" + + "\x05nodes\x18\x03 \x01(\rR\x05nodes\x12\x10\n" + + "\x03ttl\x18\x04 \x01(\tR\x03ttl\x12\x1b\n" + + "\tmax_spend\x18\x05 \x01(\x01R\bmaxSpend\x12\x1c\n" + + "\tproviders\x18\x06 \x03(\tR\tproviders\x12\x18\n" + + "\aregions\x18\a \x03(\tR\aregions\x12'\n" + + "\x0fmin_reliability\x18\b \x01(\x01R\x0eminReliability\x12\x1a\n" + + "\bselector\x18\t \x01(\tR\bselector\x12\x12\n" + + "\x04mode\x18\n" + + " \x01(\tR\x04mode\x12\x1c\n" + + "\ttransport\x18\v \x01(\tR\ttransport\x12\x1a\n" + + "\bfallback\x18\f \x01(\tR\bfallback\x12\x1a\n" + + "\bpriority\x18\r \x01(\x05R\bpriority\x12\x19\n" + + "\boffer_id\x18\x0e \x01(\tR\aofferId\"\xd2\x04\n" + + "\tPoolOffer\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" + + "\bprovider\x18\x02 \x01(\tR\bprovider\x12#\n" + + "\rinstance_type\x18\x03 \x01(\tR\finstanceType\x12\x16\n" + + "\x06region\x18\x04 \x01(\tR\x06region\x12\x10\n" + + "\x03gpu\x18\x05 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x06 \x01(\rR\bgpuCount\x12%\n" + + "\x0ecpu_millicores\x18\a \x01(\x03R\rcpuMillicores\x12\x1b\n" + + "\tmemory_mb\x18\b \x01(\x03R\bmemoryMb\x12,\n" + + "\x12hourly_cost_micros\x18\t \x01(\x03R\x10hourlyCostMicros\x12 \n" + + "\vreliability\x18\n" + + " \x01(\x01R\vreliability\x12\x1c\n" + + "\tavailable\x18\v \x01(\rR\tavailable\x12\x1d\n" + + "\n" + + "storage_mb\x18\f \x01(\x03R\tstorageMb\x12\x14\n" + + "\x05cloud\x18\r \x01(\tR\x05cloud\x12\x1d\n" + + "\n" + + "node_count\x18\x0e \x01(\rR\tnodeCount\x12!\n" + + "\fdisplay_name\x18\x0f \x01(\tR\vdisplayName\x12\x1a\n" + + "\bcategory\x18\x10 \x01(\tR\bcategory\x12.\n" + + "\x13region_display_name\x18\x11 \x01(\tR\x11regionDisplayName\x12\x1a\n" + + "\blatitude\x18\x12 \x01(\x01R\blatitude\x12\x1c\n" + + "\tlongitude\x18\x13 \x01(\x01R\tlongitude\"\xfb\x05\n" + + "\x10ProviderInstance\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + + "\tpool_name\x18\x02 \x01(\tR\bpoolName\x12\x1a\n" + + "\bprovider\x18\x03 \x01(\tR\bprovider\x12\x19\n" + + "\boffer_id\x18\x04 \x01(\tR\aofferId\x12\x16\n" + + "\x06status\x18\x05 \x01(\tR\x06status\x12\x1b\n" + + "\tgpu_count\x18\x06 \x01(\rR\bgpuCount\x12,\n" + + "\x12hourly_cost_micros\x18\a \x01(\x03R\x10hourlyCostMicros\x12\x16\n" + + "\x06source\x18\b \x01(\tR\x06source\x129\n" + + "\n" + + "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "expires_at\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12H\n" + + "\x12billing_renewal_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\x10billingRenewalAt\x12%\n" + + "\x0estatus_message\x18\f \x01(\tR\rstatusMessage\x12-\n" + + "\x12terminating_reason\x18\r \x01(\tR\x11terminatingReason\x12\x1d\n" + + "\n" + + "machine_id\x18\x0e \x01(\tR\tmachineId\x12\x14\n" + + "\x05cloud\x18\x0f \x01(\tR\x05cloud\x12\x16\n" + + "\x06region\x18\x10 \x01(\tR\x06region\x12\x1d\n" + + "\n" + + "node_count\x18\x11 \x01(\rR\tnodeCount\x12#\n" + + "\rinstance_type\x18\x12 \x01(\tR\finstanceType\x12%\n" + + "\x0ecpu_millicores\x18\x13 \x01(\x03R\rcpuMillicores\x12\x1b\n" + + "\tmemory_mb\x18\x14 \x01(\x03R\bmemoryMb\x12\x1d\n" + + "\n" + + "storage_mb\x18\x15 \x01(\x03R\tstorageMb\"\xad\x04\n" + + "\vPrivatePool\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1a\n" + + "\bselector\x18\x02 \x01(\tR\bselector\x12+\n" + + "\x06config\x18\x03 \x01(\v2\x13.gateway.PoolConfigR\x06config\x12=\n" + + "\freservations\x18\x04 \x03(\v2\x19.gateway.ProviderInstanceR\freservations\x124\n" + + "\x16committed_spend_micros\x18\x06 \x01(\x03R\x14committedSpendMicros\x12\x16\n" + + "\x06status\x18\a \x01(\tR\x06status\x12\x16\n" + + "\x06source\x18\b \x01(\tR\x06source\x129\n" + + "\n" + + "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "expires_at\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12#\n" + + "\rmachine_count\x18\v \x01(\rR\fmachineCount\x12.\n" + + "\x13ready_machine_count\x18\f \x01(\rR\x11readyMachineCount\x12%\n" + + "\x0ereserved_nodes\x18\r \x01(\rR\rreservedNodes\x12*\n" + + "\x04byoc\x18\x0e \x01(\v2\x16.gateway.BYOCPoolStateR\x04byoc\"@\n" + + "\x15ListPoolOffersRequest\x12'\n" + + "\x04pool\x18\x01 \x01(\v2\x13.gateway.PoolConfigR\x04pool\"m\n" + + "\x16ListPoolOffersResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12*\n" + + "\x06offers\x18\x03 \x03(\v2\x12.gateway.PoolOfferR\x06offers\"Z\n" + + "\x19LaunchPoolCapacityRequest\x12'\n" + + "\x04pool\x18\x01 \x01(\v2\x13.gateway.PoolConfigR\x04pool\x12\x14\n" + + "\x05nodes\x18\x02 \x01(\rR\x05nodes\"\xde\x01\n" + + "\x1aLaunchPoolCapacityResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12(\n" + + "\x04pool\x18\x03 \x01(\v2\x14.gateway.PrivatePoolR\x04pool\x12\x1d\n" + + "\n" + + "error_code\x18\x04 \x01(\tR\terrorCode\x12%\n" + + "\x0erequired_cents\x18\x05 \x01(\x03R\rrequiredCents\x12'\n" + + "\x0favailable_cents\x18\x06 \x01(\x03R\x0eavailableCents\"\xc9\x01\n" + + "\x17ListPrivatePoolsRequest\x12G\n" + + "\afilters\x18\x01 \x03(\v2-.gateway.ListPrivatePoolsRequest.FiltersEntryR\afilters\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\x1aO\n" + + "\fFiltersEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12)\n" + + "\x05value\x18\x02 \x01(\v2\x13.gateway.StringListR\x05value:\x028\x01\"o\n" + + "\x18ListPrivatePoolsResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12*\n" + + "\x05pools\x18\x03 \x03(\v2\x14.gateway.PrivatePoolR\x05pools\"\x9d\x02\n" + + "\x15CreateBYOCPoolRequest\x12\x1a\n" + + "\bprovider\x18\x01 \x01(\tR\bprovider\x12\x1b\n" + + "\tpool_name\x18\x02 \x01(\tR\bpoolName\x12\x16\n" + + "\x06region\x18\x03 \x01(\tR\x06region\x12#\n" + + "\rinstance_type\x18\x04 \x01(\tR\finstanceType\x12#\n" + + "\rdesired_nodes\x18\x05 \x01(\rR\fdesiredNodes\x12\x1b\n" + + "\tmax_nodes\x18\x06 \x01(\rR\bmaxNodes\x12\x1d\n" + + "\n" + + "account_id\x18\a \x01(\tR\taccountId\x12\x10\n" + + "\x03gpu\x18\b \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\t \x01(\rR\bgpuCount\"\xfc\x01\n" + + "\x16CreateBYOCPoolResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12(\n" + + "\x04pool\x18\x03 \x01(\v2\x14.gateway.PrivatePoolR\x04pool\x12\x1b\n" + + "\tsetup_url\x18\x04 \x01(\tR\bsetupUrl\x12#\n" + + "\rresource_name\x18\x05 \x01(\tR\fresourceName\x12!\n" + + "\fresource_url\x18\x06 \x01(\tR\vresourceUrl\x12*\n" + + "\x04byoc\x18\a \x01(\v2\x16.gateway.BYOCPoolStateR\x04byoc\"\xd8\x05\n" + + "\rBYOCPoolState\x12\x1a\n" + + "\bprovider\x18\x01 \x01(\tR\bprovider\x12\x1d\n" + + "\n" + + "account_id\x18\x02 \x01(\tR\taccountId\x12\x16\n" + + "\x06region\x18\x03 \x01(\tR\x06region\x12#\n" + + "\rresource_name\x18\x04 \x01(\tR\fresourceName\x12!\n" + + "\fresource_url\x18\x05 \x01(\tR\vresourceUrl\x12\x1f\n" + + "\vdestroy_url\x18\x06 \x01(\tR\n" + + "destroyUrl\x12\x14\n" + + "\x05phase\x18\a \x01(\tR\x05phase\x12#\n" + + "\rdesired_nodes\x18\b \x01(\rR\fdesiredNodes\x12\x1b\n" + + "\tmax_nodes\x18\t \x01(\rR\bmaxNodes\x12)\n" + + "\x10target_sandboxes\x18\n" + + " \x01(\rR\x0ftargetSandboxes\x12,\n" + + "\x12sandboxes_per_node\x18\v \x01(\rR\x10sandboxesPerNode\x12#\n" + + "\rinstance_type\x18\f \x01(\tR\finstanceType\x12#\n" + + "\rmachine_count\x18\r \x01(\rR\fmachineCount\x12.\n" + + "\x13ready_machine_count\x18\x0e \x01(\rR\x11readyMachineCount\x12\x18\n" + + "\amessage\x18\x0f \x01(\tR\amessage\x12,\n" + + "\x12hourly_cost_micros\x18\x10 \x01(\x03R\x10hourlyCostMicros\x127\n" + + "\x18total_hourly_cost_micros\x18\x11 \x01(\x03R\x15totalHourlyCostMicros\x120\n" + + "\x14direct_scale_enabled\x18\x12 \x01(\bR\x12directScaleEnabled\x12\x10\n" + + "\x03gpu\x18\x13 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x14 \x01(\rR\bgpuCount\"1\n" + + "\x12GetBYOCPoolRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\"\xff\x01\n" + + "\x13GetBYOCPoolResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12(\n" + + "\x04pool\x18\x03 \x01(\v2\x14.gateway.PrivatePoolR\x04pool\x12\x14\n" + + "\x05ready\x18\x04 \x01(\bR\x05ready\x12.\n" + + "\x13ready_machine_count\x18\x05 \x01(\rR\x11readyMachineCount\x12#\n" + + "\rmachine_count\x18\x06 \x01(\rR\fmachineCount\x12*\n" + + "\x04byoc\x18\a \x01(\v2\x16.gateway.BYOCPoolStateR\x04byoc\"u\n" + + "\x14ScaleBYOCPoolRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12#\n" + + "\rdesired_nodes\x18\x02 \x01(\rR\fdesiredNodes\x12\x1b\n" + + "\tmax_nodes\x18\x03 \x01(\rR\bmaxNodes\"\x96\x01\n" + + "\x15ScaleBYOCPoolResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12(\n" + + "\x04pool\x18\x03 \x01(\v2\x14.gateway.PrivatePoolR\x04pool\x12*\n" + + "\x04byoc\x18\x04 \x01(\v2\x16.gateway.BYOCPoolStateR\x04byoc\"\xe2\x04\n" + + "\x12MarketplaceListing\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + + "\x13seller_workspace_id\x18\x02 \x01(\tR\x11sellerWorkspaceId\x12!\n" + + "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12\x10\n" + + "\x03gpu\x18\x04 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x05 \x01(\rR\bgpuCount\x12\x16\n" + + "\x06source\x18\x06 \x01(\tR\x06source\x12 \n" + + "\vpreemptible\x18\a \x01(\bR\vpreemptible\x12\x16\n" + + "\x06public\x18\b \x01(\bR\x06public\x12\x16\n" + + "\x06status\x18\t \x01(\tR\x06status\x12\x1b\n" + + "\tpool_name\x18\n" + + " \x01(\tR\bpoolName\x129\n" + + "\n" + + "created_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "updated_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12#\n" + + "\rmachine_count\x18\r \x01(\rR\fmachineCount\x12.\n" + + "\x13ready_machine_count\x18\x0e \x01(\rR\x11readyMachineCount\x12\x16\n" + + "\x06region\x18\x0f \x01(\tR\x06region\x12\x18\n" + + "\aruntime\x18\x10 \x01(\tR\aruntime\x126\n" + + "\x18price_per_gpu_hour_cents\x18\x11 \x01(\rR\x14pricePerGpuHourCents\"\x9a\x05\n" + + "\x10MarketplaceOffer\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\x12.\n" + + "\x13seller_workspace_id\x18\x02 \x01(\tR\x11sellerWorkspaceId\x12!\n" + + "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12\x10\n" + + "\x03gpu\x18\x04 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x05 \x01(\rR\bgpuCount\x12\x16\n" + + "\x06source\x18\x06 \x01(\tR\x06source\x12 \n" + + "\vpreemptible\x18\a \x01(\bR\vpreemptible\x12#\n" + + "\rmachine_count\x18\b \x01(\rR\fmachineCount\x12.\n" + + "\x13ready_machine_count\x18\t \x01(\rR\x11readyMachineCount\x12\x18\n" + + "\aruntime\x18\n" + + " \x01(\tR\aruntime\x12\x16\n" + + "\x06region\x18\v \x01(\tR\x06region\x12\x1b\n" + + "\tcpu_cores\x18\f \x01(\rR\bcpuCores\x12\x1b\n" + + "\tmemory_mb\x18\r \x01(\x04R\bmemoryMb\x12\x17\n" + + "\adisk_gb\x18\x0e \x01(\x04R\x06diskGb\x12$\n" + + "\x0efree_gpu_count\x18\x0f \x01(\rR\ffreeGpuCount\x12 \n" + + "\vreliability\x18\x10 \x01(\x02R\vreliability\x129\n" + + "\n" + + "created_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x16\n" + + "\x06public\x18\x12 \x01(\bR\x06public\x126\n" + + "\x18price_per_gpu_hour_cents\x18\x13 \x01(\rR\x14pricePerGpuHourCents\"\xb2\x02\n" + + "\x1fCreateMarketplaceListingRequest\x12!\n" + + "\fdisplay_name\x18\x01 \x01(\tR\vdisplayName\x12\x10\n" + + "\x03gpu\x18\x02 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x03 \x01(\rR\bgpuCount\x12\x16\n" + + "\x06source\x18\x04 \x01(\tR\x06source\x12 \n" + + "\vpreemptible\x18\x05 \x01(\bR\vpreemptible\x12\x16\n" + + "\x06public\x18\x06 \x01(\bR\x06public\x12\x16\n" + + "\x06region\x18\a \x01(\tR\x06region\x12\x1b\n" + + "\tpool_name\x18\b \x01(\tR\bpoolName\x126\n" + + "\x18price_per_gpu_hour_cents\x18\t \x01(\rR\x14pricePerGpuHourCents\"\x82\x01\n" + + " CreateMarketplaceListingResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x125\n" + + "\alisting\x18\x03 \x01(\v2\x1b.gateway.MarketplaceListingR\alisting\"\x93\x03\n" + + "\x1fUpdateMarketplaceListingRequest\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\x12!\n" + + "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12\x10\n" + + "\x03gpu\x18\x03 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x04 \x01(\rR\bgpuCount\x12\x16\n" + + "\x06source\x18\x05 \x01(\tR\x06source\x12%\n" + + "\vpreemptible\x18\x06 \x01(\bH\x00R\vpreemptible\x88\x01\x01\x12\x1b\n" + + "\x06public\x18\a \x01(\bH\x01R\x06public\x88\x01\x01\x12\x16\n" + + "\x06status\x18\b \x01(\tR\x06status\x12\x16\n" + + "\x06region\x18\t \x01(\tR\x06region\x12;\n" + + "\x18price_per_gpu_hour_cents\x18\n" + + " \x01(\rH\x02R\x14pricePerGpuHourCents\x88\x01\x01B\x0e\n" + + "\f_preemptibleB\t\n" + + "\a_publicB\x1b\n" + + "\x19_price_per_gpu_hour_cents\"\x82\x01\n" + + " UpdateMarketplaceListingResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x125\n" + + "\alisting\x18\x03 \x01(\v2\x1b.gateway.MarketplaceListingR\alisting\"@\n" + + "\x1fDeleteMarketplaceListingRequest\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\"K\n" + + " DeleteMarketplaceListingResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"6\n" + + "\x1eListMarketplaceListingsRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\rR\x05limit\"\x83\x01\n" + + "\x1fListMarketplaceListingsResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x127\n" + + "\blistings\x18\x03 \x03(\v2\x1b.gateway.MarketplaceListingR\blistings\"S\n" + + " GetMarketplaceJoinCommandRequest\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\x12\x10\n" + + "\x03ttl\x18\x02 \x01(\tR\x03ttl\"\xb7\x01\n" + + "!GetMarketplaceJoinCommandResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12\x18\n" + + "\acommand\x18\x03 \x01(\tR\acommand\x12\x14\n" + + "\x05token\x18\x04 \x01(\tR\x05token\x129\n" + + "\n" + + "expires_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\"F\n" + + "\x1cListMarketplaceOffersRequest\x12\x10\n" + + "\x03gpu\x18\x01 \x01(\tR\x03gpu\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\"{\n" + + "\x1dListMarketplaceOffersResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x121\n" + + "\x06offers\x18\x03 \x03(\v2\x19.gateway.MarketplaceOfferR\x06offers\";\n" + + "\x1aGetMarketplaceOfferRequest\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\"w\n" + + "\x1bGetMarketplaceOfferResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12/\n" + + "\x05offer\x18\x03 \x01(\v2\x19.gateway.MarketplaceOfferR\x05offer\"\x88\x03\n" + + "\x11MarketplaceRental\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + + "\n" + + "listing_id\x18\x02 \x01(\tR\tlistingId\x12!\n" + + "\flisting_name\x18\x03 \x01(\tR\vlistingName\x12\x1b\n" + + "\tpool_name\x18\x04 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x05 \x01(\tR\tmachineId\x12\x10\n" + + "\x03gpu\x18\x06 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\a \x01(\rR\bgpuCount\x12\x16\n" + + "\x06region\x18\b \x01(\tR\x06region\x12+\n" + + "\x11machine_connected\x18\t \x01(\bR\x10machineConnected\x129\n" + + "\n" + + "created_at\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x126\n" + + "\x18price_per_gpu_hour_cents\x18\v \x01(\rR\x14pricePerGpuHourCents\"{\n" + + "\x1eCreateMarketplaceRentalRequest\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\x12\x1d\n" + + "\n" + + "machine_id\x18\x02 \x01(\tR\tmachineId\x12\x1b\n" + + "\tgpu_count\x18\x03 \x01(\rR\bgpuCount\"~\n" + + "\x1fCreateMarketplaceRentalResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x122\n" + + "\x06rental\x18\x03 \x01(\v2\x1a.gateway.MarketplaceRentalR\x06rental\"\x1f\n" + + "\x1dListMarketplaceRentalsRequest\"\x7f\n" + + "\x1eListMarketplaceRentalsResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x124\n" + + "\arentals\x18\x03 \x03(\v2\x1a.gateway.MarketplaceRentalR\arentals\"=\n" + + "\x1eDeleteMarketplaceRentalRequest\x12\x1b\n" + + "\trental_id\x18\x01 \x01(\tR\brentalId\"J\n" + + "\x1fDeleteMarketplaceRentalResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\xc8\x01\n" + + "\x1bLaunchRentalWorkloadRequest\x12\x1b\n" + + "\trental_id\x18\x01 \x01(\tR\brentalId\x12\x12\n" + + "\x04kind\x18\x02 \x01(\tR\x04kind\x12\x19\n" + + "\bimage_id\x18\x03 \x01(\tR\aimageId\x12\x18\n" + + "\acommand\x18\x04 \x03(\tR\acommand\x12\x14\n" + + "\x05ports\x18\x05 \x03(\rR\x05ports\x12\x1b\n" + + "\tgpu_count\x18\x06 \x01(\rR\bgpuCount\x12\x10\n" + + "\x03env\x18\a \x03(\tR\x03env\"\xf2\x01\n" + + "\x1cLaunchRentalWorkloadResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12!\n" + + "\fcontainer_id\x18\x03 \x01(\tR\vcontainerId\x12\x17\n" + + "\astub_id\x18\x04 \x01(\tR\x06stubId\x12\x10\n" + + "\x03url\x18\x05 \x01(\tR\x03url\x12#\n" + + "\rshell_command\x18\x06 \x01(\tR\fshellCommand\x12\x1a\n" + + "\busername\x18\a \x01(\tR\busername\x12\x1a\n" + + "\bpassword\x18\b \x01(\tR\bpassword\"U\n" + + "\x1eListMarketplaceMachinesRequest\x12\x1d\n" + + "\n" + + "listing_id\x18\x01 \x01(\tR\tlistingId\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\"x\n" + + "\x1fListMarketplaceMachinesResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12,\n" + + "\bmachines\x18\x03 \x03(\v2\x10.gateway.MachineR\bmachines\"Z\n" + + "\x1cListMachineContainersRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x02 \x01(\tR\tmachineId\"\xa4\x02\n" + + "\x10MachineContainer\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\x12\x17\n" + + "\astub_id\x18\x02 \x01(\tR\x06stubId\x12\x16\n" + + "\x06status\x18\x03 \x01(\tR\x06status\x12!\n" + + "\fworkspace_id\x18\x04 \x01(\tR\vworkspaceId\x12\x10\n" + + "\x03gpu\x18\x05 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x06 \x01(\rR\bgpuCount\x12\x10\n" + + "\x03cpu\x18\a \x01(\x03R\x03cpu\x12\x16\n" + + "\x06memory\x18\b \x01(\x03R\x06memory\x12!\n" + + "\fscheduled_at\x18\t \x01(\x03R\vscheduledAt\x12\x1d\n" + + "\n" + + "started_at\x18\n" + + " \x01(\x03R\tstartedAt\"\x83\x01\n" + + "\x1dListMachineContainersResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x129\n" + + "\n" + + "containers\x18\x03 \x03(\v2\x19.gateway.MachineContainerR\n" + + "containers\"<\n" + + "\x11CreatePoolRequest\x12'\n" + + "\x04pool\x18\x01 \x01(\v2\x13.gateway.PoolConfigR\x04pool\"g\n" + + "\x12CreatePoolResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12(\n" + + "\x04pool\x18\x03 \x01(\v2\x14.gateway.PrivatePoolR\x04pool\"'\n" + + "\x11DeletePoolRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"=\n" + + "\x12DeletePoolResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"^\n" + + "\x19ExtendPoolCapacityRequest\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x10\n" + + "\x03ttl\x18\x02 \x01(\tR\x03ttl\x12\x1b\n" + + "\tmax_spend\x18\x03 \x01(\x01R\bmaxSpend\"o\n" + + "\x1aExtendPoolCapacityResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12(\n" + + "\x04pool\x18\x03 \x01(\v2\x14.gateway.PrivatePoolR\x04pool\"K\n" + + "\x1aCreatePoolJoinTokenRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x10\n" + + "\x03ttl\x18\x02 \x01(\tR\x03ttl\"\x97\x01\n" + + "\x1bCreatePoolJoinTokenResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12\x14\n" + + "\x05token\x18\x03 \x01(\tR\x05token\x129\n" + + "\n" + + "expires_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\"2\n" + + "\x1aRevokePoolJoinTokenRequest\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\"F\n" + + "\x1bRevokePoolJoinTokenResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"J\n" + + "\x19GetPoolJoinCommandRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x10\n" + + "\x03ttl\x18\x02 \x01(\tR\x03ttl\"\xb0\x01\n" + + "\x1aGetPoolJoinCommandResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12\x18\n" + + "\acommand\x18\x03 \x01(\tR\acommand\x12\x14\n" + + "\x05token\x18\x04 \x01(\tR\x05token\x129\n" + + "\n" + + "expires_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\"L\n" + + "\x17ListPoolMachinesRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\"q\n" + + "\x18ListPoolMachinesResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12,\n" + + "\bmachines\x18\x03 \x03(\v2\x10.gateway.MachineR\bmachines\"\x94\x05\n" + + "\x14AgentBootstrapConfig\x12(\n" + + "\x10gateway_http_url\x18\x01 \x01(\tR\x0egatewayHttpUrl\x12*\n" + + "\x11gateway_grpc_host\x18\x02 \x01(\tR\x0fgatewayGrpcHost\x12*\n" + + "\x11gateway_grpc_port\x18\x03 \x01(\x05R\x0fgatewayGrpcPort\x12(\n" + + "\x10gateway_grpc_tls\x18\x04 \x01(\bR\x0egatewayGrpcTls\x12!\n" + + "\fworkspace_id\x18\x05 \x01(\tR\vworkspaceId\x12\x1b\n" + + "\tpool_name\x18\x06 \x01(\tR\bpoolName\x12\x1c\n" + + "\ttransport\x18\a \x01(\tR\ttransport\x12\x1a\n" + + "\bexecutor\x18\b \x01(\tR\bexecutor\x12\x1a\n" + + "\bfallback\x18\t \x01(\tR\bfallback\x12+\n" + + "\x11disabled_services\x18\n" + + " \x03(\tR\x10disabledServices\x120\n" + + "\x14image_registry_store\x18\v \x01(\tR\x12imageRegistryStore\x12,\n" + + "\x12image_clip_version\x18\f \x01(\rR\x10imageClipVersion\x129\n" + + "\x19image_local_cache_enabled\x18\r \x01(\bR\x16imageLocalCacheEnabled\x12;\n" + + "\ttelemetry\x18\x0e \x01(\v2\x1d.gateway.AgentTelemetryConfigR\ttelemetry\x125\n" + + "\abilling\x18\x0f \x01(\v2\x1b.gateway.AgentBillingConfigR\abilling\"\xe2\x01\n" + + "\x12AgentBillingConfig\x12%\n" + + "\x0eusage_endpoint\x18\x01 \x01(\tR\rusageEndpoint\x12\x1f\n" + + "\vusage_token\x18\x02 \x01(\tR\n" + + "usageToken\x12,\n" + + "\x12cost_hook_endpoint\x18\x03 \x01(\tR\x10costHookEndpoint\x12&\n" + + "\x0fcost_hook_token\x18\x04 \x01(\tR\rcostHookToken\x12.\n" + + "\x13billable_margin_pct\x18\x05 \x01(\x01R\x11billableMarginPct\"\xc7\x01\n" + + "\x14AgentTelemetryConfig\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12#\n" + + "\rstream_prefix\x18\x02 \x01(\tR\fstreamPrefix\x125\n" + + "\x04logs\x18\x03 \x01(\v2!.gateway.AgentTelemetrySinkConfigR\x04logs\x129\n" + + "\x06events\x18\x04 \x01(\v2!.gateway.AgentTelemetrySinkConfigR\x06events\"\x81\x01\n" + + "\x18AgentTelemetrySinkConfig\x12 \n" + + "\vdestination\x18\x01 \x01(\tR\vdestination\x12\x1e\n" + + "\n" + + "credential\x18\x02 \x01(\tR\n" + + "credential\x12#\n" + + "\rstream_prefix\x18\x03 \x01(\tR\fstreamPrefix\"\x81\x05\n" + + "\x10JoinAgentRequest\x12\x1d\n" + + "\n" + + "join_token\x18\x01 \x01(\tR\tjoinToken\x12/\n" + + "\x13machine_fingerprint\x18\x02 \x01(\tR\x12machineFingerprint\x12\x1a\n" + + "\bhostname\x18\x03 \x01(\tR\bhostname\x12\x0e\n" + + "\x02os\x18\x04 \x01(\tR\x02os\x12\x12\n" + + "\x04arch\x18\x05 \x01(\tR\x04arch\x12\x1b\n" + + "\tcpu_count\x18\x06 \x01(\rR\bcpuCount\x12\x1b\n" + + "\tmemory_mb\x18\a \x01(\x04R\bmemoryMb\x12\x10\n" + + "\x03gpu\x18\b \x03(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\t \x01(\rR\bgpuCount\x12:\n" + + "\tpreflight\x18\n" + + " \x03(\v2\x1c.gateway.AgentPreflightCheckR\tpreflight\x12 \n" + + "\vschedulable\x18\v \x01(\bR\vschedulable\x12\x1a\n" + + "\bexecutor\x18\f \x01(\tR\bexecutor\x12%\n" + + "\x0ecpu_millicores\x18\r \x01(\x03R\rcpuMillicores\x12\x17\n" + + "\agpu_ids\x18\x0e \x03(\tR\x06gpuIds\x123\n" + + "\x16network_slot_pool_size\x18\x0f \x01(\rR\x13networkSlotPoolSize\x12>\n" + + "\x1bcontainer_start_concurrency\x18\x10 \x01(\rR\x19containerStartConcurrency\x12!\n" + + "\fworker_image\x18\x11 \x01(\tR\vworkerImage\x12\"\n" + + "\fcapabilities\x18\x12 \x03(\tR\fcapabilities\"\xf9\x01\n" + + "\x11JoinAgentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12!\n" + + "\fworkspace_id\x18\x03 \x01(\tR\vworkspaceId\x12\x1b\n" + + "\tpool_name\x18\x04 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x05 \x01(\tR\tmachineId\x12\x1f\n" + + "\vagent_token\x18\x06 \x01(\tR\n" + + "agentToken\x12;\n" + + "\tbootstrap\x18\a \x01(\v2\x1d.gateway.AgentBootstrapConfigR\tbootstrap\"o\n" + + "\x13AgentPreflightCheck\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n" + + "\x02ok\x18\x02 \x01(\bR\x02ok\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x12\x1a\n" + + "\bseverity\x18\x04 \x01(\tR\bseverity\"\xb9\x03\n" + + "\n" + + "AgentRoute\x12\x19\n" + + "\broute_id\x18\x01 \x01(\tR\arouteId\x12!\n" + + "\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x12\x1b\n" + + "\tpool_name\x18\x03 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x04 \x01(\tR\tmachineId\x12\x1b\n" + + "\tworker_id\x18\x05 \x01(\tR\bworkerId\x12!\n" + + "\fcontainer_id\x18\x06 \x01(\tR\vcontainerId\x12\x12\n" + + "\x04kind\x18\a \x01(\tR\x04kind\x12\x12\n" + + "\x04port\x18\b \x01(\x05R\x04port\x12\x1a\n" + + "\bprotocol\x18\t \x01(\tR\bprotocol\x12\x1c\n" + + "\ttransport\x18\n" + + " \x01(\tR\ttransport\x12!\n" + + "\flocal_target\x18\v \x01(\tR\vlocalTarget\x12!\n" + + "\fproxy_target\x18\f \x01(\tR\vproxyTarget\x12\x14\n" + + "\x05state\x18\r \x01(\tR\x05state\x12\x14\n" + + "\x05error\x18\x0e \x01(\tR\x05error\x12\x1d\n" + + "\n" + + "updated_at\x18\x0f \x01(\x03R\tupdatedAt\"g\n" + + "&RequestAgentTransportCredentialRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\x12\x1c\n" + + "\ttransport\x18\x02 \x01(\tR\ttransport\"\xc8\x01\n" + + "'RequestAgentTransportCredentialResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12\x19\n" + + "\bauth_key\x18\x03 \x01(\tR\aauthKey\x12\x1f\n" + + "\vcontrol_url\x18\x04 \x01(\tR\n" + + "controlUrl\x12\x1a\n" + + "\bhostname\x18\x05 \x01(\tR\bhostname\x12\x1c\n" + + "\tephemeral\x18\x06 \x01(\bR\tephemeral\">\n" + + "\x1bCreateNodeEnrollmentRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\"v\n" + + "\x1cCreateNodeEnrollmentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\terror_msg\x18\x02 \x01(\tR\berrorMsg\x12)\n" + + "\x10enrollment_token\x18\x03 \x01(\tR\x0fenrollmentToken\">\n" + + "\x1bDeleteNodeEnrollmentRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\"K\n" + + "\x1cDeleteNodeEnrollmentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\terror_msg\x18\x02 \x01(\tR\berrorMsg\"9\n" + + "\x16ListAgentRoutesRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\"o\n" + + "\x17ListAgentRoutesResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12+\n" + + "\x06routes\x18\x03 \x03(\v2\x13.gateway.AgentRouteR\x06routes\"\xad\x02\n" + + "\x1dUpdateAgentRouteStatusRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\x12\x19\n" + + "\broute_id\x18\x02 \x01(\tR\arouteId\x12\x14\n" + + "\x05state\x18\x03 \x01(\tR\x05state\x12!\n" + + "\fproxy_target\x18\x04 \x01(\tR\vproxyTarget\x12\x14\n" + + "\x05error\x18\x05 \x01(\tR\x05error\x12G\n" + + "\x05attrs\x18\x06 \x03(\v21.gateway.UpdateAgentRouteStatusRequest.AttrsEntryR\x05attrs\x1a8\n" + + "\n" + + "AttrsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"I\n" + + "\x1eUpdateAgentRouteStatusResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\x96\b\n" + + "\x0fAgentWorkerSlot\x12\x1b\n" + + "\tworker_id\x18\x01 \x01(\tR\bworkerId\x12!\n" + + "\fworker_token\x18\x02 \x01(\tR\vworkerToken\x12\x1b\n" + + "\tpool_name\x18\x03 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x04 \x01(\tR\tmachineId\x12\x10\n" + + "\x03cpu\x18\x05 \x01(\x03R\x03cpu\x12\x16\n" + + "\x06memory\x18\x06 \x01(\x03R\x06memory\x12\x10\n" + + "\x03gpu\x18\a \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\b \x01(\rR\bgpuCount\x12%\n" + + "\x0egpu_assignment\x18\t \x01(\tR\rgpuAssignment\x12%\n" + + "\x0enetwork_prefix\x18\n" + + " \x01(\tR\rnetworkPrefix\x12!\n" + + "\fworker_image\x18\v \x01(\tR\vworkerImage\x123\n" + + "\x16network_slot_pool_size\x18\f \x01(\rR\x13networkSlotPoolSize\x12>\n" + + "\x1bcontainer_start_concurrency\x18\r \x01(\rR\x19containerStartConcurrency\x12\x12\n" + + "\x04mode\x18\x0e \x01(\tR\x04mode\x12+\n" + + "\x11container_runtime\x18\x0f \x01(\tR\x10containerRuntime\x124\n" + + "\x16marketplace_listing_id\x18\x10 \x01(\tR\x14marketplaceListingId\x12.\n" + + "\x13seller_workspace_id\x18\x11 \x01(\tR\x11sellerWorkspaceId\x124\n" + + "\x16requires_pool_selector\x18\x12 \x01(\bR\x14requiresPoolSelector\x12\x1a\n" + + "\bpriority\x18\x13 \x01(\x05R\bpriority\x12 \n" + + "\vpreemptable\x18\x14 \x01(\bR\vpreemptable\x12!\n" + + "\fpriority_set\x18\x15 \x01(\bR\vprioritySet\x12'\n" + + "\x0fgvisor_platform\x18\x16 \x01(\tR\x0egvisorPlatform\x12\x1f\n" + + "\vgvisor_root\x18\x17 \x01(\tR\n" + + "gvisorRoot\x12*\n" + + "\x11gvisor_extra_args\x18\x18 \x03(\tR\x0fgvisorExtraArgs\x12\x1e\n" + + "\n" + + "generation\x18\x19 \x01(\tR\n" + + "generation\x122\n" + + "\x15cpu_affinity_enforced\x18\x1a \x01(\bR\x13cpuAffinityEnforced\x12@\n" + + "\vpool_config\x18\x1b \x01(\v2\x1f.gateway.AgentPoolRuntimeConfigR\n" + + "poolConfig\"5\n" + + "\x12StreamAgentRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\"\xc6\x01\n" + + "\x13StreamAgentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12+\n" + + "\x06routes\x18\x03 \x03(\v2\x13.gateway.AgentRouteR\x06routes\x12.\n" + + "\x05slots\x18\x04 \x03(\v2\x18.gateway.AgentWorkerSlotR\x05slots\x12)\n" + + "\x03ssh\x18\x05 \x01(\v2\x17.gateway.AgentSSHConfigR\x03ssh\"\xb7\x01\n" + + "\x0eAgentLogRecord\x12\x16\n" + + "\x06source\x18\x01 \x01(\tR\x06source\x12\x1b\n" + + "\tworker_id\x18\x02 \x01(\tR\bworkerId\x12\x14\n" + + "\x05level\x18\x03 \x01(\tR\x05level\x12\x16\n" + + "\x06stream\x18\x04 \x01(\tR\x06stream\x12\x12\n" + + "\x04line\x18\x05 \x01(\tR\x04line\x12.\n" + + "\x13timestamp_unix_nano\x18\x06 \x01(\x03R\x11timestampUnixNano\"\xb4\x04\n" + + "\x13AgentMetricSnapshot\x12.\n" + + "\x13timestamp_unix_nano\x18\x01 \x01(\x03R\x11timestampUnixNano\x12.\n" + + "\x13cpu_utilization_pct\x18\x02 \x01(\x02R\x11cpuUtilizationPct\x12$\n" + + "\x0ememory_used_mb\x18\x03 \x01(\x04R\fmemoryUsedMb\x12&\n" + + "\x0fmemory_total_mb\x18\x04 \x01(\x04R\rmemoryTotalMb\x124\n" + + "\x16memory_utilization_pct\x18\x05 \x01(\x02R\x14memoryUtilizationPct\x12 \n" + + "\fdisk_used_mb\x18\x06 \x01(\x04R\n" + + "diskUsedMb\x12\"\n" + + "\rdisk_total_mb\x18\a \x01(\x04R\vdiskTotalMb\x12$\n" + + "\x0edisk_usage_pct\x18\b \x01(\x02R\fdiskUsagePct\x12\x1b\n" + + "\tdisk_path\x18\t \x01(\tR\bdiskPath\x12!\n" + + "\fworker_count\x18\n" + + " \x01(\rR\vworkerCount\x12'\n" + + "\x0fcontainer_count\x18\v \x01(\rR\x0econtainerCount\x12$\n" + + "\x0efree_gpu_count\x18\f \x01(\rR\ffreeGpuCount\x12>\n" + + "\fpath_metrics\x18\r \x03(\v2\x1b.gateway.MachinePathMetricsR\vpathMetrics\"\xa1\x02\n" + + "\x10AgentEventRecord\x12\x16\n" + + "\x06action\x18\x01 \x01(\tR\x06action\x12\x16\n" + + "\x06status\x18\x02 \x01(\tR\x06status\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x12:\n" + + "\x05attrs\x18\x04 \x03(\v2$.gateway.AgentEventRecord.AttrsEntryR\x05attrs\x12.\n" + + "\x13timestamp_unix_nano\x18\x05 \x01(\x03R\x11timestampUnixNano\x12\x1d\n" + + "\n" + + "event_type\x18\x06 \x01(\tR\teventType\x1a8\n" + + "\n" + + "AttrsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xd0\x01\n" + + "\x15AgentTelemetryRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\x12+\n" + + "\x04logs\x18\x02 \x03(\v2\x17.gateway.AgentLogRecordR\x04logs\x126\n" + + "\ametrics\x18\x03 \x01(\v2\x1c.gateway.AgentMetricSnapshotR\ametrics\x121\n" + + "\x06events\x18\x04 \x03(\v2\x19.gateway.AgentEventRecordR\x06events\"A\n" + + "\x16AgentTelemetryResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\xb9\x04\n" + + "\aMachine\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n" + + "\x03cpu\x18\x02 \x01(\x03R\x03cpu\x12\x16\n" + + "\x06memory\x18\x03 \x01(\x03R\x06memory\x12\x10\n" + + "\x03gpu\x18\x04 \x01(\tR\x03gpu\x12\x1b\n" + + "\tgpu_count\x18\x05 \x01(\rR\bgpuCount\x12\x16\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12\x1b\n" + + "\tpool_name\x18\a \x01(\tR\bpoolName\x12#\n" + + "\rprovider_name\x18\b \x01(\tR\fproviderName\x12-\n" + + "\x12registration_token\x18\t \x01(\tR\x11registrationToken\x12#\n" + + "\rtailscale_url\x18\n" + + " \x01(\tR\ftailscaleUrl\x12%\n" + + "\x0etailscale_auth\x18\v \x01(\tR\rtailscaleAuth\x12%\n" + + "\x0elast_keepalive\x18\f \x01(\tR\rlastKeepalive\x12\x18\n" + + "\acreated\x18\r \x01(\tR\acreated\x12#\n" + + "\ragent_version\x18\x0e \x01(\tR\fagentVersion\x12@\n" + + "\x0fmachine_metrics\x18\x0f \x01(\v2\x17.gateway.MachineMetricsR\x0emachineMetrics\x12\x1b\n" + + "\tuser_data\x18\x10 \x01(\tR\buserData\x12+\n" + + "\x03ssh\x18\x11 \x01(\v2\x19.gateway.MachineSSHAccessR\x03ssh\"\xed\x05\n" + + "\x0eMachineMetrics\x12.\n" + + "\x13total_cpu_available\x18\x01 \x01(\x05R\x11totalCpuAvailable\x124\n" + + "\x16total_memory_available\x18\x02 \x01(\x05R\x14totalMemoryAvailable\x12.\n" + + "\x13cpu_utilization_pct\x18\x03 \x01(\x02R\x11cpuUtilizationPct\x124\n" + + "\x16memory_utilization_pct\x18\x04 \x01(\x02R\x14memoryUtilizationPct\x12!\n" + + "\fworker_count\x18\x05 \x01(\x05R\vworkerCount\x12'\n" + + "\x0fcontainer_count\x18\x06 \x01(\x05R\x0econtainerCount\x12$\n" + + "\x0efree_gpu_count\x18\a \x01(\x05R\ffreeGpuCount\x12&\n" + + "\x0fcache_usage_pct\x18\b \x01(\x02R\rcacheUsagePct\x12%\n" + + "\x0ecache_capacity\x18\t \x01(\x05R\rcacheCapacity\x12,\n" + + "\x12cache_memory_usage\x18\n" + + " \x01(\x05R\x10cacheMemoryUsage\x12&\n" + + "\x0fcache_cpu_usage\x18\v \x01(\x02R\rcacheCpuUsage\x12$\n" + + "\x0ememory_used_mb\x18\f \x01(\x03R\fmemoryUsedMb\x12&\n" + + "\x0fmemory_total_mb\x18\r \x01(\x03R\rmemoryTotalMb\x12 \n" + + "\fdisk_used_mb\x18\x0e \x01(\x03R\n" + + "diskUsedMb\x12\"\n" + + "\rdisk_total_mb\x18\x0f \x01(\x03R\vdiskTotalMb\x12$\n" + + "\x0edisk_usage_pct\x18\x10 \x01(\x02R\fdiskUsagePct\x12>\n" + + "\fpath_metrics\x18\x11 \x03(\v2\x1b.gateway.MachinePathMetricsR\vpathMetrics\"\xb2\x01\n" + + "\x12MachinePathMetrics\x12\x14\n" + + "\x05label\x18\x01 \x01(\tR\x05label\x12\x12\n" + + "\x04path\x18\x02 \x01(\tR\x04path\x12\x17\n" + + "\aused_mb\x18\x03 \x01(\x04R\x06usedMb\x12\x19\n" + + "\btotal_mb\x18\x04 \x01(\x04R\atotalMb\x12!\n" + + "\favailable_mb\x18\x05 \x01(\x04R\vavailableMb\x12\x1b\n" + + "\tusage_pct\x18\x06 \x01(\x02R\busagePct\"H\n" + + "\x13ListMachinesRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x14\n" + + "\x05limit\x18\x02 \x01(\rR\x05limit\"\xfe\x02\n" + + "\x14ListMachinesResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12,\n" + + "\bmachines\x18\x03 \x03(\v2\x10.gateway.MachineR\bmachines\x12;\n" + + "\x04gpus\x18\x04 \x03(\v2'.gateway.ListMachinesResponse.GpusEntryR\x04gpus\x12W\n" + + "\x0esupported_gpus\x18\x05 \x03(\v20.gateway.ListMachinesResponse.SupportedGpusEntryR\rsupportedGpus\x1a7\n" + + "\tGpusEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\x1a@\n" + + "\x12SupportedGpusEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\"3\n" + + "\x14CreateMachineRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\"\xa9\x02\n" + + "\x15CreateMachineResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12*\n" + + "\amachine\x18\x03 \x01(\v2\x10.gateway.MachineR\amachine\x12,\n" + + "\x12agent_upstream_url\x18\x04 \x01(\tR\x10agentUpstreamUrl\x122\n" + + "\x15agent_upstream_branch\x18\x05 \x01(\tR\x13agentUpstreamBranch\x120\n" + + "\x14agent_upstream_token\x18\x06 \x01(\tR\x12agentUpstreamToken\x12'\n" + + "\x0finstall_command\x18\a \x01(\tR\x0einstallCommand\"R\n" + + "\x14DeleteMachineRequest\x12\x1d\n" + + "\n" + + "machine_id\x18\x01 \x01(\tR\tmachineId\x12\x1b\n" + + "\tpool_name\x18\x02 \x01(\tR\bpoolName\"@\n" + + "\x15DeleteMachineResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\xb6\x02\n" + + "\x05Token\x12\x19\n" + + "\btoken_id\x18\x01 \x01(\tR\atokenId\x12\x10\n" + + "\x03key\x18\x02 \x01(\tR\x03key\x12\x16\n" + + "\x06active\x18\x03 \x01(\bR\x06active\x12\x1a\n" + + "\breusable\x18\x04 \x01(\bR\breusable\x12&\n" + + "\fworkspace_id\x18\x05 \x01(\rH\x00R\vworkspaceId\x88\x01\x01\x12\x1d\n" + + "\n" + + "token_type\x18\x06 \x01(\tR\ttokenType\x129\n" + + "\n" + + "created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAtB\x0f\n" + + "\r_workspace_id\"\x13\n" + + "\x11ListTokensRequest\"e\n" + + "\x12ListTokensResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12&\n" + + "\x06tokens\x18\x03 \x03(\v2\x0e.gateway.TokenR\x06tokens\"3\n" + + "\x12CreateTokenRequest\x12\x1d\n" + + "\n" + + "token_type\x18\x01 \x01(\tR\ttokenType\"d\n" + + "\x13CreateTokenResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12$\n" + + "\x05token\x18\x03 \x01(\v2\x0e.gateway.TokenR\x05token\"/\n" + + "\x12ToggleTokenRequest\x12\x19\n" + + "\btoken_id\x18\x01 \x01(\tR\atokenId\"d\n" + + "\x13ToggleTokenResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12$\n" + + "\x05token\x18\x03 \x01(\v2\x0e.gateway.TokenR\x05token\"/\n" + + "\x12DeleteTokenRequest\x12\x19\n" + + "\btoken_id\x18\x01 \x01(\tR\atokenId\">\n" + + "\x13DeleteTokenResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\x83\x01\n" + + "\rGetURLRequest\x12\x17\n" + + "\astub_id\x18\x01 \x01(\tR\x06stubId\x12#\n" + + "\rdeployment_id\x18\x02 \x01(\tR\fdeploymentId\x12\x19\n" + + "\burl_type\x18\x03 \x01(\tR\aurlType\x12\x19\n" + + "\bis_shell\x18\x04 \x01(\bR\aisShell\"K\n" + + "\x0eGetURLResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12\x10\n" + + "\x03url\x18\x03 \x01(\tR\x03url\"\x14\n" + + "\x12ListWorkersRequest\"g\n" + + "\x13ListWorkersResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12'\n" + + "\aworkers\x18\x03 \x03(\v2\r.types.WorkerR\aworkers\"2\n" + + "\x13CordonWorkerRequest\x12\x1b\n" + + "\tworker_id\x18\x01 \x01(\tR\bworkerId\"?\n" + + "\x14CordonWorkerResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"4\n" + + "\x15UncordonWorkerRequest\x12\x1b\n" + + "\tworker_id\x18\x01 \x01(\tR\bworkerId\"A\n" + + "\x16UncordonWorkerResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"1\n" + + "\x12DrainWorkerRequest\x12\x1b\n" + + "\tworker_id\x18\x01 \x01(\tR\bworkerId\">\n" + + "\x13DrainWorkerResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\x1e\n" + + "\x1cExportWorkspaceConfigRequest\"\xc6\x02\n" + + "\x1dExportWorkspaceConfigResponse\x12*\n" + + "\x11gateway_http_host\x18\x01 \x01(\tR\x0fgatewayHttpHost\x12*\n" + + "\x11gateway_http_port\x18\x02 \x01(\x05R\x0fgatewayHttpPort\x12(\n" + + "\x10gateway_http_tls\x18\x03 \x01(\bR\x0egatewayHttpTls\x12*\n" + + "\x11gateway_grpc_host\x18\x04 \x01(\tR\x0fgatewayGrpcHost\x12*\n" + + "\x11gateway_grpc_port\x18\x05 \x01(\x05R\x0fgatewayGrpcPort\x12(\n" + + "\x10gateway_grpc_tls\x18\x06 \x01(\bR\x0egatewayGrpcTls\x12!\n" + + "\fworkspace_id\x18\a \x01(\tR\vworkspaceId\"\xae\x01\n" + + "\x1eUpdateAgentAvailabilityRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\x12 \n" + + "\vschedulable\x18\x02 \x01(\bR\vschedulable\x12\x16\n" + + "\x06reason\x18\x03 \x01(\tR\x06reason\x121\n" + + "\x15observed_at_unix_nano\x18\x04 \x01(\x03R\x12observedAtUnixNano\"J\n" + + "\x1fUpdateAgentAvailabilityResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"Z\n" + + "\x1cDownloadMachineSSHKeyRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x02 \x01(\tR\tmachineId\"\xf8\x01\n" + + "\x1dDownloadMachineSSHKeyResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12\x1f\n" + + "\vprivate_key\x18\x03 \x01(\tR\n" + + "privateKey\x12\x1a\n" + + "\bfilename\x18\x04 \x01(\tR\bfilename\x12\x1e\n" + + "\n" + + "generation\x18\x05 \x01(\x04R\n" + + "generation\x12 \n" + + "\vfingerprint\x18\x06 \x01(\tR\vfingerprint\x12/\n" + + "\x13activation_required\x18\a \x01(\bR\x12activationRequired\"X\n" + + "\x1aRotateMachineSSHKeyRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x02 \x01(\tR\tmachineId\"s\n" + + "\x1bRotateMachineSSHKeyResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12+\n" + + "\x03ssh\x18\x03 \x01(\v2\x19.gateway.MachineSSHAccessR\x03ssh\"z\n" + + "\x1cActivateMachineSSHKeyRequest\x12\x1b\n" + + "\tpool_name\x18\x01 \x01(\tR\bpoolName\x12\x1d\n" + + "\n" + + "machine_id\x18\x02 \x01(\tR\tmachineId\x12\x1e\n" + + "\n" + + "generation\x18\x03 \x01(\x04R\n" + + "generation\"u\n" + + "\x1dActivateMachineSSHKeyResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\x12+\n" + + "\x03ssh\x18\x03 \x01(\v2\x19.gateway.MachineSSHAccessR\x03ssh\"\xae\x01\n" + + "\x0eAgentSSHConfig\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x1a\n" + + "\busername\x18\x02 \x01(\tR\busername\x12\x1d\n" + + "\n" + + "public_key\x18\x03 \x01(\tR\tpublicKey\x12'\n" + + "\x0fkey_fingerprint\x18\x04 \x01(\tR\x0ekeyFingerprint\x12\x1e\n" + + "\n" + + "generation\x18\x05 \x01(\x04R\n" + + "generation\"\xfc\x01\n" + + "\x1bUpdateAgentSSHStatusRequest\x12\x1f\n" + + "\vagent_token\x18\x01 \x01(\tR\n" + + "agentToken\x12\x1e\n" + + "\n" + + "generation\x18\x02 \x01(\x04R\n" + + "generation\x12\x16\n" + + "\x06status\x18\x03 \x01(\tR\x06status\x12\x1b\n" + + "\tpublic_ip\x18\x04 \x01(\tR\bpublicIp\x120\n" + + "\x14host_key_fingerprint\x18\x05 \x01(\tR\x12hostKeyFingerprint\x12\x14\n" + + "\x05error\x18\x06 \x01(\tR\x05error\x12\x1f\n" + + "\vlisten_port\x18\a \x01(\rR\n" + + "listenPort\"G\n" + + "\x1cUpdateAgentSSHStatusResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x17\n" + + "\aerr_msg\x18\x02 \x01(\tR\x06errMsg\"\xda\x05\n" + + "\x10MachineSSHAccess\x12\x1c\n" + + "\tsupported\x18\x01 \x01(\bR\tsupported\x12\x16\n" + + "\x06status\x18\x02 \x01(\tR\x06status\x12\x1b\n" + + "\tpublic_ip\x18\x03 \x01(\tR\bpublicIp\x12\x12\n" + + "\x04host\x18\x04 \x01(\tR\x04host\x12\x12\n" + + "\x04port\x18\x05 \x01(\rR\x04port\x12\x1a\n" + + "\busername\x18\x06 \x01(\tR\busername\x12+\n" + + "\x11active_generation\x18\a \x01(\x04R\x10activeGeneration\x12-\n" + + "\x12applied_generation\x18\b \x01(\x04R\x11appliedGeneration\x12'\n" + + "\x0fkey_fingerprint\x18\t \x01(\tR\x0ekeyFingerprint\x120\n" + + "\x14host_key_fingerprint\x18\n" + + " \x01(\tR\x12hostKeyFingerprint\x122\n" + + "\x15private_key_available\x18\v \x01(\bR\x13privateKeyAvailable\x12)\n" + + "\x10pending_rotation\x18\f \x01(\bR\x0fpendingRotation\x12-\n" + + "\x12pending_generation\x18\r \x01(\x04R\x11pendingGeneration\x12/\n" + + "\x13pending_fingerprint\x18\x0e \x01(\tR\x12pendingFingerprint\x122\n" + + "\x15pending_key_available\x18\x0f \x01(\bR\x13pendingKeyAvailable\x124\n" + + "\x16pending_key_downloaded\x18\x10 \x01(\bR\x14pendingKeyDownloaded\x12\x14\n" + + "\x05error\x18\x11 \x01(\tR\x05error\x129\n" + + "\n" + + "updated_at\x18\x12 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xba\x01\n" + + "\x18AgentPoolCacheDiskConfig\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x1b\n" + + "\thost_path\x18\x02 \x01(\tR\bhostPath\x12\x1d\n" + + "\n" + + "mount_path\x18\x03 \x01(\tR\tmountPath\x12\"\n" + + "\rmax_usage_pct\x18\x04 \x01(\x01R\vmaxUsagePct\x12$\n" + + "\x0emin_free_bytes\x18\x05 \x01(\x03R\fminFreeBytes\"g\n" + + "\x14AgentPoolCacheConfig\x12\x18\n" + + "\aenabled\x18\x01 \x01(\bR\aenabled\x125\n" + + "\x04disk\x18\x02 \x01(\v2!.gateway.AgentPoolCacheDiskConfigR\x04disk\"\xac\x03\n" + + "\x16AgentPoolRuntimeConfig\x123\n" + + "\x15network_preallocation\x18\x01 \x01(\bR\x14networkPreallocation\x12!\n" + + "\fcriu_enabled\x18\x02 \x01(\bR\vcriuEnabled\x12$\n" + + "\x0etmp_size_limit\x18\x03 \x01(\tR\ftmpSizeLimit\x12!\n" + + "\fstorage_mode\x18\x04 \x01(\tR\vstorageMode\x12!\n" + + "\fstorage_path\x18\x05 \x01(\tR\vstoragePath\x12\x1f\n" + + "\vimages_path\x18\x06 \x01(\tR\n" + + "imagesPath\x12,\n" + + "\x12durable_disks_path\x18\a \x01(\tR\x10durableDisksPath\x123\n" + + "\x05cache\x18\b \x01(\v2\x1d.gateway.AgentPoolCacheConfigR\x05cache\x12!\n" + + "\fconfig_group\x18\t \x01(\tR\vconfigGroup\x12'\n" + + "\x0fgpu_virtualized\x18\n" + + " \x01(\bR\x0egpuVirtualized*C\n" + + "\x1fSyncContainerWorkspaceOperation\x12\t\n" + + "\x05WRITE\x10\x00\x12\n" + + "\n" + + "\x06DELETE\x10\x01\x12\t\n" + + "\x05MOVED\x10\x022\xe8C\n" + + "\x0eGatewayService\x12[\n" + + "\tAuthorize\x12\x19.gateway.AuthorizeRequest\x1a\x1a.gateway.AuthorizeResponse\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0f/auth/authorize\x12_\n" + + "\vSignPayload\x12\x1b.gateway.SignPayloadRequest\x1a\x1c.gateway.SignPayloadResponse\"\x15\x82\xd3\xe4\x93\x02\x0f:\x01*\"\n" + + "/auth/sign\x12^\n" + + "\n" + + "HeadObject\x12\x1a.gateway.HeadObjectRequest\x1a\x1b.gateway.HeadObjectResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/objects/{hash}\x12`\n" + + "\fCreateObject\x12\x1c.gateway.CreateObjectRequest\x1a\x1d.gateway.CreateObjectResponse\"\x13\x82\xd3\xe4\x93\x02\r:\x01*\"\b/objects\x12L\n" + + "\x0fPutObjectStream\x12\x19.gateway.PutObjectRequest\x1a\x1a.gateway.PutObjectResponse\"\x00(\x01\x12b\n" + + "\x13CheckpointContainer\x12#.gateway.CheckpointContainerRequest\x1a$.gateway.CheckpointContainerResponse\"\x00\x12f\n" + + "\x0eListContainers\x12\x1e.gateway.ListContainersRequest\x1a\x1f.gateway.ListContainersResponse\"\x13\x82\xd3\xe4\x93\x02\r\x12\v/containers\x12w\n" + + "\rStopContainer\x12\x1d.gateway.StopContainerRequest\x1a\x1e.gateway.StopContainerResponse\"'\x82\xd3\xe4\x93\x02!\"\x1f/containers/{container_id}/stop\x12^\n" + + "\x11AttachToContainer\x12\x1f.gateway.ContainerStreamMessage\x1a\".gateway.AttachToContainerResponse\"\x00(\x010\x01\x12[\n" + + "\tStartTask\x12\x19.gateway.StartTaskRequest\x1a\x1a.gateway.StartTaskResponse\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/tasks/start\x12S\n" + + "\aEndTask\x12\x17.gateway.EndTaskRequest\x1a\x18.gateway.EndTaskResponse\"\x15\x82\xd3\xe4\x93\x02\x0f:\x01*\"\n" + + "/tasks/end\x12Z\n" + + "\tStopTasks\x12\x19.gateway.StopTasksRequest\x1a\x1a.gateway.StopTasksResponse\"\x16\x82\xd3\xe4\x93\x02\x10:\x01*\"\v/tasks/stop\x12R\n" + + "\tListTasks\x12\x19.gateway.ListTasksRequest\x1a\x1a.gateway.ListTasksResponse\"\x0e\x82\xd3\xe4\x93\x02\b\x12\x06/tasks\x12g\n" + + "\x0fGetOrCreateStub\x12\x1f.gateway.GetOrCreateStubRequest\x1a .gateway.GetOrCreateStubResponse\"\x11\x82\xd3\xe4\x93\x02\v:\x01*\"\x06/stubs\x12_\n" + + "\n" + + "DeployStub\x12\x1a.gateway.DeployStubRequest\x1a\x1b.gateway.DeployStubResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/stubs/deploy\x12W\n" + + "\x06GetURL\x12\x16.gateway.GetURLRequest\x1a\x17.gateway.GetURLResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/stubs/{stub_id}/url\x12j\n" + + "\x0fListDeployments\x12\x1f.gateway.ListDeploymentsRequest\x1a .gateway.ListDeploymentsResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\f/deployments\x12q\n" + + "\x0eStopDeployment\x12\x1e.gateway.StopDeploymentRequest\x1a\x1f.gateway.StopDeploymentResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\"\x16/deployments/{id}/stop\x12u\n" + + "\x0fStartDeployment\x12\x1f.gateway.StartDeploymentRequest\x1a .gateway.StartDeploymentResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x17/deployments/{id}/start\x12x\n" + + "\x0fScaleDeployment\x12\x1f.gateway.ScaleDeploymentRequest\x1a .gateway.ScaleDeploymentResponse\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/deployments/{id}/scale\x12r\n" + + "\x10DeleteDeployment\x12 .gateway.DeleteDeploymentRequest\x1a!.gateway.DeleteDeploymentResponse\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/deployments/{id}\x12R\n" + + "\tListPools\x12\x19.gateway.ListPoolsRequest\x1a\x1a.gateway.ListPoolsResponse\"\x0e\x82\xd3\xe4\x93\x02\b\x12\x06/pools\x12k\n" + + "\x0eListPoolOffers\x12\x1e.gateway.ListPoolOffersRequest\x1a\x1f.gateway.ListPoolOffersResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/pools:offers\x12w\n" + + "\x12LaunchPoolCapacity\x12\".gateway.LaunchPoolCapacityRequest\x1a#.gateway.LaunchPoolCapacityResponse\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/pools:launch\x12o\n" + + "\x10ListPrivatePools\x12 .gateway.ListPrivatePoolsRequest\x1a!.gateway.ListPrivatePoolsResponse\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/pools/private\x12i\n" + + "\x0eCreateBYOCPool\x12\x1e.gateway.CreateBYOCPoolRequest\x1a\x1f.gateway.CreateBYOCPoolResponse\"\x16\x82\xd3\xe4\x93\x02\x10:\x01*\"\v/pools/byoc\x12i\n" + + "\vGetBYOCPool\x12\x1b.gateway.GetBYOCPoolRequest\x1a\x1c.gateway.GetBYOCPoolResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/pools/{pool_name}/byoc\x12x\n" + + "\rScaleBYOCPool\x12\x1d.gateway.ScaleBYOCPoolRequest\x1a\x1e.gateway.ScaleBYOCPoolResponse\"(\x82\xd3\xe4\x93\x02\":\x01*\"\x1d/pools/{pool_name}/byoc/scale\x12\x91\x01\n" + + "\x18CreateMarketplaceListing\x12(.gateway.CreateMarketplaceListingRequest\x1a).gateway.CreateMarketplaceListingResponse\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/marketplace/listings\x12\x9e\x01\n" + + "\x18UpdateMarketplaceListing\x12(.gateway.UpdateMarketplaceListingRequest\x1a).gateway.UpdateMarketplaceListingResponse\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/marketplace/listings/{listing_id}\x12\x9b\x01\n" + + "\x18DeleteMarketplaceListing\x12(.gateway.DeleteMarketplaceListingRequest\x1a).gateway.DeleteMarketplaceListingResponse\"*\x82\xd3\xe4\x93\x02$*\"/marketplace/listings/{listing_id}\x12\x8b\x01\n" + + "\x17ListMarketplaceListings\x12'.gateway.ListMarketplaceListingsRequest\x1a(.gateway.ListMarketplaceListingsResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/marketplace/listings\x12\xae\x01\n" + + "\x19GetMarketplaceJoinCommand\x12).gateway.GetMarketplaceJoinCommandRequest\x1a*.gateway.GetMarketplaceJoinCommandResponse\":\x82\xd3\xe4\x93\x024:\x01*\"//marketplace/listings/{listing_id}/join-command\x12\x83\x01\n" + + "\x15ListMarketplaceOffers\x12%.gateway.ListMarketplaceOffersRequest\x1a&.gateway.ListMarketplaceOffersResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/marketplace/offers\x12\x8a\x01\n" + + "\x13GetMarketplaceOffer\x12#.gateway.GetMarketplaceOfferRequest\x1a$.gateway.GetMarketplaceOfferResponse\"(\x82\xd3\xe4\x93\x02\"\x12 /marketplace/offers/{listing_id}\x12\x8d\x01\n" + + "\x17CreateMarketplaceRental\x12'.gateway.CreateMarketplaceRentalRequest\x1a(.gateway.CreateMarketplaceRentalResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/marketplace/rentals\x12\x87\x01\n" + + "\x16ListMarketplaceRentals\x12&.gateway.ListMarketplaceRentalsRequest\x1a'.gateway.ListMarketplaceRentalsResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/marketplace/rentals\x12\x96\x01\n" + + "\x17DeleteMarketplaceRental\x12'.gateway.DeleteMarketplaceRentalRequest\x1a(.gateway.DeleteMarketplaceRentalResponse\"(\x82\xd3\xe4\x93\x02\"* /marketplace/rentals/{rental_id}\x12\x97\x01\n" + + "\x14LaunchRentalWorkload\x12$.gateway.LaunchRentalWorkloadRequest\x1a%.gateway.LaunchRentalWorkloadResponse\"2\x82\xd3\xe4\x93\x02,:\x01*\"'/marketplace/rentals/{rental_id}/launch\x12\xa1\x01\n" + + "\x17ListMarketplaceMachines\x12'.gateway.ListMarketplaceMachinesRequest\x1a(.gateway.ListMarketplaceMachinesResponse\"3\x82\xd3\xe4\x93\x02-\x12+/marketplace/listings/{listing_id}/machines\x12\xa3\x01\n" + + "\x15ListMachineContainers\x12%.gateway.ListMachineContainersRequest\x1a&.gateway.ListMachineContainersResponse\";\x82\xd3\xe4\x93\x025\x123/pools/{pool_name}/machines/{machine_id}/containers\x12X\n" + + "\n" + + "CreatePool\x12\x1a.gateway.CreatePoolRequest\x1a\x1b.gateway.CreatePoolResponse\"\x11\x82\xd3\xe4\x93\x02\v:\x01*\"\x06/pools\x12\\\n" + + "\n" + + "DeletePool\x12\x1a.gateway.DeletePoolRequest\x1a\x1b.gateway.DeletePoolResponse\"\x15\x82\xd3\xe4\x93\x02\x0f*\r/pools/{name}\x12~\n" + + "\x12ExtendPoolCapacity\x12\".gateway.ExtendPoolCapacityRequest\x1a#.gateway.ExtendPoolCapacityResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/pools/{name}/extend\x12\x8b\x01\n" + + "\x13CreatePoolJoinToken\x12#.gateway.CreatePoolJoinTokenRequest\x1a$.gateway.CreatePoolJoinTokenResponse\")\x82\xd3\xe4\x93\x02#:\x01*\"\x1e/pools/{pool_name}/join-tokens\x12\x86\x01\n" + + "\x13RevokePoolJoinToken\x12#.gateway.RevokePoolJoinTokenRequest\x1a$.gateway.RevokePoolJoinTokenResponse\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/pools/join-tokens/revoke\x12\x89\x01\n" + + "\x12GetPoolJoinCommand\x12\".gateway.GetPoolJoinCommandRequest\x1a#.gateway.GetPoolJoinCommandResponse\"*\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/pools/{pool_name}/join-command\x12|\n" + + "\x10ListPoolMachines\x12 .gateway.ListPoolMachinesRequest\x1a!.gateway.ListPoolMachinesResponse\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/pools/{pool_name}/machines\x12\xac\x01\n" + + "\x15DownloadMachineSSHKey\x12%.gateway.DownloadMachineSSHKeyRequest\x1a&.gateway.DownloadMachineSSHKeyResponse\"D\x82\xd3\xe4\x93\x02>:\x01*\"9/pools/{pool_name}/machines/{machine_id}/ssh/key:download\x12\xa4\x01\n" + + "\x13RotateMachineSSHKey\x12#.gateway.RotateMachineSSHKeyRequest\x1a$.gateway.RotateMachineSSHKeyResponse\"B\x82\xd3\xe4\x93\x02<:\x01*\"7/pools/{pool_name}/machines/{machine_id}/ssh/key:rotate\x12\xac\x01\n" + + "\x15ActivateMachineSSHKey\x12%.gateway.ActivateMachineSSHKeyRequest\x1a&.gateway.ActivateMachineSSHKeyResponse\"D\x82\xd3\xe4\x93\x02>:\x01*\"9/pools/{pool_name}/machines/{machine_id}/ssh/key:activate\x12Z\n" + + "\tJoinAgent\x12\x19.gateway.JoinAgentRequest\x1a\x1a.gateway.JoinAgentResponse\"\x16\x82\xd3\xe4\x93\x02\x10:\x01*\"\v/agent/join\x12\xac\x01\n" + + "\x1fRequestAgentTransportCredential\x12/.gateway.RequestAgentTransportCredentialRequest\x1a0.gateway.RequestAgentTransportCredentialResponse\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/agent/transport-credential\x12c\n" + + "\x14CreateNodeEnrollment\x12$.gateway.CreateNodeEnrollmentRequest\x1a%.gateway.CreateNodeEnrollmentResponse\x12c\n" + + "\x14DeleteNodeEnrollment\x12$.gateway.DeleteNodeEnrollmentRequest\x1a%.gateway.DeleteNodeEnrollmentResponse\x12s\n" + + "\x0fListAgentRoutes\x12\x1f.gateway.ListAgentRoutesRequest\x1a .gateway.ListAgentRoutesResponse\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/agent/routes:list\x12\x8a\x01\n" + + "\x16UpdateAgentRouteStatus\x12&.gateway.UpdateAgentRouteStatusRequest\x1a'.gateway.UpdateAgentRouteStatusResponse\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/agent/routes/status\x12\x81\x01\n" + + "\x14UpdateAgentSSHStatus\x12$.gateway.UpdateAgentSSHStatusRequest\x1a%.gateway.UpdateAgentSSHStatusResponse\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/agent/ssh/status\x12\x8c\x01\n" + + "\x17UpdateAgentAvailability\x12'.gateway.UpdateAgentAvailabilityRequest\x1a(.gateway.UpdateAgentAvailabilityResponse\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/agent/availability\x12J\n" + + "\vStreamAgent\x12\x1b.gateway.StreamAgentRequest\x1a\x1c.gateway.StreamAgentResponse0\x01\x12Y\n" + + "\x14StreamAgentTelemetry\x12\x1e.gateway.AgentTelemetryRequest\x1a\x1f.gateway.AgentTelemetryResponse(\x01\x12^\n" + + "\fListMachines\x12\x1c.gateway.ListMachinesRequest\x1a\x1d.gateway.ListMachinesResponse\"\x11\x82\xd3\xe4\x93\x02\v\x12\t/machines\x12d\n" + + "\rCreateMachine\x12\x1d.gateway.CreateMachineRequest\x1a\x1e.gateway.CreateMachineResponse\"\x14\x82\xd3\xe4\x93\x02\x0e:\x01*\"\t/machines\x12n\n" + + "\rDeleteMachine\x12\x1d.gateway.DeleteMachineRequest\x1a\x1e.gateway.DeleteMachineResponse\"\x1e\x82\xd3\xe4\x93\x02\x18*\x16/machines/{machine_id}\x12V\n" + + "\n" + + "ListTokens\x12\x1a.gateway.ListTokensRequest\x1a\x1b.gateway.ListTokensResponse\"\x0f\x82\xd3\xe4\x93\x02\t\x12\a/tokens\x12Y\n" + + "\vCreateToken\x12\x1b.gateway.CreateTokenRequest\x1a\x1c.gateway.CreateTokenResponse\"\x0f\x82\xd3\xe4\x93\x02\t\"\a/tokens\x12k\n" + + "\vToggleToken\x12\x1b.gateway.ToggleTokenRequest\x1a\x1c.gateway.ToggleTokenResponse\"!\x82\xd3\xe4\x93\x02\x1b\"\x19/tokens/{token_id}/toggle\x12d\n" + + "\vDeleteToken\x12\x1b.gateway.DeleteTokenRequest\x1a\x1c.gateway.DeleteTokenResponse\"\x1a\x82\xd3\xe4\x93\x02\x14*\x12/tokens/{token_id}\x12Z\n" + + "\vListWorkers\x12\x1b.gateway.ListWorkersRequest\x1a\x1c.gateway.ListWorkersResponse\"\x10\x82\xd3\xe4\x93\x02\n" + + "\x12\b/workers\x12p\n" + + "\fCordonWorker\x12\x1c.gateway.CordonWorkerRequest\x1a\x1d.gateway.CordonWorkerResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/workers/{worker_id}/cordon\x12x\n" + + "\x0eUncordonWorker\x12\x1e.gateway.UncordonWorkerRequest\x1a\x1f.gateway.UncordonWorkerResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1d/workers/{worker_id}/uncordon\x12l\n" + + "\vDrainWorker\x12\x1b.gateway.DrainWorkerRequest\x1a\x1c.gateway.DrainWorkerResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x1a/workers/{worker_id}/drain\x12\x81\x01\n" + + "\x15ExportWorkspaceConfig\x12%.gateway.ExportWorkspaceConfigRequest\x1a&.gateway.ExportWorkspaceConfigResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/workspace/configB#Z!github.com/beam-cloud/beta9/protob\x06proto3" var ( file_gateway_proto_rawDescOnce sync.Once - file_gateway_proto_rawDescData = file_gateway_proto_rawDesc + file_gateway_proto_rawDescData []byte ) func file_gateway_proto_rawDescGZIP() []byte { file_gateway_proto_rawDescOnce.Do(func() { - file_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(file_gateway_proto_rawDescData) + file_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_gateway_proto_rawDesc), len(file_gateway_proto_rawDesc))) }) return file_gateway_proto_rawDescData } var file_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 198) -var file_gateway_proto_goTypes = []interface{}{ +var file_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 202) +var file_gateway_proto_goTypes = []any{ (SyncContainerWorkspaceOperation)(0), // 0: gateway.SyncContainerWorkspaceOperation (*AuthorizeRequest)(nil), // 1: gateway.AuthorizeRequest (*AuthorizeResponse)(nil), // 2: gateway.AuthorizeResponse @@ -17457,132 +15745,136 @@ var file_gateway_proto_goTypes = []interface{}{ (*AgentRoute)(nil), // 129: gateway.AgentRoute (*RequestAgentTransportCredentialRequest)(nil), // 130: gateway.RequestAgentTransportCredentialRequest (*RequestAgentTransportCredentialResponse)(nil), // 131: gateway.RequestAgentTransportCredentialResponse - (*ListAgentRoutesRequest)(nil), // 132: gateway.ListAgentRoutesRequest - (*ListAgentRoutesResponse)(nil), // 133: gateway.ListAgentRoutesResponse - (*UpdateAgentRouteStatusRequest)(nil), // 134: gateway.UpdateAgentRouteStatusRequest - (*UpdateAgentRouteStatusResponse)(nil), // 135: gateway.UpdateAgentRouteStatusResponse - (*AgentWorkerSlot)(nil), // 136: gateway.AgentWorkerSlot - (*StreamAgentRequest)(nil), // 137: gateway.StreamAgentRequest - (*StreamAgentResponse)(nil), // 138: gateway.StreamAgentResponse - (*AgentLogRecord)(nil), // 139: gateway.AgentLogRecord - (*AgentMetricSnapshot)(nil), // 140: gateway.AgentMetricSnapshot - (*AgentEventRecord)(nil), // 141: gateway.AgentEventRecord - (*AgentTelemetryRequest)(nil), // 142: gateway.AgentTelemetryRequest - (*AgentTelemetryResponse)(nil), // 143: gateway.AgentTelemetryResponse - (*Machine)(nil), // 144: gateway.Machine - (*MachineMetrics)(nil), // 145: gateway.MachineMetrics - (*MachinePathMetrics)(nil), // 146: gateway.MachinePathMetrics - (*ListMachinesRequest)(nil), // 147: gateway.ListMachinesRequest - (*ListMachinesResponse)(nil), // 148: gateway.ListMachinesResponse - (*CreateMachineRequest)(nil), // 149: gateway.CreateMachineRequest - (*CreateMachineResponse)(nil), // 150: gateway.CreateMachineResponse - (*DeleteMachineRequest)(nil), // 151: gateway.DeleteMachineRequest - (*DeleteMachineResponse)(nil), // 152: gateway.DeleteMachineResponse - (*Token)(nil), // 153: gateway.Token - (*ListTokensRequest)(nil), // 154: gateway.ListTokensRequest - (*ListTokensResponse)(nil), // 155: gateway.ListTokensResponse - (*CreateTokenRequest)(nil), // 156: gateway.CreateTokenRequest - (*CreateTokenResponse)(nil), // 157: gateway.CreateTokenResponse - (*ToggleTokenRequest)(nil), // 158: gateway.ToggleTokenRequest - (*ToggleTokenResponse)(nil), // 159: gateway.ToggleTokenResponse - (*DeleteTokenRequest)(nil), // 160: gateway.DeleteTokenRequest - (*DeleteTokenResponse)(nil), // 161: gateway.DeleteTokenResponse - (*GetURLRequest)(nil), // 162: gateway.GetURLRequest - (*GetURLResponse)(nil), // 163: gateway.GetURLResponse - (*ListWorkersRequest)(nil), // 164: gateway.ListWorkersRequest - (*ListWorkersResponse)(nil), // 165: gateway.ListWorkersResponse - (*CordonWorkerRequest)(nil), // 166: gateway.CordonWorkerRequest - (*CordonWorkerResponse)(nil), // 167: gateway.CordonWorkerResponse - (*UncordonWorkerRequest)(nil), // 168: gateway.UncordonWorkerRequest - (*UncordonWorkerResponse)(nil), // 169: gateway.UncordonWorkerResponse - (*DrainWorkerRequest)(nil), // 170: gateway.DrainWorkerRequest - (*DrainWorkerResponse)(nil), // 171: gateway.DrainWorkerResponse - (*ExportWorkspaceConfigRequest)(nil), // 172: gateway.ExportWorkspaceConfigRequest - (*ExportWorkspaceConfigResponse)(nil), // 173: gateway.ExportWorkspaceConfigResponse - (*UpdateAgentAvailabilityRequest)(nil), // 174: gateway.UpdateAgentAvailabilityRequest - (*UpdateAgentAvailabilityResponse)(nil), // 175: gateway.UpdateAgentAvailabilityResponse - (*DownloadMachineSSHKeyRequest)(nil), // 176: gateway.DownloadMachineSSHKeyRequest - (*DownloadMachineSSHKeyResponse)(nil), // 177: gateway.DownloadMachineSSHKeyResponse - (*RotateMachineSSHKeyRequest)(nil), // 178: gateway.RotateMachineSSHKeyRequest - (*RotateMachineSSHKeyResponse)(nil), // 179: gateway.RotateMachineSSHKeyResponse - (*ActivateMachineSSHKeyRequest)(nil), // 180: gateway.ActivateMachineSSHKeyRequest - (*ActivateMachineSSHKeyResponse)(nil), // 181: gateway.ActivateMachineSSHKeyResponse - (*AgentSSHConfig)(nil), // 182: gateway.AgentSSHConfig - (*UpdateAgentSSHStatusRequest)(nil), // 183: gateway.UpdateAgentSSHStatusRequest - (*UpdateAgentSSHStatusResponse)(nil), // 184: gateway.UpdateAgentSSHStatusResponse - (*MachineSSHAccess)(nil), // 185: gateway.MachineSSHAccess - (*AgentPoolCacheDiskConfig)(nil), // 186: gateway.AgentPoolCacheDiskConfig - (*AgentPoolCacheConfig)(nil), // 187: gateway.AgentPoolCacheConfig - (*AgentPoolRuntimeConfig)(nil), // 188: gateway.AgentPoolRuntimeConfig - nil, // 189: gateway.CreateObjectResponse.PutHeadersEntry - nil, // 190: gateway.ListTasksRequest.FiltersEntry - nil, // 191: gateway.Schema.FieldsEntry - nil, // 192: gateway.ListDeploymentsRequest.FiltersEntry - nil, // 193: gateway.ListPoolsRequest.FiltersEntry - nil, // 194: gateway.ListPrivatePoolsRequest.FiltersEntry - nil, // 195: gateway.UpdateAgentRouteStatusRequest.AttrsEntry - nil, // 196: gateway.AgentEventRecord.AttrsEntry - nil, // 197: gateway.ListMachinesResponse.GpusEntry - nil, // 198: gateway.ListMachinesResponse.SupportedGpusEntry - (*Container)(nil), // 199: types.Container - (*timestamppb.Timestamp)(nil), // 200: google.protobuf.Timestamp - (*MountPointConfig)(nil), // 201: types.MountPointConfig - (*PricingPolicy)(nil), // 202: types.PricingPolicy - (*CheckpointTrigger)(nil), // 203: types.CheckpointTrigger - (*WorkerPoolState)(nil), // 204: types.WorkerPoolState - (*Worker)(nil), // 205: types.Worker + (*CreateNodeEnrollmentRequest)(nil), // 132: gateway.CreateNodeEnrollmentRequest + (*CreateNodeEnrollmentResponse)(nil), // 133: gateway.CreateNodeEnrollmentResponse + (*DeleteNodeEnrollmentRequest)(nil), // 134: gateway.DeleteNodeEnrollmentRequest + (*DeleteNodeEnrollmentResponse)(nil), // 135: gateway.DeleteNodeEnrollmentResponse + (*ListAgentRoutesRequest)(nil), // 136: gateway.ListAgentRoutesRequest + (*ListAgentRoutesResponse)(nil), // 137: gateway.ListAgentRoutesResponse + (*UpdateAgentRouteStatusRequest)(nil), // 138: gateway.UpdateAgentRouteStatusRequest + (*UpdateAgentRouteStatusResponse)(nil), // 139: gateway.UpdateAgentRouteStatusResponse + (*AgentWorkerSlot)(nil), // 140: gateway.AgentWorkerSlot + (*StreamAgentRequest)(nil), // 141: gateway.StreamAgentRequest + (*StreamAgentResponse)(nil), // 142: gateway.StreamAgentResponse + (*AgentLogRecord)(nil), // 143: gateway.AgentLogRecord + (*AgentMetricSnapshot)(nil), // 144: gateway.AgentMetricSnapshot + (*AgentEventRecord)(nil), // 145: gateway.AgentEventRecord + (*AgentTelemetryRequest)(nil), // 146: gateway.AgentTelemetryRequest + (*AgentTelemetryResponse)(nil), // 147: gateway.AgentTelemetryResponse + (*Machine)(nil), // 148: gateway.Machine + (*MachineMetrics)(nil), // 149: gateway.MachineMetrics + (*MachinePathMetrics)(nil), // 150: gateway.MachinePathMetrics + (*ListMachinesRequest)(nil), // 151: gateway.ListMachinesRequest + (*ListMachinesResponse)(nil), // 152: gateway.ListMachinesResponse + (*CreateMachineRequest)(nil), // 153: gateway.CreateMachineRequest + (*CreateMachineResponse)(nil), // 154: gateway.CreateMachineResponse + (*DeleteMachineRequest)(nil), // 155: gateway.DeleteMachineRequest + (*DeleteMachineResponse)(nil), // 156: gateway.DeleteMachineResponse + (*Token)(nil), // 157: gateway.Token + (*ListTokensRequest)(nil), // 158: gateway.ListTokensRequest + (*ListTokensResponse)(nil), // 159: gateway.ListTokensResponse + (*CreateTokenRequest)(nil), // 160: gateway.CreateTokenRequest + (*CreateTokenResponse)(nil), // 161: gateway.CreateTokenResponse + (*ToggleTokenRequest)(nil), // 162: gateway.ToggleTokenRequest + (*ToggleTokenResponse)(nil), // 163: gateway.ToggleTokenResponse + (*DeleteTokenRequest)(nil), // 164: gateway.DeleteTokenRequest + (*DeleteTokenResponse)(nil), // 165: gateway.DeleteTokenResponse + (*GetURLRequest)(nil), // 166: gateway.GetURLRequest + (*GetURLResponse)(nil), // 167: gateway.GetURLResponse + (*ListWorkersRequest)(nil), // 168: gateway.ListWorkersRequest + (*ListWorkersResponse)(nil), // 169: gateway.ListWorkersResponse + (*CordonWorkerRequest)(nil), // 170: gateway.CordonWorkerRequest + (*CordonWorkerResponse)(nil), // 171: gateway.CordonWorkerResponse + (*UncordonWorkerRequest)(nil), // 172: gateway.UncordonWorkerRequest + (*UncordonWorkerResponse)(nil), // 173: gateway.UncordonWorkerResponse + (*DrainWorkerRequest)(nil), // 174: gateway.DrainWorkerRequest + (*DrainWorkerResponse)(nil), // 175: gateway.DrainWorkerResponse + (*ExportWorkspaceConfigRequest)(nil), // 176: gateway.ExportWorkspaceConfigRequest + (*ExportWorkspaceConfigResponse)(nil), // 177: gateway.ExportWorkspaceConfigResponse + (*UpdateAgentAvailabilityRequest)(nil), // 178: gateway.UpdateAgentAvailabilityRequest + (*UpdateAgentAvailabilityResponse)(nil), // 179: gateway.UpdateAgentAvailabilityResponse + (*DownloadMachineSSHKeyRequest)(nil), // 180: gateway.DownloadMachineSSHKeyRequest + (*DownloadMachineSSHKeyResponse)(nil), // 181: gateway.DownloadMachineSSHKeyResponse + (*RotateMachineSSHKeyRequest)(nil), // 182: gateway.RotateMachineSSHKeyRequest + (*RotateMachineSSHKeyResponse)(nil), // 183: gateway.RotateMachineSSHKeyResponse + (*ActivateMachineSSHKeyRequest)(nil), // 184: gateway.ActivateMachineSSHKeyRequest + (*ActivateMachineSSHKeyResponse)(nil), // 185: gateway.ActivateMachineSSHKeyResponse + (*AgentSSHConfig)(nil), // 186: gateway.AgentSSHConfig + (*UpdateAgentSSHStatusRequest)(nil), // 187: gateway.UpdateAgentSSHStatusRequest + (*UpdateAgentSSHStatusResponse)(nil), // 188: gateway.UpdateAgentSSHStatusResponse + (*MachineSSHAccess)(nil), // 189: gateway.MachineSSHAccess + (*AgentPoolCacheDiskConfig)(nil), // 190: gateway.AgentPoolCacheDiskConfig + (*AgentPoolCacheConfig)(nil), // 191: gateway.AgentPoolCacheConfig + (*AgentPoolRuntimeConfig)(nil), // 192: gateway.AgentPoolRuntimeConfig + nil, // 193: gateway.CreateObjectResponse.PutHeadersEntry + nil, // 194: gateway.ListTasksRequest.FiltersEntry + nil, // 195: gateway.Schema.FieldsEntry + nil, // 196: gateway.ListDeploymentsRequest.FiltersEntry + nil, // 197: gateway.ListPoolsRequest.FiltersEntry + nil, // 198: gateway.ListPrivatePoolsRequest.FiltersEntry + nil, // 199: gateway.UpdateAgentRouteStatusRequest.AttrsEntry + nil, // 200: gateway.AgentEventRecord.AttrsEntry + nil, // 201: gateway.ListMachinesResponse.GpusEntry + nil, // 202: gateway.ListMachinesResponse.SupportedGpusEntry + (*Container)(nil), // 203: types.Container + (*timestamppb.Timestamp)(nil), // 204: google.protobuf.Timestamp + (*MountPointConfig)(nil), // 205: types.MountPointConfig + (*PricingPolicy)(nil), // 206: types.PricingPolicy + (*CheckpointTrigger)(nil), // 207: types.CheckpointTrigger + (*WorkerPoolState)(nil), // 208: types.WorkerPoolState + (*Worker)(nil), // 209: types.Worker } var file_gateway_proto_depIdxs = []int32{ 5, // 0: gateway.HeadObjectResponse.object_metadata:type_name -> gateway.ObjectMetadata 5, // 1: gateway.CreateObjectRequest.object_metadata:type_name -> gateway.ObjectMetadata - 189, // 2: gateway.CreateObjectResponse.put_headers:type_name -> gateway.CreateObjectResponse.PutHeadersEntry + 193, // 2: gateway.CreateObjectResponse.put_headers:type_name -> gateway.CreateObjectResponse.PutHeadersEntry 5, // 3: gateway.PutObjectRequest.object_metadata:type_name -> gateway.ObjectMetadata 0, // 4: gateway.SyncContainerWorkspaceRequest.op:type_name -> gateway.SyncContainerWorkspaceOperation - 199, // 5: gateway.ListContainersResponse.containers:type_name -> types.Container + 203, // 5: gateway.ListContainersResponse.containers:type_name -> types.Container 21, // 6: gateway.ContainerStreamMessage.attach_request:type_name -> gateway.AttachToContainerRequest 12, // 7: gateway.ContainerStreamMessage.sync_container_workspace:type_name -> gateway.SyncContainerWorkspaceRequest - 190, // 8: gateway.ListTasksRequest.filters:type_name -> gateway.ListTasksRequest.FiltersEntry - 200, // 9: gateway.Task.started_at:type_name -> google.protobuf.Timestamp - 200, // 10: gateway.Task.ended_at:type_name -> google.protobuf.Timestamp - 200, // 11: gateway.Task.created_at:type_name -> google.protobuf.Timestamp - 200, // 12: gateway.Task.updated_at:type_name -> google.protobuf.Timestamp + 194, // 8: gateway.ListTasksRequest.filters:type_name -> gateway.ListTasksRequest.FiltersEntry + 204, // 9: gateway.Task.started_at:type_name -> google.protobuf.Timestamp + 204, // 10: gateway.Task.ended_at:type_name -> google.protobuf.Timestamp + 204, // 11: gateway.Task.created_at:type_name -> google.protobuf.Timestamp + 204, // 12: gateway.Task.updated_at:type_name -> google.protobuf.Timestamp 29, // 13: gateway.ListTasksResponse.tasks:type_name -> gateway.Task - 201, // 14: gateway.Volume.config:type_name -> types.MountPointConfig + 205, // 14: gateway.Volume.config:type_name -> types.MountPointConfig 36, // 15: gateway.ServingConfig.llm:type_name -> gateway.LLMConfig 37, // 16: gateway.ServingConfig.database:type_name -> gateway.DatabaseServingConfig - 191, // 17: gateway.Schema.fields:type_name -> gateway.Schema.FieldsEntry + 195, // 17: gateway.Schema.fields:type_name -> gateway.Schema.FieldsEntry 41, // 18: gateway.SchemaField.fields:type_name -> gateway.Schema 33, // 19: gateway.GetOrCreateStubRequest.volumes:type_name -> gateway.Volume 34, // 20: gateway.GetOrCreateStubRequest.secrets:type_name -> gateway.SecretVar 35, // 21: gateway.GetOrCreateStubRequest.autoscaler:type_name -> gateway.Autoscaler 40, // 22: gateway.GetOrCreateStubRequest.task_policy:type_name -> gateway.TaskPolicy - 202, // 23: gateway.GetOrCreateStubRequest.pricing:type_name -> types.PricingPolicy + 206, // 23: gateway.GetOrCreateStubRequest.pricing:type_name -> types.PricingPolicy 41, // 24: gateway.GetOrCreateStubRequest.inputs:type_name -> gateway.Schema 41, // 25: gateway.GetOrCreateStubRequest.outputs:type_name -> gateway.Schema 61, // 26: gateway.GetOrCreateStubRequest.pool:type_name -> gateway.PoolConfig 38, // 27: gateway.GetOrCreateStubRequest.serving:type_name -> gateway.ServingConfig 39, // 28: gateway.GetOrCreateStubRequest.disks:type_name -> gateway.DurableDisk - 203, // 29: gateway.GetOrCreateStubRequest.checkpoint_trigger:type_name -> types.CheckpointTrigger - 200, // 30: gateway.Deployment.created_at:type_name -> google.protobuf.Timestamp - 200, // 31: gateway.Deployment.updated_at:type_name -> google.protobuf.Timestamp - 192, // 32: gateway.ListDeploymentsRequest.filters:type_name -> gateway.ListDeploymentsRequest.FiltersEntry + 207, // 29: gateway.GetOrCreateStubRequest.checkpoint_trigger:type_name -> types.CheckpointTrigger + 204, // 30: gateway.Deployment.created_at:type_name -> google.protobuf.Timestamp + 204, // 31: gateway.Deployment.updated_at:type_name -> google.protobuf.Timestamp + 196, // 32: gateway.ListDeploymentsRequest.filters:type_name -> gateway.ListDeploymentsRequest.FiltersEntry 47, // 33: gateway.ListDeploymentsResponse.deployments:type_name -> gateway.Deployment - 204, // 34: gateway.Pool.state:type_name -> types.WorkerPoolState - 193, // 35: gateway.ListPoolsRequest.filters:type_name -> gateway.ListPoolsRequest.FiltersEntry + 208, // 34: gateway.Pool.state:type_name -> types.WorkerPoolState + 197, // 35: gateway.ListPoolsRequest.filters:type_name -> gateway.ListPoolsRequest.FiltersEntry 58, // 36: gateway.ListPoolsResponse.pools:type_name -> gateway.Pool - 200, // 37: gateway.ProviderInstance.created_at:type_name -> google.protobuf.Timestamp - 200, // 38: gateway.ProviderInstance.expires_at:type_name -> google.protobuf.Timestamp - 200, // 39: gateway.ProviderInstance.billing_renewal_at:type_name -> google.protobuf.Timestamp + 204, // 37: gateway.ProviderInstance.created_at:type_name -> google.protobuf.Timestamp + 204, // 38: gateway.ProviderInstance.expires_at:type_name -> google.protobuf.Timestamp + 204, // 39: gateway.ProviderInstance.billing_renewal_at:type_name -> google.protobuf.Timestamp 61, // 40: gateway.PrivatePool.config:type_name -> gateway.PoolConfig 63, // 41: gateway.PrivatePool.reservations:type_name -> gateway.ProviderInstance - 200, // 42: gateway.PrivatePool.created_at:type_name -> google.protobuf.Timestamp - 200, // 43: gateway.PrivatePool.expires_at:type_name -> google.protobuf.Timestamp + 204, // 42: gateway.PrivatePool.created_at:type_name -> google.protobuf.Timestamp + 204, // 43: gateway.PrivatePool.expires_at:type_name -> google.protobuf.Timestamp 73, // 44: gateway.PrivatePool.byoc:type_name -> gateway.BYOCPoolState 61, // 45: gateway.ListPoolOffersRequest.pool:type_name -> gateway.PoolConfig 62, // 46: gateway.ListPoolOffersResponse.offers:type_name -> gateway.PoolOffer 61, // 47: gateway.LaunchPoolCapacityRequest.pool:type_name -> gateway.PoolConfig 64, // 48: gateway.LaunchPoolCapacityResponse.pool:type_name -> gateway.PrivatePool - 194, // 49: gateway.ListPrivatePoolsRequest.filters:type_name -> gateway.ListPrivatePoolsRequest.FiltersEntry + 198, // 49: gateway.ListPrivatePoolsRequest.filters:type_name -> gateway.ListPrivatePoolsRequest.FiltersEntry 64, // 50: gateway.ListPrivatePoolsResponse.pools:type_name -> gateway.PrivatePool 64, // 51: gateway.CreateBYOCPoolResponse.pool:type_name -> gateway.PrivatePool 73, // 52: gateway.CreateBYOCPoolResponse.byoc:type_name -> gateway.BYOCPoolState @@ -17590,26 +15882,26 @@ var file_gateway_proto_depIdxs = []int32{ 73, // 54: gateway.GetBYOCPoolResponse.byoc:type_name -> gateway.BYOCPoolState 64, // 55: gateway.ScaleBYOCPoolResponse.pool:type_name -> gateway.PrivatePool 73, // 56: gateway.ScaleBYOCPoolResponse.byoc:type_name -> gateway.BYOCPoolState - 200, // 57: gateway.MarketplaceListing.created_at:type_name -> google.protobuf.Timestamp - 200, // 58: gateway.MarketplaceListing.updated_at:type_name -> google.protobuf.Timestamp - 200, // 59: gateway.MarketplaceOffer.created_at:type_name -> google.protobuf.Timestamp + 204, // 57: gateway.MarketplaceListing.created_at:type_name -> google.protobuf.Timestamp + 204, // 58: gateway.MarketplaceListing.updated_at:type_name -> google.protobuf.Timestamp + 204, // 59: gateway.MarketplaceOffer.created_at:type_name -> google.protobuf.Timestamp 78, // 60: gateway.CreateMarketplaceListingResponse.listing:type_name -> gateway.MarketplaceListing 78, // 61: gateway.UpdateMarketplaceListingResponse.listing:type_name -> gateway.MarketplaceListing 78, // 62: gateway.ListMarketplaceListingsResponse.listings:type_name -> gateway.MarketplaceListing - 200, // 63: gateway.GetMarketplaceJoinCommandResponse.expires_at:type_name -> google.protobuf.Timestamp + 204, // 63: gateway.GetMarketplaceJoinCommandResponse.expires_at:type_name -> google.protobuf.Timestamp 79, // 64: gateway.ListMarketplaceOffersResponse.offers:type_name -> gateway.MarketplaceOffer 79, // 65: gateway.GetMarketplaceOfferResponse.offer:type_name -> gateway.MarketplaceOffer - 200, // 66: gateway.MarketplaceRental.created_at:type_name -> google.protobuf.Timestamp + 204, // 66: gateway.MarketplaceRental.created_at:type_name -> google.protobuf.Timestamp 94, // 67: gateway.CreateMarketplaceRentalResponse.rental:type_name -> gateway.MarketplaceRental 94, // 68: gateway.ListMarketplaceRentalsResponse.rentals:type_name -> gateway.MarketplaceRental - 144, // 69: gateway.ListMarketplaceMachinesResponse.machines:type_name -> gateway.Machine + 148, // 69: gateway.ListMarketplaceMachinesResponse.machines:type_name -> gateway.Machine 106, // 70: gateway.ListMachineContainersResponse.containers:type_name -> gateway.MachineContainer 61, // 71: gateway.CreatePoolRequest.pool:type_name -> gateway.PoolConfig 64, // 72: gateway.CreatePoolResponse.pool:type_name -> gateway.PrivatePool 64, // 73: gateway.ExtendPoolCapacityResponse.pool:type_name -> gateway.PrivatePool - 200, // 74: gateway.CreatePoolJoinTokenResponse.expires_at:type_name -> google.protobuf.Timestamp - 200, // 75: gateway.GetPoolJoinCommandResponse.expires_at:type_name -> google.protobuf.Timestamp - 144, // 76: gateway.ListPoolMachinesResponse.machines:type_name -> gateway.Machine + 204, // 74: gateway.CreatePoolJoinTokenResponse.expires_at:type_name -> google.protobuf.Timestamp + 204, // 75: gateway.GetPoolJoinCommandResponse.expires_at:type_name -> google.protobuf.Timestamp + 148, // 76: gateway.ListPoolMachinesResponse.machines:type_name -> gateway.Machine 124, // 77: gateway.AgentBootstrapConfig.telemetry:type_name -> gateway.AgentTelemetryConfig 123, // 78: gateway.AgentBootstrapConfig.billing:type_name -> gateway.AgentBillingConfig 125, // 79: gateway.AgentTelemetryConfig.logs:type_name -> gateway.AgentTelemetrySinkConfig @@ -17617,34 +15909,34 @@ var file_gateway_proto_depIdxs = []int32{ 128, // 81: gateway.JoinAgentRequest.preflight:type_name -> gateway.AgentPreflightCheck 122, // 82: gateway.JoinAgentResponse.bootstrap:type_name -> gateway.AgentBootstrapConfig 129, // 83: gateway.ListAgentRoutesResponse.routes:type_name -> gateway.AgentRoute - 195, // 84: gateway.UpdateAgentRouteStatusRequest.attrs:type_name -> gateway.UpdateAgentRouteStatusRequest.AttrsEntry - 188, // 85: gateway.AgentWorkerSlot.pool_config:type_name -> gateway.AgentPoolRuntimeConfig + 199, // 84: gateway.UpdateAgentRouteStatusRequest.attrs:type_name -> gateway.UpdateAgentRouteStatusRequest.AttrsEntry + 192, // 85: gateway.AgentWorkerSlot.pool_config:type_name -> gateway.AgentPoolRuntimeConfig 129, // 86: gateway.StreamAgentResponse.routes:type_name -> gateway.AgentRoute - 136, // 87: gateway.StreamAgentResponse.slots:type_name -> gateway.AgentWorkerSlot - 182, // 88: gateway.StreamAgentResponse.ssh:type_name -> gateway.AgentSSHConfig - 146, // 89: gateway.AgentMetricSnapshot.path_metrics:type_name -> gateway.MachinePathMetrics - 196, // 90: gateway.AgentEventRecord.attrs:type_name -> gateway.AgentEventRecord.AttrsEntry - 139, // 91: gateway.AgentTelemetryRequest.logs:type_name -> gateway.AgentLogRecord - 140, // 92: gateway.AgentTelemetryRequest.metrics:type_name -> gateway.AgentMetricSnapshot - 141, // 93: gateway.AgentTelemetryRequest.events:type_name -> gateway.AgentEventRecord - 145, // 94: gateway.Machine.machine_metrics:type_name -> gateway.MachineMetrics - 185, // 95: gateway.Machine.ssh:type_name -> gateway.MachineSSHAccess - 146, // 96: gateway.MachineMetrics.path_metrics:type_name -> gateway.MachinePathMetrics - 144, // 97: gateway.ListMachinesResponse.machines:type_name -> gateway.Machine - 197, // 98: gateway.ListMachinesResponse.gpus:type_name -> gateway.ListMachinesResponse.GpusEntry - 198, // 99: gateway.ListMachinesResponse.supported_gpus:type_name -> gateway.ListMachinesResponse.SupportedGpusEntry - 144, // 100: gateway.CreateMachineResponse.machine:type_name -> gateway.Machine - 200, // 101: gateway.Token.created_at:type_name -> google.protobuf.Timestamp - 200, // 102: gateway.Token.updated_at:type_name -> google.protobuf.Timestamp - 153, // 103: gateway.ListTokensResponse.tokens:type_name -> gateway.Token - 153, // 104: gateway.CreateTokenResponse.token:type_name -> gateway.Token - 153, // 105: gateway.ToggleTokenResponse.token:type_name -> gateway.Token - 205, // 106: gateway.ListWorkersResponse.workers:type_name -> types.Worker - 185, // 107: gateway.RotateMachineSSHKeyResponse.ssh:type_name -> gateway.MachineSSHAccess - 185, // 108: gateway.ActivateMachineSSHKeyResponse.ssh:type_name -> gateway.MachineSSHAccess - 200, // 109: gateway.MachineSSHAccess.updated_at:type_name -> google.protobuf.Timestamp - 186, // 110: gateway.AgentPoolCacheConfig.disk:type_name -> gateway.AgentPoolCacheDiskConfig - 187, // 111: gateway.AgentPoolRuntimeConfig.cache:type_name -> gateway.AgentPoolCacheConfig + 140, // 87: gateway.StreamAgentResponse.slots:type_name -> gateway.AgentWorkerSlot + 186, // 88: gateway.StreamAgentResponse.ssh:type_name -> gateway.AgentSSHConfig + 150, // 89: gateway.AgentMetricSnapshot.path_metrics:type_name -> gateway.MachinePathMetrics + 200, // 90: gateway.AgentEventRecord.attrs:type_name -> gateway.AgentEventRecord.AttrsEntry + 143, // 91: gateway.AgentTelemetryRequest.logs:type_name -> gateway.AgentLogRecord + 144, // 92: gateway.AgentTelemetryRequest.metrics:type_name -> gateway.AgentMetricSnapshot + 145, // 93: gateway.AgentTelemetryRequest.events:type_name -> gateway.AgentEventRecord + 149, // 94: gateway.Machine.machine_metrics:type_name -> gateway.MachineMetrics + 189, // 95: gateway.Machine.ssh:type_name -> gateway.MachineSSHAccess + 150, // 96: gateway.MachineMetrics.path_metrics:type_name -> gateway.MachinePathMetrics + 148, // 97: gateway.ListMachinesResponse.machines:type_name -> gateway.Machine + 201, // 98: gateway.ListMachinesResponse.gpus:type_name -> gateway.ListMachinesResponse.GpusEntry + 202, // 99: gateway.ListMachinesResponse.supported_gpus:type_name -> gateway.ListMachinesResponse.SupportedGpusEntry + 148, // 100: gateway.CreateMachineResponse.machine:type_name -> gateway.Machine + 204, // 101: gateway.Token.created_at:type_name -> google.protobuf.Timestamp + 204, // 102: gateway.Token.updated_at:type_name -> google.protobuf.Timestamp + 157, // 103: gateway.ListTokensResponse.tokens:type_name -> gateway.Token + 157, // 104: gateway.CreateTokenResponse.token:type_name -> gateway.Token + 157, // 105: gateway.ToggleTokenResponse.token:type_name -> gateway.Token + 209, // 106: gateway.ListWorkersResponse.workers:type_name -> types.Worker + 189, // 107: gateway.RotateMachineSSHKeyResponse.ssh:type_name -> gateway.MachineSSHAccess + 189, // 108: gateway.ActivateMachineSSHKeyResponse.ssh:type_name -> gateway.MachineSSHAccess + 204, // 109: gateway.MachineSSHAccess.updated_at:type_name -> google.protobuf.Timestamp + 190, // 110: gateway.AgentPoolCacheConfig.disk:type_name -> gateway.AgentPoolCacheDiskConfig + 191, // 111: gateway.AgentPoolRuntimeConfig.cache:type_name -> gateway.AgentPoolCacheConfig 27, // 112: gateway.ListTasksRequest.FiltersEntry.value:type_name -> gateway.StringList 42, // 113: gateway.Schema.FieldsEntry.value:type_name -> gateway.SchemaField 27, // 114: gateway.ListDeploymentsRequest.FiltersEntry.value:type_name -> gateway.StringList @@ -17665,7 +15957,7 @@ var file_gateway_proto_depIdxs = []int32{ 28, // 129: gateway.GatewayService.ListTasks:input_type -> gateway.ListTasksRequest 43, // 130: gateway.GatewayService.GetOrCreateStub:input_type -> gateway.GetOrCreateStubRequest 45, // 131: gateway.GatewayService.DeployStub:input_type -> gateway.DeployStubRequest - 162, // 132: gateway.GatewayService.GetURL:input_type -> gateway.GetURLRequest + 166, // 132: gateway.GatewayService.GetURL:input_type -> gateway.GetURLRequest 48, // 133: gateway.GatewayService.ListDeployments:input_type -> gateway.ListDeploymentsRequest 50, // 134: gateway.GatewayService.StopDeployment:input_type -> gateway.StopDeploymentRequest 52, // 135: gateway.GatewayService.StartDeployment:input_type -> gateway.StartDeploymentRequest @@ -17698,102 +15990,106 @@ var file_gateway_proto_depIdxs = []int32{ 116, // 162: gateway.GatewayService.RevokePoolJoinToken:input_type -> gateway.RevokePoolJoinTokenRequest 118, // 163: gateway.GatewayService.GetPoolJoinCommand:input_type -> gateway.GetPoolJoinCommandRequest 120, // 164: gateway.GatewayService.ListPoolMachines:input_type -> gateway.ListPoolMachinesRequest - 176, // 165: gateway.GatewayService.DownloadMachineSSHKey:input_type -> gateway.DownloadMachineSSHKeyRequest - 178, // 166: gateway.GatewayService.RotateMachineSSHKey:input_type -> gateway.RotateMachineSSHKeyRequest - 180, // 167: gateway.GatewayService.ActivateMachineSSHKey:input_type -> gateway.ActivateMachineSSHKeyRequest + 180, // 165: gateway.GatewayService.DownloadMachineSSHKey:input_type -> gateway.DownloadMachineSSHKeyRequest + 182, // 166: gateway.GatewayService.RotateMachineSSHKey:input_type -> gateway.RotateMachineSSHKeyRequest + 184, // 167: gateway.GatewayService.ActivateMachineSSHKey:input_type -> gateway.ActivateMachineSSHKeyRequest 126, // 168: gateway.GatewayService.JoinAgent:input_type -> gateway.JoinAgentRequest 130, // 169: gateway.GatewayService.RequestAgentTransportCredential:input_type -> gateway.RequestAgentTransportCredentialRequest - 132, // 170: gateway.GatewayService.ListAgentRoutes:input_type -> gateway.ListAgentRoutesRequest - 134, // 171: gateway.GatewayService.UpdateAgentRouteStatus:input_type -> gateway.UpdateAgentRouteStatusRequest - 183, // 172: gateway.GatewayService.UpdateAgentSSHStatus:input_type -> gateway.UpdateAgentSSHStatusRequest - 174, // 173: gateway.GatewayService.UpdateAgentAvailability:input_type -> gateway.UpdateAgentAvailabilityRequest - 137, // 174: gateway.GatewayService.StreamAgent:input_type -> gateway.StreamAgentRequest - 142, // 175: gateway.GatewayService.StreamAgentTelemetry:input_type -> gateway.AgentTelemetryRequest - 147, // 176: gateway.GatewayService.ListMachines:input_type -> gateway.ListMachinesRequest - 149, // 177: gateway.GatewayService.CreateMachine:input_type -> gateway.CreateMachineRequest - 151, // 178: gateway.GatewayService.DeleteMachine:input_type -> gateway.DeleteMachineRequest - 154, // 179: gateway.GatewayService.ListTokens:input_type -> gateway.ListTokensRequest - 156, // 180: gateway.GatewayService.CreateToken:input_type -> gateway.CreateTokenRequest - 158, // 181: gateway.GatewayService.ToggleToken:input_type -> gateway.ToggleTokenRequest - 160, // 182: gateway.GatewayService.DeleteToken:input_type -> gateway.DeleteTokenRequest - 164, // 183: gateway.GatewayService.ListWorkers:input_type -> gateway.ListWorkersRequest - 166, // 184: gateway.GatewayService.CordonWorker:input_type -> gateway.CordonWorkerRequest - 168, // 185: gateway.GatewayService.UncordonWorker:input_type -> gateway.UncordonWorkerRequest - 170, // 186: gateway.GatewayService.DrainWorker:input_type -> gateway.DrainWorkerRequest - 172, // 187: gateway.GatewayService.ExportWorkspaceConfig:input_type -> gateway.ExportWorkspaceConfigRequest - 2, // 188: gateway.GatewayService.Authorize:output_type -> gateway.AuthorizeResponse - 4, // 189: gateway.GatewayService.SignPayload:output_type -> gateway.SignPayloadResponse - 7, // 190: gateway.GatewayService.HeadObject:output_type -> gateway.HeadObjectResponse - 9, // 191: gateway.GatewayService.CreateObject:output_type -> gateway.CreateObjectResponse - 11, // 192: gateway.GatewayService.PutObjectStream:output_type -> gateway.PutObjectResponse - 19, // 193: gateway.GatewayService.CheckpointContainer:output_type -> gateway.CheckpointContainerResponse - 15, // 194: gateway.GatewayService.ListContainers:output_type -> gateway.ListContainersResponse - 17, // 195: gateway.GatewayService.StopContainer:output_type -> gateway.StopContainerResponse - 22, // 196: gateway.GatewayService.AttachToContainer:output_type -> gateway.AttachToContainerResponse - 24, // 197: gateway.GatewayService.StartTask:output_type -> gateway.StartTaskResponse - 26, // 198: gateway.GatewayService.EndTask:output_type -> gateway.EndTaskResponse - 32, // 199: gateway.GatewayService.StopTasks:output_type -> gateway.StopTasksResponse - 30, // 200: gateway.GatewayService.ListTasks:output_type -> gateway.ListTasksResponse - 44, // 201: gateway.GatewayService.GetOrCreateStub:output_type -> gateway.GetOrCreateStubResponse - 46, // 202: gateway.GatewayService.DeployStub:output_type -> gateway.DeployStubResponse - 163, // 203: gateway.GatewayService.GetURL:output_type -> gateway.GetURLResponse - 49, // 204: gateway.GatewayService.ListDeployments:output_type -> gateway.ListDeploymentsResponse - 51, // 205: gateway.GatewayService.StopDeployment:output_type -> gateway.StopDeploymentResponse - 53, // 206: gateway.GatewayService.StartDeployment:output_type -> gateway.StartDeploymentResponse - 55, // 207: gateway.GatewayService.ScaleDeployment:output_type -> gateway.ScaleDeploymentResponse - 57, // 208: gateway.GatewayService.DeleteDeployment:output_type -> gateway.DeleteDeploymentResponse - 60, // 209: gateway.GatewayService.ListPools:output_type -> gateway.ListPoolsResponse - 66, // 210: gateway.GatewayService.ListPoolOffers:output_type -> gateway.ListPoolOffersResponse - 68, // 211: gateway.GatewayService.LaunchPoolCapacity:output_type -> gateway.LaunchPoolCapacityResponse - 70, // 212: gateway.GatewayService.ListPrivatePools:output_type -> gateway.ListPrivatePoolsResponse - 72, // 213: gateway.GatewayService.CreateBYOCPool:output_type -> gateway.CreateBYOCPoolResponse - 75, // 214: gateway.GatewayService.GetBYOCPool:output_type -> gateway.GetBYOCPoolResponse - 77, // 215: gateway.GatewayService.ScaleBYOCPool:output_type -> gateway.ScaleBYOCPoolResponse - 81, // 216: gateway.GatewayService.CreateMarketplaceListing:output_type -> gateway.CreateMarketplaceListingResponse - 83, // 217: gateway.GatewayService.UpdateMarketplaceListing:output_type -> gateway.UpdateMarketplaceListingResponse - 85, // 218: gateway.GatewayService.DeleteMarketplaceListing:output_type -> gateway.DeleteMarketplaceListingResponse - 87, // 219: gateway.GatewayService.ListMarketplaceListings:output_type -> gateway.ListMarketplaceListingsResponse - 89, // 220: gateway.GatewayService.GetMarketplaceJoinCommand:output_type -> gateway.GetMarketplaceJoinCommandResponse - 91, // 221: gateway.GatewayService.ListMarketplaceOffers:output_type -> gateway.ListMarketplaceOffersResponse - 93, // 222: gateway.GatewayService.GetMarketplaceOffer:output_type -> gateway.GetMarketplaceOfferResponse - 96, // 223: gateway.GatewayService.CreateMarketplaceRental:output_type -> gateway.CreateMarketplaceRentalResponse - 98, // 224: gateway.GatewayService.ListMarketplaceRentals:output_type -> gateway.ListMarketplaceRentalsResponse - 100, // 225: gateway.GatewayService.DeleteMarketplaceRental:output_type -> gateway.DeleteMarketplaceRentalResponse - 102, // 226: gateway.GatewayService.LaunchRentalWorkload:output_type -> gateway.LaunchRentalWorkloadResponse - 104, // 227: gateway.GatewayService.ListMarketplaceMachines:output_type -> gateway.ListMarketplaceMachinesResponse - 107, // 228: gateway.GatewayService.ListMachineContainers:output_type -> gateway.ListMachineContainersResponse - 109, // 229: gateway.GatewayService.CreatePool:output_type -> gateway.CreatePoolResponse - 111, // 230: gateway.GatewayService.DeletePool:output_type -> gateway.DeletePoolResponse - 113, // 231: gateway.GatewayService.ExtendPoolCapacity:output_type -> gateway.ExtendPoolCapacityResponse - 115, // 232: gateway.GatewayService.CreatePoolJoinToken:output_type -> gateway.CreatePoolJoinTokenResponse - 117, // 233: gateway.GatewayService.RevokePoolJoinToken:output_type -> gateway.RevokePoolJoinTokenResponse - 119, // 234: gateway.GatewayService.GetPoolJoinCommand:output_type -> gateway.GetPoolJoinCommandResponse - 121, // 235: gateway.GatewayService.ListPoolMachines:output_type -> gateway.ListPoolMachinesResponse - 177, // 236: gateway.GatewayService.DownloadMachineSSHKey:output_type -> gateway.DownloadMachineSSHKeyResponse - 179, // 237: gateway.GatewayService.RotateMachineSSHKey:output_type -> gateway.RotateMachineSSHKeyResponse - 181, // 238: gateway.GatewayService.ActivateMachineSSHKey:output_type -> gateway.ActivateMachineSSHKeyResponse - 127, // 239: gateway.GatewayService.JoinAgent:output_type -> gateway.JoinAgentResponse - 131, // 240: gateway.GatewayService.RequestAgentTransportCredential:output_type -> gateway.RequestAgentTransportCredentialResponse - 133, // 241: gateway.GatewayService.ListAgentRoutes:output_type -> gateway.ListAgentRoutesResponse - 135, // 242: gateway.GatewayService.UpdateAgentRouteStatus:output_type -> gateway.UpdateAgentRouteStatusResponse - 184, // 243: gateway.GatewayService.UpdateAgentSSHStatus:output_type -> gateway.UpdateAgentSSHStatusResponse - 175, // 244: gateway.GatewayService.UpdateAgentAvailability:output_type -> gateway.UpdateAgentAvailabilityResponse - 138, // 245: gateway.GatewayService.StreamAgent:output_type -> gateway.StreamAgentResponse - 143, // 246: gateway.GatewayService.StreamAgentTelemetry:output_type -> gateway.AgentTelemetryResponse - 148, // 247: gateway.GatewayService.ListMachines:output_type -> gateway.ListMachinesResponse - 150, // 248: gateway.GatewayService.CreateMachine:output_type -> gateway.CreateMachineResponse - 152, // 249: gateway.GatewayService.DeleteMachine:output_type -> gateway.DeleteMachineResponse - 155, // 250: gateway.GatewayService.ListTokens:output_type -> gateway.ListTokensResponse - 157, // 251: gateway.GatewayService.CreateToken:output_type -> gateway.CreateTokenResponse - 159, // 252: gateway.GatewayService.ToggleToken:output_type -> gateway.ToggleTokenResponse - 161, // 253: gateway.GatewayService.DeleteToken:output_type -> gateway.DeleteTokenResponse - 165, // 254: gateway.GatewayService.ListWorkers:output_type -> gateway.ListWorkersResponse - 167, // 255: gateway.GatewayService.CordonWorker:output_type -> gateway.CordonWorkerResponse - 169, // 256: gateway.GatewayService.UncordonWorker:output_type -> gateway.UncordonWorkerResponse - 171, // 257: gateway.GatewayService.DrainWorker:output_type -> gateway.DrainWorkerResponse - 173, // 258: gateway.GatewayService.ExportWorkspaceConfig:output_type -> gateway.ExportWorkspaceConfigResponse - 188, // [188:259] is the sub-list for method output_type - 117, // [117:188] is the sub-list for method input_type + 132, // 170: gateway.GatewayService.CreateNodeEnrollment:input_type -> gateway.CreateNodeEnrollmentRequest + 134, // 171: gateway.GatewayService.DeleteNodeEnrollment:input_type -> gateway.DeleteNodeEnrollmentRequest + 136, // 172: gateway.GatewayService.ListAgentRoutes:input_type -> gateway.ListAgentRoutesRequest + 138, // 173: gateway.GatewayService.UpdateAgentRouteStatus:input_type -> gateway.UpdateAgentRouteStatusRequest + 187, // 174: gateway.GatewayService.UpdateAgentSSHStatus:input_type -> gateway.UpdateAgentSSHStatusRequest + 178, // 175: gateway.GatewayService.UpdateAgentAvailability:input_type -> gateway.UpdateAgentAvailabilityRequest + 141, // 176: gateway.GatewayService.StreamAgent:input_type -> gateway.StreamAgentRequest + 146, // 177: gateway.GatewayService.StreamAgentTelemetry:input_type -> gateway.AgentTelemetryRequest + 151, // 178: gateway.GatewayService.ListMachines:input_type -> gateway.ListMachinesRequest + 153, // 179: gateway.GatewayService.CreateMachine:input_type -> gateway.CreateMachineRequest + 155, // 180: gateway.GatewayService.DeleteMachine:input_type -> gateway.DeleteMachineRequest + 158, // 181: gateway.GatewayService.ListTokens:input_type -> gateway.ListTokensRequest + 160, // 182: gateway.GatewayService.CreateToken:input_type -> gateway.CreateTokenRequest + 162, // 183: gateway.GatewayService.ToggleToken:input_type -> gateway.ToggleTokenRequest + 164, // 184: gateway.GatewayService.DeleteToken:input_type -> gateway.DeleteTokenRequest + 168, // 185: gateway.GatewayService.ListWorkers:input_type -> gateway.ListWorkersRequest + 170, // 186: gateway.GatewayService.CordonWorker:input_type -> gateway.CordonWorkerRequest + 172, // 187: gateway.GatewayService.UncordonWorker:input_type -> gateway.UncordonWorkerRequest + 174, // 188: gateway.GatewayService.DrainWorker:input_type -> gateway.DrainWorkerRequest + 176, // 189: gateway.GatewayService.ExportWorkspaceConfig:input_type -> gateway.ExportWorkspaceConfigRequest + 2, // 190: gateway.GatewayService.Authorize:output_type -> gateway.AuthorizeResponse + 4, // 191: gateway.GatewayService.SignPayload:output_type -> gateway.SignPayloadResponse + 7, // 192: gateway.GatewayService.HeadObject:output_type -> gateway.HeadObjectResponse + 9, // 193: gateway.GatewayService.CreateObject:output_type -> gateway.CreateObjectResponse + 11, // 194: gateway.GatewayService.PutObjectStream:output_type -> gateway.PutObjectResponse + 19, // 195: gateway.GatewayService.CheckpointContainer:output_type -> gateway.CheckpointContainerResponse + 15, // 196: gateway.GatewayService.ListContainers:output_type -> gateway.ListContainersResponse + 17, // 197: gateway.GatewayService.StopContainer:output_type -> gateway.StopContainerResponse + 22, // 198: gateway.GatewayService.AttachToContainer:output_type -> gateway.AttachToContainerResponse + 24, // 199: gateway.GatewayService.StartTask:output_type -> gateway.StartTaskResponse + 26, // 200: gateway.GatewayService.EndTask:output_type -> gateway.EndTaskResponse + 32, // 201: gateway.GatewayService.StopTasks:output_type -> gateway.StopTasksResponse + 30, // 202: gateway.GatewayService.ListTasks:output_type -> gateway.ListTasksResponse + 44, // 203: gateway.GatewayService.GetOrCreateStub:output_type -> gateway.GetOrCreateStubResponse + 46, // 204: gateway.GatewayService.DeployStub:output_type -> gateway.DeployStubResponse + 167, // 205: gateway.GatewayService.GetURL:output_type -> gateway.GetURLResponse + 49, // 206: gateway.GatewayService.ListDeployments:output_type -> gateway.ListDeploymentsResponse + 51, // 207: gateway.GatewayService.StopDeployment:output_type -> gateway.StopDeploymentResponse + 53, // 208: gateway.GatewayService.StartDeployment:output_type -> gateway.StartDeploymentResponse + 55, // 209: gateway.GatewayService.ScaleDeployment:output_type -> gateway.ScaleDeploymentResponse + 57, // 210: gateway.GatewayService.DeleteDeployment:output_type -> gateway.DeleteDeploymentResponse + 60, // 211: gateway.GatewayService.ListPools:output_type -> gateway.ListPoolsResponse + 66, // 212: gateway.GatewayService.ListPoolOffers:output_type -> gateway.ListPoolOffersResponse + 68, // 213: gateway.GatewayService.LaunchPoolCapacity:output_type -> gateway.LaunchPoolCapacityResponse + 70, // 214: gateway.GatewayService.ListPrivatePools:output_type -> gateway.ListPrivatePoolsResponse + 72, // 215: gateway.GatewayService.CreateBYOCPool:output_type -> gateway.CreateBYOCPoolResponse + 75, // 216: gateway.GatewayService.GetBYOCPool:output_type -> gateway.GetBYOCPoolResponse + 77, // 217: gateway.GatewayService.ScaleBYOCPool:output_type -> gateway.ScaleBYOCPoolResponse + 81, // 218: gateway.GatewayService.CreateMarketplaceListing:output_type -> gateway.CreateMarketplaceListingResponse + 83, // 219: gateway.GatewayService.UpdateMarketplaceListing:output_type -> gateway.UpdateMarketplaceListingResponse + 85, // 220: gateway.GatewayService.DeleteMarketplaceListing:output_type -> gateway.DeleteMarketplaceListingResponse + 87, // 221: gateway.GatewayService.ListMarketplaceListings:output_type -> gateway.ListMarketplaceListingsResponse + 89, // 222: gateway.GatewayService.GetMarketplaceJoinCommand:output_type -> gateway.GetMarketplaceJoinCommandResponse + 91, // 223: gateway.GatewayService.ListMarketplaceOffers:output_type -> gateway.ListMarketplaceOffersResponse + 93, // 224: gateway.GatewayService.GetMarketplaceOffer:output_type -> gateway.GetMarketplaceOfferResponse + 96, // 225: gateway.GatewayService.CreateMarketplaceRental:output_type -> gateway.CreateMarketplaceRentalResponse + 98, // 226: gateway.GatewayService.ListMarketplaceRentals:output_type -> gateway.ListMarketplaceRentalsResponse + 100, // 227: gateway.GatewayService.DeleteMarketplaceRental:output_type -> gateway.DeleteMarketplaceRentalResponse + 102, // 228: gateway.GatewayService.LaunchRentalWorkload:output_type -> gateway.LaunchRentalWorkloadResponse + 104, // 229: gateway.GatewayService.ListMarketplaceMachines:output_type -> gateway.ListMarketplaceMachinesResponse + 107, // 230: gateway.GatewayService.ListMachineContainers:output_type -> gateway.ListMachineContainersResponse + 109, // 231: gateway.GatewayService.CreatePool:output_type -> gateway.CreatePoolResponse + 111, // 232: gateway.GatewayService.DeletePool:output_type -> gateway.DeletePoolResponse + 113, // 233: gateway.GatewayService.ExtendPoolCapacity:output_type -> gateway.ExtendPoolCapacityResponse + 115, // 234: gateway.GatewayService.CreatePoolJoinToken:output_type -> gateway.CreatePoolJoinTokenResponse + 117, // 235: gateway.GatewayService.RevokePoolJoinToken:output_type -> gateway.RevokePoolJoinTokenResponse + 119, // 236: gateway.GatewayService.GetPoolJoinCommand:output_type -> gateway.GetPoolJoinCommandResponse + 121, // 237: gateway.GatewayService.ListPoolMachines:output_type -> gateway.ListPoolMachinesResponse + 181, // 238: gateway.GatewayService.DownloadMachineSSHKey:output_type -> gateway.DownloadMachineSSHKeyResponse + 183, // 239: gateway.GatewayService.RotateMachineSSHKey:output_type -> gateway.RotateMachineSSHKeyResponse + 185, // 240: gateway.GatewayService.ActivateMachineSSHKey:output_type -> gateway.ActivateMachineSSHKeyResponse + 127, // 241: gateway.GatewayService.JoinAgent:output_type -> gateway.JoinAgentResponse + 131, // 242: gateway.GatewayService.RequestAgentTransportCredential:output_type -> gateway.RequestAgentTransportCredentialResponse + 133, // 243: gateway.GatewayService.CreateNodeEnrollment:output_type -> gateway.CreateNodeEnrollmentResponse + 135, // 244: gateway.GatewayService.DeleteNodeEnrollment:output_type -> gateway.DeleteNodeEnrollmentResponse + 137, // 245: gateway.GatewayService.ListAgentRoutes:output_type -> gateway.ListAgentRoutesResponse + 139, // 246: gateway.GatewayService.UpdateAgentRouteStatus:output_type -> gateway.UpdateAgentRouteStatusResponse + 188, // 247: gateway.GatewayService.UpdateAgentSSHStatus:output_type -> gateway.UpdateAgentSSHStatusResponse + 179, // 248: gateway.GatewayService.UpdateAgentAvailability:output_type -> gateway.UpdateAgentAvailabilityResponse + 142, // 249: gateway.GatewayService.StreamAgent:output_type -> gateway.StreamAgentResponse + 147, // 250: gateway.GatewayService.StreamAgentTelemetry:output_type -> gateway.AgentTelemetryResponse + 152, // 251: gateway.GatewayService.ListMachines:output_type -> gateway.ListMachinesResponse + 154, // 252: gateway.GatewayService.CreateMachine:output_type -> gateway.CreateMachineResponse + 156, // 253: gateway.GatewayService.DeleteMachine:output_type -> gateway.DeleteMachineResponse + 159, // 254: gateway.GatewayService.ListTokens:output_type -> gateway.ListTokensResponse + 161, // 255: gateway.GatewayService.CreateToken:output_type -> gateway.CreateTokenResponse + 163, // 256: gateway.GatewayService.ToggleToken:output_type -> gateway.ToggleTokenResponse + 165, // 257: gateway.GatewayService.DeleteToken:output_type -> gateway.DeleteTokenResponse + 169, // 258: gateway.GatewayService.ListWorkers:output_type -> gateway.ListWorkersResponse + 171, // 259: gateway.GatewayService.CordonWorker:output_type -> gateway.CordonWorkerResponse + 173, // 260: gateway.GatewayService.UncordonWorker:output_type -> gateway.UncordonWorkerResponse + 175, // 261: gateway.GatewayService.DrainWorker:output_type -> gateway.DrainWorkerResponse + 177, // 262: gateway.GatewayService.ExportWorkspaceConfig:output_type -> gateway.ExportWorkspaceConfigResponse + 190, // [190:263] is the sub-list for method output_type + 117, // [117:190] is the sub-list for method input_type 117, // [117:117] is the sub-list for extension type_name 117, // [117:117] is the sub-list for extension extendee 0, // [0:117] is the sub-list for field type_name @@ -17805,2278 +16101,20 @@ func file_gateway_proto_init() { return } file_types_proto_init() - if !protoimpl.UnsafeEnabled { - file_gateway_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthorizeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuthorizeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignPayloadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignPayloadResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObjectMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeadObjectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HeadObjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateObjectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateObjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutObjectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PutObjectResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncContainerWorkspaceRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncContainerWorkspaceResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListContainersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListContainersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopContainerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopContainerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckpointContainerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckpointContainerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContainerStreamMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttachToContainerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttachToContainerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartTaskRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartTaskResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EndTaskRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EndTaskResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StringList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTasksRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Task); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTasksResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopTasksRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopTasksResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Volume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecretVar); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Autoscaler); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LLMConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatabaseServingConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServingConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DurableDisk); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TaskPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Schema); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SchemaField); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrCreateStubRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrCreateStubResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeployStubRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeployStubResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Deployment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDeploymentsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDeploymentsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopDeploymentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopDeploymentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartDeploymentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartDeploymentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScaleDeploymentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScaleDeploymentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteDeploymentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteDeploymentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPoolsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPoolsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PoolConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PoolOffer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProviderInstance); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrivatePool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPoolOffersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPoolOffersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LaunchPoolCapacityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LaunchPoolCapacityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPrivatePoolsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPrivatePoolsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBYOCPoolRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBYOCPoolResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BYOCPoolState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBYOCPoolRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBYOCPoolResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScaleBYOCPoolRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScaleBYOCPoolResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MarketplaceListing); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MarketplaceOffer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMarketplaceListingRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMarketplaceListingResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateMarketplaceListingRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateMarketplaceListingResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMarketplaceListingRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMarketplaceListingResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceListingsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceListingsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMarketplaceJoinCommandRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMarketplaceJoinCommandResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceOffersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceOffersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMarketplaceOfferRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMarketplaceOfferResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MarketplaceRental); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMarketplaceRentalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMarketplaceRentalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceRentalsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceRentalsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMarketplaceRentalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMarketplaceRentalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LaunchRentalWorkloadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LaunchRentalWorkloadResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceMachinesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMarketplaceMachinesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMachineContainersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineContainer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMachineContainersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreatePoolRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreatePoolResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePoolRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeletePoolResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtendPoolCapacityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtendPoolCapacityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreatePoolJoinTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreatePoolJoinTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokePoolJoinTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokePoolJoinTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPoolJoinCommandRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPoolJoinCommandResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPoolMachinesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPoolMachinesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentBootstrapConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentBillingConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentTelemetryConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentTelemetrySinkConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinAgentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinAgentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentPreflightCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentRoute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestAgentTransportCredentialRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestAgentTransportCredentialResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAgentRoutesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAgentRoutesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAgentRouteStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAgentRouteStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentWorkerSlot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamAgentRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamAgentResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentLogRecord); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentMetricSnapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentEventRecord); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentTelemetryRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentTelemetryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Machine); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineMetrics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachinePathMetrics); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMachinesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMachinesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMachineRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateMachineResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMachineRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteMachineResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Token); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTokensRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTokensResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToggleTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToggleTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTokenRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTokenResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetURLRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetURLResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CordonWorkerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CordonWorkerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UncordonWorkerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UncordonWorkerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DrainWorkerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DrainWorkerResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExportWorkspaceConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExportWorkspaceConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAgentAvailabilityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAgentAvailabilityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadMachineSSHKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadMachineSSHKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RotateMachineSSHKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RotateMachineSSHKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActivateMachineSSHKeyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActivateMachineSSHKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentSSHConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAgentSSHStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAgentSSHStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineSSHAccess); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentPoolCacheDiskConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentPoolCacheConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gateway_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentPoolRuntimeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_gateway_proto_msgTypes[19].OneofWrappers = []interface{}{ + file_gateway_proto_msgTypes[19].OneofWrappers = []any{ (*ContainerStreamMessage_AttachRequest)(nil), (*ContainerStreamMessage_SyncContainerWorkspace)(nil), } - file_gateway_proto_msgTypes[32].OneofWrappers = []interface{}{} - file_gateway_proto_msgTypes[81].OneofWrappers = []interface{}{} - file_gateway_proto_msgTypes[152].OneofWrappers = []interface{}{} + file_gateway_proto_msgTypes[32].OneofWrappers = []any{} + file_gateway_proto_msgTypes[81].OneofWrappers = []any{} + file_gateway_proto_msgTypes[156].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_gateway_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_gateway_proto_rawDesc), len(file_gateway_proto_rawDesc)), NumEnums: 1, - NumMessages: 198, + NumMessages: 202, NumExtensions: 0, NumServices: 1, }, @@ -20086,7 +16124,6 @@ func file_gateway_proto_init() { MessageInfos: file_gateway_proto_msgTypes, }.Build() File_gateway_proto = out.File - file_gateway_proto_rawDesc = nil file_gateway_proto_goTypes = nil file_gateway_proto_depIdxs = nil } diff --git a/proto/gateway_grpc.pb.go b/proto/gateway_grpc.pb.go index 710e7c38c..a5acbbadf 100644 --- a/proto/gateway_grpc.pb.go +++ b/proto/gateway_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.1 +// - protoc-gen-go-grpc v1.6.2 +// - protoc v3.21.12 // source: gateway.proto package proto @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( GatewayService_Authorize_FullMethodName = "/gateway.GatewayService/Authorize" @@ -72,6 +72,8 @@ const ( GatewayService_ActivateMachineSSHKey_FullMethodName = "/gateway.GatewayService/ActivateMachineSSHKey" GatewayService_JoinAgent_FullMethodName = "/gateway.GatewayService/JoinAgent" GatewayService_RequestAgentTransportCredential_FullMethodName = "/gateway.GatewayService/RequestAgentTransportCredential" + GatewayService_CreateNodeEnrollment_FullMethodName = "/gateway.GatewayService/CreateNodeEnrollment" + GatewayService_DeleteNodeEnrollment_FullMethodName = "/gateway.GatewayService/DeleteNodeEnrollment" GatewayService_ListAgentRoutes_FullMethodName = "/gateway.GatewayService/ListAgentRoutes" GatewayService_UpdateAgentRouteStatus_FullMethodName = "/gateway.GatewayService/UpdateAgentRouteStatus" GatewayService_UpdateAgentSSHStatus_FullMethodName = "/gateway.GatewayService/UpdateAgentSSHStatus" @@ -102,12 +104,12 @@ type GatewayServiceClient interface { // Objects HeadObject(ctx context.Context, in *HeadObjectRequest, opts ...grpc.CallOption) (*HeadObjectResponse, error) CreateObject(ctx context.Context, in *CreateObjectRequest, opts ...grpc.CallOption) (*CreateObjectResponse, error) - PutObjectStream(ctx context.Context, opts ...grpc.CallOption) (GatewayService_PutObjectStreamClient, error) + PutObjectStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[PutObjectRequest, PutObjectResponse], error) // Containers CheckpointContainer(ctx context.Context, in *CheckpointContainerRequest, opts ...grpc.CallOption) (*CheckpointContainerResponse, error) ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) - AttachToContainer(ctx context.Context, opts ...grpc.CallOption) (GatewayService_AttachToContainerClient, error) + AttachToContainer(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ContainerStreamMessage, AttachToContainerResponse], error) // Tasks StartTask(ctx context.Context, in *StartTaskRequest, opts ...grpc.CallOption) (*StartTaskResponse, error) EndTask(ctx context.Context, in *EndTaskRequest, opts ...grpc.CallOption) (*EndTaskResponse, error) @@ -157,12 +159,14 @@ type GatewayServiceClient interface { ActivateMachineSSHKey(ctx context.Context, in *ActivateMachineSSHKeyRequest, opts ...grpc.CallOption) (*ActivateMachineSSHKeyResponse, error) JoinAgent(ctx context.Context, in *JoinAgentRequest, opts ...grpc.CallOption) (*JoinAgentResponse, error) RequestAgentTransportCredential(ctx context.Context, in *RequestAgentTransportCredentialRequest, opts ...grpc.CallOption) (*RequestAgentTransportCredentialResponse, error) + CreateNodeEnrollment(ctx context.Context, in *CreateNodeEnrollmentRequest, opts ...grpc.CallOption) (*CreateNodeEnrollmentResponse, error) + DeleteNodeEnrollment(ctx context.Context, in *DeleteNodeEnrollmentRequest, opts ...grpc.CallOption) (*DeleteNodeEnrollmentResponse, error) ListAgentRoutes(ctx context.Context, in *ListAgentRoutesRequest, opts ...grpc.CallOption) (*ListAgentRoutesResponse, error) UpdateAgentRouteStatus(ctx context.Context, in *UpdateAgentRouteStatusRequest, opts ...grpc.CallOption) (*UpdateAgentRouteStatusResponse, error) UpdateAgentSSHStatus(ctx context.Context, in *UpdateAgentSSHStatusRequest, opts ...grpc.CallOption) (*UpdateAgentSSHStatusResponse, error) UpdateAgentAvailability(ctx context.Context, in *UpdateAgentAvailabilityRequest, opts ...grpc.CallOption) (*UpdateAgentAvailabilityResponse, error) - StreamAgent(ctx context.Context, in *StreamAgentRequest, opts ...grpc.CallOption) (GatewayService_StreamAgentClient, error) - StreamAgentTelemetry(ctx context.Context, opts ...grpc.CallOption) (GatewayService_StreamAgentTelemetryClient, error) + StreamAgent(ctx context.Context, in *StreamAgentRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StreamAgentResponse], error) + StreamAgentTelemetry(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[AgentTelemetryRequest, AgentTelemetryResponse], error) // Machines ListMachines(ctx context.Context, in *ListMachinesRequest, opts ...grpc.CallOption) (*ListMachinesResponse, error) CreateMachine(ctx context.Context, in *CreateMachineRequest, opts ...grpc.CallOption) (*CreateMachineResponse, error) @@ -190,8 +194,9 @@ func NewGatewayServiceClient(cc grpc.ClientConnInterface) GatewayServiceClient { } func (c *gatewayServiceClient) Authorize(ctx context.Context, in *AuthorizeRequest, opts ...grpc.CallOption) (*AuthorizeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AuthorizeResponse) - err := c.cc.Invoke(ctx, GatewayService_Authorize_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_Authorize_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -199,8 +204,9 @@ func (c *gatewayServiceClient) Authorize(ctx context.Context, in *AuthorizeReque } func (c *gatewayServiceClient) SignPayload(ctx context.Context, in *SignPayloadRequest, opts ...grpc.CallOption) (*SignPayloadResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SignPayloadResponse) - err := c.cc.Invoke(ctx, GatewayService_SignPayload_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_SignPayload_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -208,8 +214,9 @@ func (c *gatewayServiceClient) SignPayload(ctx context.Context, in *SignPayloadR } func (c *gatewayServiceClient) HeadObject(ctx context.Context, in *HeadObjectRequest, opts ...grpc.CallOption) (*HeadObjectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HeadObjectResponse) - err := c.cc.Invoke(ctx, GatewayService_HeadObject_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_HeadObject_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -217,51 +224,32 @@ func (c *gatewayServiceClient) HeadObject(ctx context.Context, in *HeadObjectReq } func (c *gatewayServiceClient) CreateObject(ctx context.Context, in *CreateObjectRequest, opts ...grpc.CallOption) (*CreateObjectResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateObjectResponse) - err := c.cc.Invoke(ctx, GatewayService_CreateObject_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreateObject_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *gatewayServiceClient) PutObjectStream(ctx context.Context, opts ...grpc.CallOption) (GatewayService_PutObjectStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[0], GatewayService_PutObjectStream_FullMethodName, opts...) +func (c *gatewayServiceClient) PutObjectStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[PutObjectRequest, PutObjectResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[0], GatewayService_PutObjectStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &gatewayServicePutObjectStreamClient{stream} + x := &grpc.GenericClientStream[PutObjectRequest, PutObjectResponse]{ClientStream: stream} return x, nil } -type GatewayService_PutObjectStreamClient interface { - Send(*PutObjectRequest) error - CloseAndRecv() (*PutObjectResponse, error) - grpc.ClientStream -} - -type gatewayServicePutObjectStreamClient struct { - grpc.ClientStream -} - -func (x *gatewayServicePutObjectStreamClient) Send(m *PutObjectRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *gatewayServicePutObjectStreamClient) CloseAndRecv() (*PutObjectResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(PutObjectResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_PutObjectStreamClient = grpc.ClientStreamingClient[PutObjectRequest, PutObjectResponse] func (c *gatewayServiceClient) CheckpointContainer(ctx context.Context, in *CheckpointContainerRequest, opts ...grpc.CallOption) (*CheckpointContainerResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CheckpointContainerResponse) - err := c.cc.Invoke(ctx, GatewayService_CheckpointContainer_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CheckpointContainer_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -269,8 +257,9 @@ func (c *gatewayServiceClient) CheckpointContainer(ctx context.Context, in *Chec } func (c *gatewayServiceClient) ListContainers(ctx context.Context, in *ListContainersRequest, opts ...grpc.CallOption) (*ListContainersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListContainersResponse) - err := c.cc.Invoke(ctx, GatewayService_ListContainers_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListContainers_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -278,48 +267,32 @@ func (c *gatewayServiceClient) ListContainers(ctx context.Context, in *ListConta } func (c *gatewayServiceClient) StopContainer(ctx context.Context, in *StopContainerRequest, opts ...grpc.CallOption) (*StopContainerResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StopContainerResponse) - err := c.cc.Invoke(ctx, GatewayService_StopContainer_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_StopContainer_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *gatewayServiceClient) AttachToContainer(ctx context.Context, opts ...grpc.CallOption) (GatewayService_AttachToContainerClient, error) { - stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[1], GatewayService_AttachToContainer_FullMethodName, opts...) +func (c *gatewayServiceClient) AttachToContainer(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ContainerStreamMessage, AttachToContainerResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[1], GatewayService_AttachToContainer_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &gatewayServiceAttachToContainerClient{stream} + x := &grpc.GenericClientStream[ContainerStreamMessage, AttachToContainerResponse]{ClientStream: stream} return x, nil } -type GatewayService_AttachToContainerClient interface { - Send(*ContainerStreamMessage) error - Recv() (*AttachToContainerResponse, error) - grpc.ClientStream -} - -type gatewayServiceAttachToContainerClient struct { - grpc.ClientStream -} - -func (x *gatewayServiceAttachToContainerClient) Send(m *ContainerStreamMessage) error { - return x.ClientStream.SendMsg(m) -} - -func (x *gatewayServiceAttachToContainerClient) Recv() (*AttachToContainerResponse, error) { - m := new(AttachToContainerResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_AttachToContainerClient = grpc.BidiStreamingClient[ContainerStreamMessage, AttachToContainerResponse] func (c *gatewayServiceClient) StartTask(ctx context.Context, in *StartTaskRequest, opts ...grpc.CallOption) (*StartTaskResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartTaskResponse) - err := c.cc.Invoke(ctx, GatewayService_StartTask_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_StartTask_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -327,8 +300,9 @@ func (c *gatewayServiceClient) StartTask(ctx context.Context, in *StartTaskReque } func (c *gatewayServiceClient) EndTask(ctx context.Context, in *EndTaskRequest, opts ...grpc.CallOption) (*EndTaskResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(EndTaskResponse) - err := c.cc.Invoke(ctx, GatewayService_EndTask_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_EndTask_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -336,8 +310,9 @@ func (c *gatewayServiceClient) EndTask(ctx context.Context, in *EndTaskRequest, } func (c *gatewayServiceClient) StopTasks(ctx context.Context, in *StopTasksRequest, opts ...grpc.CallOption) (*StopTasksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StopTasksResponse) - err := c.cc.Invoke(ctx, GatewayService_StopTasks_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_StopTasks_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -345,8 +320,9 @@ func (c *gatewayServiceClient) StopTasks(ctx context.Context, in *StopTasksReque } func (c *gatewayServiceClient) ListTasks(ctx context.Context, in *ListTasksRequest, opts ...grpc.CallOption) (*ListTasksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListTasksResponse) - err := c.cc.Invoke(ctx, GatewayService_ListTasks_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListTasks_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -354,8 +330,9 @@ func (c *gatewayServiceClient) ListTasks(ctx context.Context, in *ListTasksReque } func (c *gatewayServiceClient) GetOrCreateStub(ctx context.Context, in *GetOrCreateStubRequest, opts ...grpc.CallOption) (*GetOrCreateStubResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetOrCreateStubResponse) - err := c.cc.Invoke(ctx, GatewayService_GetOrCreateStub_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_GetOrCreateStub_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -363,8 +340,9 @@ func (c *gatewayServiceClient) GetOrCreateStub(ctx context.Context, in *GetOrCre } func (c *gatewayServiceClient) DeployStub(ctx context.Context, in *DeployStubRequest, opts ...grpc.CallOption) (*DeployStubResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeployStubResponse) - err := c.cc.Invoke(ctx, GatewayService_DeployStub_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeployStub_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -372,8 +350,9 @@ func (c *gatewayServiceClient) DeployStub(ctx context.Context, in *DeployStubReq } func (c *gatewayServiceClient) GetURL(ctx context.Context, in *GetURLRequest, opts ...grpc.CallOption) (*GetURLResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetURLResponse) - err := c.cc.Invoke(ctx, GatewayService_GetURL_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_GetURL_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -381,8 +360,9 @@ func (c *gatewayServiceClient) GetURL(ctx context.Context, in *GetURLRequest, op } func (c *gatewayServiceClient) ListDeployments(ctx context.Context, in *ListDeploymentsRequest, opts ...grpc.CallOption) (*ListDeploymentsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListDeploymentsResponse) - err := c.cc.Invoke(ctx, GatewayService_ListDeployments_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListDeployments_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -390,8 +370,9 @@ func (c *gatewayServiceClient) ListDeployments(ctx context.Context, in *ListDepl } func (c *gatewayServiceClient) StopDeployment(ctx context.Context, in *StopDeploymentRequest, opts ...grpc.CallOption) (*StopDeploymentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StopDeploymentResponse) - err := c.cc.Invoke(ctx, GatewayService_StopDeployment_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_StopDeployment_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -399,8 +380,9 @@ func (c *gatewayServiceClient) StopDeployment(ctx context.Context, in *StopDeplo } func (c *gatewayServiceClient) StartDeployment(ctx context.Context, in *StartDeploymentRequest, opts ...grpc.CallOption) (*StartDeploymentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StartDeploymentResponse) - err := c.cc.Invoke(ctx, GatewayService_StartDeployment_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_StartDeployment_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -408,8 +390,9 @@ func (c *gatewayServiceClient) StartDeployment(ctx context.Context, in *StartDep } func (c *gatewayServiceClient) ScaleDeployment(ctx context.Context, in *ScaleDeploymentRequest, opts ...grpc.CallOption) (*ScaleDeploymentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ScaleDeploymentResponse) - err := c.cc.Invoke(ctx, GatewayService_ScaleDeployment_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ScaleDeployment_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -417,8 +400,9 @@ func (c *gatewayServiceClient) ScaleDeployment(ctx context.Context, in *ScaleDep } func (c *gatewayServiceClient) DeleteDeployment(ctx context.Context, in *DeleteDeploymentRequest, opts ...grpc.CallOption) (*DeleteDeploymentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteDeploymentResponse) - err := c.cc.Invoke(ctx, GatewayService_DeleteDeployment_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeleteDeployment_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -426,8 +410,9 @@ func (c *gatewayServiceClient) DeleteDeployment(ctx context.Context, in *DeleteD } func (c *gatewayServiceClient) ListPools(ctx context.Context, in *ListPoolsRequest, opts ...grpc.CallOption) (*ListPoolsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListPoolsResponse) - err := c.cc.Invoke(ctx, GatewayService_ListPools_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListPools_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -435,8 +420,9 @@ func (c *gatewayServiceClient) ListPools(ctx context.Context, in *ListPoolsReque } func (c *gatewayServiceClient) ListPoolOffers(ctx context.Context, in *ListPoolOffersRequest, opts ...grpc.CallOption) (*ListPoolOffersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListPoolOffersResponse) - err := c.cc.Invoke(ctx, GatewayService_ListPoolOffers_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListPoolOffers_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -444,8 +430,9 @@ func (c *gatewayServiceClient) ListPoolOffers(ctx context.Context, in *ListPoolO } func (c *gatewayServiceClient) LaunchPoolCapacity(ctx context.Context, in *LaunchPoolCapacityRequest, opts ...grpc.CallOption) (*LaunchPoolCapacityResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LaunchPoolCapacityResponse) - err := c.cc.Invoke(ctx, GatewayService_LaunchPoolCapacity_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_LaunchPoolCapacity_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -453,8 +440,9 @@ func (c *gatewayServiceClient) LaunchPoolCapacity(ctx context.Context, in *Launc } func (c *gatewayServiceClient) ListPrivatePools(ctx context.Context, in *ListPrivatePoolsRequest, opts ...grpc.CallOption) (*ListPrivatePoolsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListPrivatePoolsResponse) - err := c.cc.Invoke(ctx, GatewayService_ListPrivatePools_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListPrivatePools_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -462,8 +450,9 @@ func (c *gatewayServiceClient) ListPrivatePools(ctx context.Context, in *ListPri } func (c *gatewayServiceClient) CreateBYOCPool(ctx context.Context, in *CreateBYOCPoolRequest, opts ...grpc.CallOption) (*CreateBYOCPoolResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateBYOCPoolResponse) - err := c.cc.Invoke(ctx, GatewayService_CreateBYOCPool_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreateBYOCPool_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -471,8 +460,9 @@ func (c *gatewayServiceClient) CreateBYOCPool(ctx context.Context, in *CreateBYO } func (c *gatewayServiceClient) GetBYOCPool(ctx context.Context, in *GetBYOCPoolRequest, opts ...grpc.CallOption) (*GetBYOCPoolResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetBYOCPoolResponse) - err := c.cc.Invoke(ctx, GatewayService_GetBYOCPool_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_GetBYOCPool_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -480,8 +470,9 @@ func (c *gatewayServiceClient) GetBYOCPool(ctx context.Context, in *GetBYOCPoolR } func (c *gatewayServiceClient) ScaleBYOCPool(ctx context.Context, in *ScaleBYOCPoolRequest, opts ...grpc.CallOption) (*ScaleBYOCPoolResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ScaleBYOCPoolResponse) - err := c.cc.Invoke(ctx, GatewayService_ScaleBYOCPool_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ScaleBYOCPool_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -489,8 +480,9 @@ func (c *gatewayServiceClient) ScaleBYOCPool(ctx context.Context, in *ScaleBYOCP } func (c *gatewayServiceClient) CreateMarketplaceListing(ctx context.Context, in *CreateMarketplaceListingRequest, opts ...grpc.CallOption) (*CreateMarketplaceListingResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateMarketplaceListingResponse) - err := c.cc.Invoke(ctx, GatewayService_CreateMarketplaceListing_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreateMarketplaceListing_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -498,8 +490,9 @@ func (c *gatewayServiceClient) CreateMarketplaceListing(ctx context.Context, in } func (c *gatewayServiceClient) UpdateMarketplaceListing(ctx context.Context, in *UpdateMarketplaceListingRequest, opts ...grpc.CallOption) (*UpdateMarketplaceListingResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateMarketplaceListingResponse) - err := c.cc.Invoke(ctx, GatewayService_UpdateMarketplaceListing_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_UpdateMarketplaceListing_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -507,8 +500,9 @@ func (c *gatewayServiceClient) UpdateMarketplaceListing(ctx context.Context, in } func (c *gatewayServiceClient) DeleteMarketplaceListing(ctx context.Context, in *DeleteMarketplaceListingRequest, opts ...grpc.CallOption) (*DeleteMarketplaceListingResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteMarketplaceListingResponse) - err := c.cc.Invoke(ctx, GatewayService_DeleteMarketplaceListing_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeleteMarketplaceListing_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -516,8 +510,9 @@ func (c *gatewayServiceClient) DeleteMarketplaceListing(ctx context.Context, in } func (c *gatewayServiceClient) ListMarketplaceListings(ctx context.Context, in *ListMarketplaceListingsRequest, opts ...grpc.CallOption) (*ListMarketplaceListingsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListMarketplaceListingsResponse) - err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceListings_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceListings_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -525,8 +520,9 @@ func (c *gatewayServiceClient) ListMarketplaceListings(ctx context.Context, in * } func (c *gatewayServiceClient) GetMarketplaceJoinCommand(ctx context.Context, in *GetMarketplaceJoinCommandRequest, opts ...grpc.CallOption) (*GetMarketplaceJoinCommandResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetMarketplaceJoinCommandResponse) - err := c.cc.Invoke(ctx, GatewayService_GetMarketplaceJoinCommand_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_GetMarketplaceJoinCommand_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -534,8 +530,9 @@ func (c *gatewayServiceClient) GetMarketplaceJoinCommand(ctx context.Context, in } func (c *gatewayServiceClient) ListMarketplaceOffers(ctx context.Context, in *ListMarketplaceOffersRequest, opts ...grpc.CallOption) (*ListMarketplaceOffersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListMarketplaceOffersResponse) - err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceOffers_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceOffers_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -543,8 +540,9 @@ func (c *gatewayServiceClient) ListMarketplaceOffers(ctx context.Context, in *Li } func (c *gatewayServiceClient) GetMarketplaceOffer(ctx context.Context, in *GetMarketplaceOfferRequest, opts ...grpc.CallOption) (*GetMarketplaceOfferResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetMarketplaceOfferResponse) - err := c.cc.Invoke(ctx, GatewayService_GetMarketplaceOffer_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_GetMarketplaceOffer_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -552,8 +550,9 @@ func (c *gatewayServiceClient) GetMarketplaceOffer(ctx context.Context, in *GetM } func (c *gatewayServiceClient) CreateMarketplaceRental(ctx context.Context, in *CreateMarketplaceRentalRequest, opts ...grpc.CallOption) (*CreateMarketplaceRentalResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateMarketplaceRentalResponse) - err := c.cc.Invoke(ctx, GatewayService_CreateMarketplaceRental_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreateMarketplaceRental_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -561,8 +560,9 @@ func (c *gatewayServiceClient) CreateMarketplaceRental(ctx context.Context, in * } func (c *gatewayServiceClient) ListMarketplaceRentals(ctx context.Context, in *ListMarketplaceRentalsRequest, opts ...grpc.CallOption) (*ListMarketplaceRentalsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListMarketplaceRentalsResponse) - err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceRentals_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceRentals_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -570,8 +570,9 @@ func (c *gatewayServiceClient) ListMarketplaceRentals(ctx context.Context, in *L } func (c *gatewayServiceClient) DeleteMarketplaceRental(ctx context.Context, in *DeleteMarketplaceRentalRequest, opts ...grpc.CallOption) (*DeleteMarketplaceRentalResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteMarketplaceRentalResponse) - err := c.cc.Invoke(ctx, GatewayService_DeleteMarketplaceRental_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeleteMarketplaceRental_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -579,8 +580,9 @@ func (c *gatewayServiceClient) DeleteMarketplaceRental(ctx context.Context, in * } func (c *gatewayServiceClient) LaunchRentalWorkload(ctx context.Context, in *LaunchRentalWorkloadRequest, opts ...grpc.CallOption) (*LaunchRentalWorkloadResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(LaunchRentalWorkloadResponse) - err := c.cc.Invoke(ctx, GatewayService_LaunchRentalWorkload_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_LaunchRentalWorkload_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -588,8 +590,9 @@ func (c *gatewayServiceClient) LaunchRentalWorkload(ctx context.Context, in *Lau } func (c *gatewayServiceClient) ListMarketplaceMachines(ctx context.Context, in *ListMarketplaceMachinesRequest, opts ...grpc.CallOption) (*ListMarketplaceMachinesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListMarketplaceMachinesResponse) - err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceMachines_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListMarketplaceMachines_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -597,8 +600,9 @@ func (c *gatewayServiceClient) ListMarketplaceMachines(ctx context.Context, in * } func (c *gatewayServiceClient) ListMachineContainers(ctx context.Context, in *ListMachineContainersRequest, opts ...grpc.CallOption) (*ListMachineContainersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListMachineContainersResponse) - err := c.cc.Invoke(ctx, GatewayService_ListMachineContainers_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListMachineContainers_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -606,8 +610,9 @@ func (c *gatewayServiceClient) ListMachineContainers(ctx context.Context, in *Li } func (c *gatewayServiceClient) CreatePool(ctx context.Context, in *CreatePoolRequest, opts ...grpc.CallOption) (*CreatePoolResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreatePoolResponse) - err := c.cc.Invoke(ctx, GatewayService_CreatePool_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreatePool_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -615,8 +620,9 @@ func (c *gatewayServiceClient) CreatePool(ctx context.Context, in *CreatePoolReq } func (c *gatewayServiceClient) DeletePool(ctx context.Context, in *DeletePoolRequest, opts ...grpc.CallOption) (*DeletePoolResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeletePoolResponse) - err := c.cc.Invoke(ctx, GatewayService_DeletePool_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeletePool_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -624,8 +630,9 @@ func (c *gatewayServiceClient) DeletePool(ctx context.Context, in *DeletePoolReq } func (c *gatewayServiceClient) ExtendPoolCapacity(ctx context.Context, in *ExtendPoolCapacityRequest, opts ...grpc.CallOption) (*ExtendPoolCapacityResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ExtendPoolCapacityResponse) - err := c.cc.Invoke(ctx, GatewayService_ExtendPoolCapacity_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ExtendPoolCapacity_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -633,8 +640,9 @@ func (c *gatewayServiceClient) ExtendPoolCapacity(ctx context.Context, in *Exten } func (c *gatewayServiceClient) CreatePoolJoinToken(ctx context.Context, in *CreatePoolJoinTokenRequest, opts ...grpc.CallOption) (*CreatePoolJoinTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreatePoolJoinTokenResponse) - err := c.cc.Invoke(ctx, GatewayService_CreatePoolJoinToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreatePoolJoinToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -642,8 +650,9 @@ func (c *gatewayServiceClient) CreatePoolJoinToken(ctx context.Context, in *Crea } func (c *gatewayServiceClient) RevokePoolJoinToken(ctx context.Context, in *RevokePoolJoinTokenRequest, opts ...grpc.CallOption) (*RevokePoolJoinTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RevokePoolJoinTokenResponse) - err := c.cc.Invoke(ctx, GatewayService_RevokePoolJoinToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_RevokePoolJoinToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -651,8 +660,9 @@ func (c *gatewayServiceClient) RevokePoolJoinToken(ctx context.Context, in *Revo } func (c *gatewayServiceClient) GetPoolJoinCommand(ctx context.Context, in *GetPoolJoinCommandRequest, opts ...grpc.CallOption) (*GetPoolJoinCommandResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPoolJoinCommandResponse) - err := c.cc.Invoke(ctx, GatewayService_GetPoolJoinCommand_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_GetPoolJoinCommand_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -660,8 +670,9 @@ func (c *gatewayServiceClient) GetPoolJoinCommand(ctx context.Context, in *GetPo } func (c *gatewayServiceClient) ListPoolMachines(ctx context.Context, in *ListPoolMachinesRequest, opts ...grpc.CallOption) (*ListPoolMachinesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListPoolMachinesResponse) - err := c.cc.Invoke(ctx, GatewayService_ListPoolMachines_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListPoolMachines_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -696,8 +707,9 @@ func (c *gatewayServiceClient) ActivateMachineSSHKey(ctx context.Context, in *Ac } func (c *gatewayServiceClient) JoinAgent(ctx context.Context, in *JoinAgentRequest, opts ...grpc.CallOption) (*JoinAgentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(JoinAgentResponse) - err := c.cc.Invoke(ctx, GatewayService_JoinAgent_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_JoinAgent_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -705,8 +717,29 @@ func (c *gatewayServiceClient) JoinAgent(ctx context.Context, in *JoinAgentReque } func (c *gatewayServiceClient) RequestAgentTransportCredential(ctx context.Context, in *RequestAgentTransportCredentialRequest, opts ...grpc.CallOption) (*RequestAgentTransportCredentialResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(RequestAgentTransportCredentialResponse) - err := c.cc.Invoke(ctx, GatewayService_RequestAgentTransportCredential_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_RequestAgentTransportCredential_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayServiceClient) CreateNodeEnrollment(ctx context.Context, in *CreateNodeEnrollmentRequest, opts ...grpc.CallOption) (*CreateNodeEnrollmentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateNodeEnrollmentResponse) + err := c.cc.Invoke(ctx, GatewayService_CreateNodeEnrollment_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gatewayServiceClient) DeleteNodeEnrollment(ctx context.Context, in *DeleteNodeEnrollmentRequest, opts ...grpc.CallOption) (*DeleteNodeEnrollmentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeleteNodeEnrollmentResponse) + err := c.cc.Invoke(ctx, GatewayService_DeleteNodeEnrollment_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -714,8 +747,9 @@ func (c *gatewayServiceClient) RequestAgentTransportCredential(ctx context.Conte } func (c *gatewayServiceClient) ListAgentRoutes(ctx context.Context, in *ListAgentRoutesRequest, opts ...grpc.CallOption) (*ListAgentRoutesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListAgentRoutesResponse) - err := c.cc.Invoke(ctx, GatewayService_ListAgentRoutes_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListAgentRoutes_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -723,8 +757,9 @@ func (c *gatewayServiceClient) ListAgentRoutes(ctx context.Context, in *ListAgen } func (c *gatewayServiceClient) UpdateAgentRouteStatus(ctx context.Context, in *UpdateAgentRouteStatusRequest, opts ...grpc.CallOption) (*UpdateAgentRouteStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateAgentRouteStatusResponse) - err := c.cc.Invoke(ctx, GatewayService_UpdateAgentRouteStatus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_UpdateAgentRouteStatus_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -741,20 +776,22 @@ func (c *gatewayServiceClient) UpdateAgentSSHStatus(ctx context.Context, in *Upd } func (c *gatewayServiceClient) UpdateAgentAvailability(ctx context.Context, in *UpdateAgentAvailabilityRequest, opts ...grpc.CallOption) (*UpdateAgentAvailabilityResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateAgentAvailabilityResponse) - err := c.cc.Invoke(ctx, GatewayService_UpdateAgentAvailability_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_UpdateAgentAvailability_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *gatewayServiceClient) StreamAgent(ctx context.Context, in *StreamAgentRequest, opts ...grpc.CallOption) (GatewayService_StreamAgentClient, error) { - stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[2], GatewayService_StreamAgent_FullMethodName, opts...) +func (c *gatewayServiceClient) StreamAgent(ctx context.Context, in *StreamAgentRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StreamAgentResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[2], GatewayService_StreamAgent_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &gatewayServiceStreamAgentClient{stream} + x := &grpc.GenericClientStream[StreamAgentRequest, StreamAgentResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -764,60 +801,26 @@ func (c *gatewayServiceClient) StreamAgent(ctx context.Context, in *StreamAgentR return x, nil } -type GatewayService_StreamAgentClient interface { - Recv() (*StreamAgentResponse, error) - grpc.ClientStream -} - -type gatewayServiceStreamAgentClient struct { - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_StreamAgentClient = grpc.ServerStreamingClient[StreamAgentResponse] -func (x *gatewayServiceStreamAgentClient) Recv() (*StreamAgentResponse, error) { - m := new(StreamAgentResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *gatewayServiceClient) StreamAgentTelemetry(ctx context.Context, opts ...grpc.CallOption) (GatewayService_StreamAgentTelemetryClient, error) { - stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[3], GatewayService_StreamAgentTelemetry_FullMethodName, opts...) +func (c *gatewayServiceClient) StreamAgentTelemetry(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[AgentTelemetryRequest, AgentTelemetryResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &GatewayService_ServiceDesc.Streams[3], GatewayService_StreamAgentTelemetry_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &gatewayServiceStreamAgentTelemetryClient{stream} + x := &grpc.GenericClientStream[AgentTelemetryRequest, AgentTelemetryResponse]{ClientStream: stream} return x, nil } -type GatewayService_StreamAgentTelemetryClient interface { - Send(*AgentTelemetryRequest) error - CloseAndRecv() (*AgentTelemetryResponse, error) - grpc.ClientStream -} - -type gatewayServiceStreamAgentTelemetryClient struct { - grpc.ClientStream -} - -func (x *gatewayServiceStreamAgentTelemetryClient) Send(m *AgentTelemetryRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *gatewayServiceStreamAgentTelemetryClient) CloseAndRecv() (*AgentTelemetryResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(AgentTelemetryResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_StreamAgentTelemetryClient = grpc.ClientStreamingClient[AgentTelemetryRequest, AgentTelemetryResponse] func (c *gatewayServiceClient) ListMachines(ctx context.Context, in *ListMachinesRequest, opts ...grpc.CallOption) (*ListMachinesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListMachinesResponse) - err := c.cc.Invoke(ctx, GatewayService_ListMachines_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListMachines_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -825,8 +828,9 @@ func (c *gatewayServiceClient) ListMachines(ctx context.Context, in *ListMachine } func (c *gatewayServiceClient) CreateMachine(ctx context.Context, in *CreateMachineRequest, opts ...grpc.CallOption) (*CreateMachineResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateMachineResponse) - err := c.cc.Invoke(ctx, GatewayService_CreateMachine_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreateMachine_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -834,8 +838,9 @@ func (c *gatewayServiceClient) CreateMachine(ctx context.Context, in *CreateMach } func (c *gatewayServiceClient) DeleteMachine(ctx context.Context, in *DeleteMachineRequest, opts ...grpc.CallOption) (*DeleteMachineResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteMachineResponse) - err := c.cc.Invoke(ctx, GatewayService_DeleteMachine_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeleteMachine_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -843,8 +848,9 @@ func (c *gatewayServiceClient) DeleteMachine(ctx context.Context, in *DeleteMach } func (c *gatewayServiceClient) ListTokens(ctx context.Context, in *ListTokensRequest, opts ...grpc.CallOption) (*ListTokensResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListTokensResponse) - err := c.cc.Invoke(ctx, GatewayService_ListTokens_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListTokens_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -852,8 +858,9 @@ func (c *gatewayServiceClient) ListTokens(ctx context.Context, in *ListTokensReq } func (c *gatewayServiceClient) CreateToken(ctx context.Context, in *CreateTokenRequest, opts ...grpc.CallOption) (*CreateTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateTokenResponse) - err := c.cc.Invoke(ctx, GatewayService_CreateToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CreateToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -861,8 +868,9 @@ func (c *gatewayServiceClient) CreateToken(ctx context.Context, in *CreateTokenR } func (c *gatewayServiceClient) ToggleToken(ctx context.Context, in *ToggleTokenRequest, opts ...grpc.CallOption) (*ToggleTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ToggleTokenResponse) - err := c.cc.Invoke(ctx, GatewayService_ToggleToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ToggleToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -870,8 +878,9 @@ func (c *gatewayServiceClient) ToggleToken(ctx context.Context, in *ToggleTokenR } func (c *gatewayServiceClient) DeleteToken(ctx context.Context, in *DeleteTokenRequest, opts ...grpc.CallOption) (*DeleteTokenResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteTokenResponse) - err := c.cc.Invoke(ctx, GatewayService_DeleteToken_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DeleteToken_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -879,8 +888,9 @@ func (c *gatewayServiceClient) DeleteToken(ctx context.Context, in *DeleteTokenR } func (c *gatewayServiceClient) ListWorkers(ctx context.Context, in *ListWorkersRequest, opts ...grpc.CallOption) (*ListWorkersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListWorkersResponse) - err := c.cc.Invoke(ctx, GatewayService_ListWorkers_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ListWorkers_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -888,8 +898,9 @@ func (c *gatewayServiceClient) ListWorkers(ctx context.Context, in *ListWorkersR } func (c *gatewayServiceClient) CordonWorker(ctx context.Context, in *CordonWorkerRequest, opts ...grpc.CallOption) (*CordonWorkerResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CordonWorkerResponse) - err := c.cc.Invoke(ctx, GatewayService_CordonWorker_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_CordonWorker_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -897,8 +908,9 @@ func (c *gatewayServiceClient) CordonWorker(ctx context.Context, in *CordonWorke } func (c *gatewayServiceClient) UncordonWorker(ctx context.Context, in *UncordonWorkerRequest, opts ...grpc.CallOption) (*UncordonWorkerResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UncordonWorkerResponse) - err := c.cc.Invoke(ctx, GatewayService_UncordonWorker_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_UncordonWorker_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -906,8 +918,9 @@ func (c *gatewayServiceClient) UncordonWorker(ctx context.Context, in *UncordonW } func (c *gatewayServiceClient) DrainWorker(ctx context.Context, in *DrainWorkerRequest, opts ...grpc.CallOption) (*DrainWorkerResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DrainWorkerResponse) - err := c.cc.Invoke(ctx, GatewayService_DrainWorker_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_DrainWorker_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -915,8 +928,9 @@ func (c *gatewayServiceClient) DrainWorker(ctx context.Context, in *DrainWorkerR } func (c *gatewayServiceClient) ExportWorkspaceConfig(ctx context.Context, in *ExportWorkspaceConfigRequest, opts ...grpc.CallOption) (*ExportWorkspaceConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ExportWorkspaceConfigResponse) - err := c.cc.Invoke(ctx, GatewayService_ExportWorkspaceConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GatewayService_ExportWorkspaceConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -925,7 +939,7 @@ func (c *gatewayServiceClient) ExportWorkspaceConfig(ctx context.Context, in *Ex // GatewayServiceServer is the server API for GatewayService service. // All implementations must embed UnimplementedGatewayServiceServer -// for forward compatibility +// for forward compatibility. type GatewayServiceServer interface { // Auth Authorize(context.Context, *AuthorizeRequest) (*AuthorizeResponse, error) @@ -933,12 +947,12 @@ type GatewayServiceServer interface { // Objects HeadObject(context.Context, *HeadObjectRequest) (*HeadObjectResponse, error) CreateObject(context.Context, *CreateObjectRequest) (*CreateObjectResponse, error) - PutObjectStream(GatewayService_PutObjectStreamServer) error + PutObjectStream(grpc.ClientStreamingServer[PutObjectRequest, PutObjectResponse]) error // Containers CheckpointContainer(context.Context, *CheckpointContainerRequest) (*CheckpointContainerResponse, error) ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error) StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) - AttachToContainer(GatewayService_AttachToContainerServer) error + AttachToContainer(grpc.BidiStreamingServer[ContainerStreamMessage, AttachToContainerResponse]) error // Tasks StartTask(context.Context, *StartTaskRequest) (*StartTaskResponse, error) EndTask(context.Context, *EndTaskRequest) (*EndTaskResponse, error) @@ -988,12 +1002,14 @@ type GatewayServiceServer interface { ActivateMachineSSHKey(context.Context, *ActivateMachineSSHKeyRequest) (*ActivateMachineSSHKeyResponse, error) JoinAgent(context.Context, *JoinAgentRequest) (*JoinAgentResponse, error) RequestAgentTransportCredential(context.Context, *RequestAgentTransportCredentialRequest) (*RequestAgentTransportCredentialResponse, error) + CreateNodeEnrollment(context.Context, *CreateNodeEnrollmentRequest) (*CreateNodeEnrollmentResponse, error) + DeleteNodeEnrollment(context.Context, *DeleteNodeEnrollmentRequest) (*DeleteNodeEnrollmentResponse, error) ListAgentRoutes(context.Context, *ListAgentRoutesRequest) (*ListAgentRoutesResponse, error) UpdateAgentRouteStatus(context.Context, *UpdateAgentRouteStatusRequest) (*UpdateAgentRouteStatusResponse, error) UpdateAgentSSHStatus(context.Context, *UpdateAgentSSHStatusRequest) (*UpdateAgentSSHStatusResponse, error) UpdateAgentAvailability(context.Context, *UpdateAgentAvailabilityRequest) (*UpdateAgentAvailabilityResponse, error) - StreamAgent(*StreamAgentRequest, GatewayService_StreamAgentServer) error - StreamAgentTelemetry(GatewayService_StreamAgentTelemetryServer) error + StreamAgent(*StreamAgentRequest, grpc.ServerStreamingServer[StreamAgentResponse]) error + StreamAgentTelemetry(grpc.ClientStreamingServer[AgentTelemetryRequest, AgentTelemetryResponse]) error // Machines ListMachines(context.Context, *ListMachinesRequest) (*ListMachinesResponse, error) CreateMachine(context.Context, *CreateMachineRequest) (*CreateMachineResponse, error) @@ -1013,153 +1029,156 @@ type GatewayServiceServer interface { mustEmbedUnimplementedGatewayServiceServer() } -// UnimplementedGatewayServiceServer must be embedded to have forward compatible implementations. -type UnimplementedGatewayServiceServer struct { -} +// UnimplementedGatewayServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedGatewayServiceServer struct{} func (UnimplementedGatewayServiceServer) Authorize(context.Context, *AuthorizeRequest) (*AuthorizeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Authorize not implemented") + return nil, status.Error(codes.Unimplemented, "method Authorize not implemented") } func (UnimplementedGatewayServiceServer) SignPayload(context.Context, *SignPayloadRequest) (*SignPayloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SignPayload not implemented") + return nil, status.Error(codes.Unimplemented, "method SignPayload not implemented") } func (UnimplementedGatewayServiceServer) HeadObject(context.Context, *HeadObjectRequest) (*HeadObjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method HeadObject not implemented") + return nil, status.Error(codes.Unimplemented, "method HeadObject not implemented") } func (UnimplementedGatewayServiceServer) CreateObject(context.Context, *CreateObjectRequest) (*CreateObjectResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateObject not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateObject not implemented") } -func (UnimplementedGatewayServiceServer) PutObjectStream(GatewayService_PutObjectStreamServer) error { - return status.Errorf(codes.Unimplemented, "method PutObjectStream not implemented") +func (UnimplementedGatewayServiceServer) PutObjectStream(grpc.ClientStreamingServer[PutObjectRequest, PutObjectResponse]) error { + return status.Error(codes.Unimplemented, "method PutObjectStream not implemented") } func (UnimplementedGatewayServiceServer) CheckpointContainer(context.Context, *CheckpointContainerRequest) (*CheckpointContainerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CheckpointContainer not implemented") + return nil, status.Error(codes.Unimplemented, "method CheckpointContainer not implemented") } func (UnimplementedGatewayServiceServer) ListContainers(context.Context, *ListContainersRequest) (*ListContainersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListContainers not implemented") + return nil, status.Error(codes.Unimplemented, "method ListContainers not implemented") } func (UnimplementedGatewayServiceServer) StopContainer(context.Context, *StopContainerRequest) (*StopContainerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StopContainer not implemented") + return nil, status.Error(codes.Unimplemented, "method StopContainer not implemented") } -func (UnimplementedGatewayServiceServer) AttachToContainer(GatewayService_AttachToContainerServer) error { - return status.Errorf(codes.Unimplemented, "method AttachToContainer not implemented") +func (UnimplementedGatewayServiceServer) AttachToContainer(grpc.BidiStreamingServer[ContainerStreamMessage, AttachToContainerResponse]) error { + return status.Error(codes.Unimplemented, "method AttachToContainer not implemented") } func (UnimplementedGatewayServiceServer) StartTask(context.Context, *StartTaskRequest) (*StartTaskResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StartTask not implemented") + return nil, status.Error(codes.Unimplemented, "method StartTask not implemented") } func (UnimplementedGatewayServiceServer) EndTask(context.Context, *EndTaskRequest) (*EndTaskResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method EndTask not implemented") + return nil, status.Error(codes.Unimplemented, "method EndTask not implemented") } func (UnimplementedGatewayServiceServer) StopTasks(context.Context, *StopTasksRequest) (*StopTasksResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StopTasks not implemented") + return nil, status.Error(codes.Unimplemented, "method StopTasks not implemented") } func (UnimplementedGatewayServiceServer) ListTasks(context.Context, *ListTasksRequest) (*ListTasksResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListTasks not implemented") + return nil, status.Error(codes.Unimplemented, "method ListTasks not implemented") } func (UnimplementedGatewayServiceServer) GetOrCreateStub(context.Context, *GetOrCreateStubRequest) (*GetOrCreateStubResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOrCreateStub not implemented") + return nil, status.Error(codes.Unimplemented, "method GetOrCreateStub not implemented") } func (UnimplementedGatewayServiceServer) DeployStub(context.Context, *DeployStubRequest) (*DeployStubResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeployStub not implemented") + return nil, status.Error(codes.Unimplemented, "method DeployStub not implemented") } func (UnimplementedGatewayServiceServer) GetURL(context.Context, *GetURLRequest) (*GetURLResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetURL not implemented") + return nil, status.Error(codes.Unimplemented, "method GetURL not implemented") } func (UnimplementedGatewayServiceServer) ListDeployments(context.Context, *ListDeploymentsRequest) (*ListDeploymentsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListDeployments not implemented") + return nil, status.Error(codes.Unimplemented, "method ListDeployments not implemented") } func (UnimplementedGatewayServiceServer) StopDeployment(context.Context, *StopDeploymentRequest) (*StopDeploymentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StopDeployment not implemented") + return nil, status.Error(codes.Unimplemented, "method StopDeployment not implemented") } func (UnimplementedGatewayServiceServer) StartDeployment(context.Context, *StartDeploymentRequest) (*StartDeploymentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StartDeployment not implemented") + return nil, status.Error(codes.Unimplemented, "method StartDeployment not implemented") } func (UnimplementedGatewayServiceServer) ScaleDeployment(context.Context, *ScaleDeploymentRequest) (*ScaleDeploymentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ScaleDeployment not implemented") + return nil, status.Error(codes.Unimplemented, "method ScaleDeployment not implemented") } func (UnimplementedGatewayServiceServer) DeleteDeployment(context.Context, *DeleteDeploymentRequest) (*DeleteDeploymentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteDeployment not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteDeployment not implemented") } func (UnimplementedGatewayServiceServer) ListPools(context.Context, *ListPoolsRequest) (*ListPoolsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListPools not implemented") + return nil, status.Error(codes.Unimplemented, "method ListPools not implemented") } func (UnimplementedGatewayServiceServer) ListPoolOffers(context.Context, *ListPoolOffersRequest) (*ListPoolOffersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListPoolOffers not implemented") + return nil, status.Error(codes.Unimplemented, "method ListPoolOffers not implemented") } func (UnimplementedGatewayServiceServer) LaunchPoolCapacity(context.Context, *LaunchPoolCapacityRequest) (*LaunchPoolCapacityResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LaunchPoolCapacity not implemented") + return nil, status.Error(codes.Unimplemented, "method LaunchPoolCapacity not implemented") } func (UnimplementedGatewayServiceServer) ListPrivatePools(context.Context, *ListPrivatePoolsRequest) (*ListPrivatePoolsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListPrivatePools not implemented") + return nil, status.Error(codes.Unimplemented, "method ListPrivatePools not implemented") } func (UnimplementedGatewayServiceServer) CreateBYOCPool(context.Context, *CreateBYOCPoolRequest) (*CreateBYOCPoolResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBYOCPool not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateBYOCPool not implemented") } func (UnimplementedGatewayServiceServer) GetBYOCPool(context.Context, *GetBYOCPoolRequest) (*GetBYOCPoolResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetBYOCPool not implemented") + return nil, status.Error(codes.Unimplemented, "method GetBYOCPool not implemented") } func (UnimplementedGatewayServiceServer) ScaleBYOCPool(context.Context, *ScaleBYOCPoolRequest) (*ScaleBYOCPoolResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ScaleBYOCPool not implemented") + return nil, status.Error(codes.Unimplemented, "method ScaleBYOCPool not implemented") } func (UnimplementedGatewayServiceServer) CreateMarketplaceListing(context.Context, *CreateMarketplaceListingRequest) (*CreateMarketplaceListingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateMarketplaceListing not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateMarketplaceListing not implemented") } func (UnimplementedGatewayServiceServer) UpdateMarketplaceListing(context.Context, *UpdateMarketplaceListingRequest) (*UpdateMarketplaceListingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateMarketplaceListing not implemented") + return nil, status.Error(codes.Unimplemented, "method UpdateMarketplaceListing not implemented") } func (UnimplementedGatewayServiceServer) DeleteMarketplaceListing(context.Context, *DeleteMarketplaceListingRequest) (*DeleteMarketplaceListingResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteMarketplaceListing not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteMarketplaceListing not implemented") } func (UnimplementedGatewayServiceServer) ListMarketplaceListings(context.Context, *ListMarketplaceListingsRequest) (*ListMarketplaceListingsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListMarketplaceListings not implemented") + return nil, status.Error(codes.Unimplemented, "method ListMarketplaceListings not implemented") } func (UnimplementedGatewayServiceServer) GetMarketplaceJoinCommand(context.Context, *GetMarketplaceJoinCommandRequest) (*GetMarketplaceJoinCommandResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMarketplaceJoinCommand not implemented") + return nil, status.Error(codes.Unimplemented, "method GetMarketplaceJoinCommand not implemented") } func (UnimplementedGatewayServiceServer) ListMarketplaceOffers(context.Context, *ListMarketplaceOffersRequest) (*ListMarketplaceOffersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListMarketplaceOffers not implemented") + return nil, status.Error(codes.Unimplemented, "method ListMarketplaceOffers not implemented") } func (UnimplementedGatewayServiceServer) GetMarketplaceOffer(context.Context, *GetMarketplaceOfferRequest) (*GetMarketplaceOfferResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMarketplaceOffer not implemented") + return nil, status.Error(codes.Unimplemented, "method GetMarketplaceOffer not implemented") } func (UnimplementedGatewayServiceServer) CreateMarketplaceRental(context.Context, *CreateMarketplaceRentalRequest) (*CreateMarketplaceRentalResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateMarketplaceRental not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateMarketplaceRental not implemented") } func (UnimplementedGatewayServiceServer) ListMarketplaceRentals(context.Context, *ListMarketplaceRentalsRequest) (*ListMarketplaceRentalsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListMarketplaceRentals not implemented") + return nil, status.Error(codes.Unimplemented, "method ListMarketplaceRentals not implemented") } func (UnimplementedGatewayServiceServer) DeleteMarketplaceRental(context.Context, *DeleteMarketplaceRentalRequest) (*DeleteMarketplaceRentalResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteMarketplaceRental not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteMarketplaceRental not implemented") } func (UnimplementedGatewayServiceServer) LaunchRentalWorkload(context.Context, *LaunchRentalWorkloadRequest) (*LaunchRentalWorkloadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method LaunchRentalWorkload not implemented") + return nil, status.Error(codes.Unimplemented, "method LaunchRentalWorkload not implemented") } func (UnimplementedGatewayServiceServer) ListMarketplaceMachines(context.Context, *ListMarketplaceMachinesRequest) (*ListMarketplaceMachinesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListMarketplaceMachines not implemented") + return nil, status.Error(codes.Unimplemented, "method ListMarketplaceMachines not implemented") } func (UnimplementedGatewayServiceServer) ListMachineContainers(context.Context, *ListMachineContainersRequest) (*ListMachineContainersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListMachineContainers not implemented") + return nil, status.Error(codes.Unimplemented, "method ListMachineContainers not implemented") } func (UnimplementedGatewayServiceServer) CreatePool(context.Context, *CreatePoolRequest) (*CreatePoolResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreatePool not implemented") + return nil, status.Error(codes.Unimplemented, "method CreatePool not implemented") } func (UnimplementedGatewayServiceServer) DeletePool(context.Context, *DeletePoolRequest) (*DeletePoolResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeletePool not implemented") + return nil, status.Error(codes.Unimplemented, "method DeletePool not implemented") } func (UnimplementedGatewayServiceServer) ExtendPoolCapacity(context.Context, *ExtendPoolCapacityRequest) (*ExtendPoolCapacityResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ExtendPoolCapacity not implemented") + return nil, status.Error(codes.Unimplemented, "method ExtendPoolCapacity not implemented") } func (UnimplementedGatewayServiceServer) CreatePoolJoinToken(context.Context, *CreatePoolJoinTokenRequest) (*CreatePoolJoinTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreatePoolJoinToken not implemented") + return nil, status.Error(codes.Unimplemented, "method CreatePoolJoinToken not implemented") } func (UnimplementedGatewayServiceServer) RevokePoolJoinToken(context.Context, *RevokePoolJoinTokenRequest) (*RevokePoolJoinTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevokePoolJoinToken not implemented") + return nil, status.Error(codes.Unimplemented, "method RevokePoolJoinToken not implemented") } func (UnimplementedGatewayServiceServer) GetPoolJoinCommand(context.Context, *GetPoolJoinCommandRequest) (*GetPoolJoinCommandResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetPoolJoinCommand not implemented") + return nil, status.Error(codes.Unimplemented, "method GetPoolJoinCommand not implemented") } func (UnimplementedGatewayServiceServer) ListPoolMachines(context.Context, *ListPoolMachinesRequest) (*ListPoolMachinesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListPoolMachines not implemented") + return nil, status.Error(codes.Unimplemented, "method ListPoolMachines not implemented") } func (UnimplementedGatewayServiceServer) DownloadMachineSSHKey(context.Context, *DownloadMachineSSHKeyRequest) (*DownloadMachineSSHKeyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DownloadMachineSSHKey not implemented") @@ -1171,66 +1190,73 @@ func (UnimplementedGatewayServiceServer) ActivateMachineSSHKey(context.Context, return nil, status.Errorf(codes.Unimplemented, "method ActivateMachineSSHKey not implemented") } func (UnimplementedGatewayServiceServer) JoinAgent(context.Context, *JoinAgentRequest) (*JoinAgentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method JoinAgent not implemented") + return nil, status.Error(codes.Unimplemented, "method JoinAgent not implemented") } func (UnimplementedGatewayServiceServer) RequestAgentTransportCredential(context.Context, *RequestAgentTransportCredentialRequest) (*RequestAgentTransportCredentialResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RequestAgentTransportCredential not implemented") + return nil, status.Error(codes.Unimplemented, "method RequestAgentTransportCredential not implemented") +} +func (UnimplementedGatewayServiceServer) CreateNodeEnrollment(context.Context, *CreateNodeEnrollmentRequest) (*CreateNodeEnrollmentResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CreateNodeEnrollment not implemented") +} +func (UnimplementedGatewayServiceServer) DeleteNodeEnrollment(context.Context, *DeleteNodeEnrollmentRequest) (*DeleteNodeEnrollmentResponse, error) { + return nil, status.Error(codes.Unimplemented, "method DeleteNodeEnrollment not implemented") } func (UnimplementedGatewayServiceServer) ListAgentRoutes(context.Context, *ListAgentRoutesRequest) (*ListAgentRoutesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAgentRoutes not implemented") + return nil, status.Error(codes.Unimplemented, "method ListAgentRoutes not implemented") } func (UnimplementedGatewayServiceServer) UpdateAgentRouteStatus(context.Context, *UpdateAgentRouteStatusRequest) (*UpdateAgentRouteStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAgentRouteStatus not implemented") + return nil, status.Error(codes.Unimplemented, "method UpdateAgentRouteStatus not implemented") } func (UnimplementedGatewayServiceServer) UpdateAgentSSHStatus(context.Context, *UpdateAgentSSHStatusRequest) (*UpdateAgentSSHStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateAgentSSHStatus not implemented") } func (UnimplementedGatewayServiceServer) UpdateAgentAvailability(context.Context, *UpdateAgentAvailabilityRequest) (*UpdateAgentAvailabilityResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateAgentAvailability not implemented") + return nil, status.Error(codes.Unimplemented, "method UpdateAgentAvailability not implemented") } -func (UnimplementedGatewayServiceServer) StreamAgent(*StreamAgentRequest, GatewayService_StreamAgentServer) error { - return status.Errorf(codes.Unimplemented, "method StreamAgent not implemented") +func (UnimplementedGatewayServiceServer) StreamAgent(*StreamAgentRequest, grpc.ServerStreamingServer[StreamAgentResponse]) error { + return status.Error(codes.Unimplemented, "method StreamAgent not implemented") } -func (UnimplementedGatewayServiceServer) StreamAgentTelemetry(GatewayService_StreamAgentTelemetryServer) error { - return status.Errorf(codes.Unimplemented, "method StreamAgentTelemetry not implemented") +func (UnimplementedGatewayServiceServer) StreamAgentTelemetry(grpc.ClientStreamingServer[AgentTelemetryRequest, AgentTelemetryResponse]) error { + return status.Error(codes.Unimplemented, "method StreamAgentTelemetry not implemented") } func (UnimplementedGatewayServiceServer) ListMachines(context.Context, *ListMachinesRequest) (*ListMachinesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListMachines not implemented") + return nil, status.Error(codes.Unimplemented, "method ListMachines not implemented") } func (UnimplementedGatewayServiceServer) CreateMachine(context.Context, *CreateMachineRequest) (*CreateMachineResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateMachine not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateMachine not implemented") } func (UnimplementedGatewayServiceServer) DeleteMachine(context.Context, *DeleteMachineRequest) (*DeleteMachineResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteMachine not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteMachine not implemented") } func (UnimplementedGatewayServiceServer) ListTokens(context.Context, *ListTokensRequest) (*ListTokensResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListTokens not implemented") + return nil, status.Error(codes.Unimplemented, "method ListTokens not implemented") } func (UnimplementedGatewayServiceServer) CreateToken(context.Context, *CreateTokenRequest) (*CreateTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateToken not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateToken not implemented") } func (UnimplementedGatewayServiceServer) ToggleToken(context.Context, *ToggleTokenRequest) (*ToggleTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ToggleToken not implemented") + return nil, status.Error(codes.Unimplemented, "method ToggleToken not implemented") } func (UnimplementedGatewayServiceServer) DeleteToken(context.Context, *DeleteTokenRequest) (*DeleteTokenResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteToken not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteToken not implemented") } func (UnimplementedGatewayServiceServer) ListWorkers(context.Context, *ListWorkersRequest) (*ListWorkersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListWorkers not implemented") + return nil, status.Error(codes.Unimplemented, "method ListWorkers not implemented") } func (UnimplementedGatewayServiceServer) CordonWorker(context.Context, *CordonWorkerRequest) (*CordonWorkerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CordonWorker not implemented") + return nil, status.Error(codes.Unimplemented, "method CordonWorker not implemented") } func (UnimplementedGatewayServiceServer) UncordonWorker(context.Context, *UncordonWorkerRequest) (*UncordonWorkerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UncordonWorker not implemented") + return nil, status.Error(codes.Unimplemented, "method UncordonWorker not implemented") } func (UnimplementedGatewayServiceServer) DrainWorker(context.Context, *DrainWorkerRequest) (*DrainWorkerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DrainWorker not implemented") + return nil, status.Error(codes.Unimplemented, "method DrainWorker not implemented") } func (UnimplementedGatewayServiceServer) ExportWorkspaceConfig(context.Context, *ExportWorkspaceConfigRequest) (*ExportWorkspaceConfigResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ExportWorkspaceConfig not implemented") + return nil, status.Error(codes.Unimplemented, "method ExportWorkspaceConfig not implemented") } func (UnimplementedGatewayServiceServer) mustEmbedUnimplementedGatewayServiceServer() {} +func (UnimplementedGatewayServiceServer) testEmbeddedByValue() {} // UnsafeGatewayServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to GatewayServiceServer will @@ -1240,6 +1266,13 @@ type UnsafeGatewayServiceServer interface { } func RegisterGatewayServiceServer(s grpc.ServiceRegistrar, srv GatewayServiceServer) { + // If the following call panics, it indicates UnimplementedGatewayServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&GatewayService_ServiceDesc, srv) } @@ -1316,30 +1349,11 @@ func _GatewayService_CreateObject_Handler(srv interface{}, ctx context.Context, } func _GatewayService_PutObjectStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GatewayServiceServer).PutObjectStream(&gatewayServicePutObjectStreamServer{stream}) + return srv.(GatewayServiceServer).PutObjectStream(&grpc.GenericServerStream[PutObjectRequest, PutObjectResponse]{ServerStream: stream}) } -type GatewayService_PutObjectStreamServer interface { - SendAndClose(*PutObjectResponse) error - Recv() (*PutObjectRequest, error) - grpc.ServerStream -} - -type gatewayServicePutObjectStreamServer struct { - grpc.ServerStream -} - -func (x *gatewayServicePutObjectStreamServer) SendAndClose(m *PutObjectResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *gatewayServicePutObjectStreamServer) Recv() (*PutObjectRequest, error) { - m := new(PutObjectRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_PutObjectStreamServer = grpc.ClientStreamingServer[PutObjectRequest, PutObjectResponse] func _GatewayService_CheckpointContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CheckpointContainerRequest) @@ -1396,30 +1410,11 @@ func _GatewayService_StopContainer_Handler(srv interface{}, ctx context.Context, } func _GatewayService_AttachToContainer_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GatewayServiceServer).AttachToContainer(&gatewayServiceAttachToContainerServer{stream}) -} - -type GatewayService_AttachToContainerServer interface { - Send(*AttachToContainerResponse) error - Recv() (*ContainerStreamMessage, error) - grpc.ServerStream + return srv.(GatewayServiceServer).AttachToContainer(&grpc.GenericServerStream[ContainerStreamMessage, AttachToContainerResponse]{ServerStream: stream}) } -type gatewayServiceAttachToContainerServer struct { - grpc.ServerStream -} - -func (x *gatewayServiceAttachToContainerServer) Send(m *AttachToContainerResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *gatewayServiceAttachToContainerServer) Recv() (*ContainerStreamMessage, error) { - m := new(ContainerStreamMessage) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_AttachToContainerServer = grpc.BidiStreamingServer[ContainerStreamMessage, AttachToContainerResponse] func _GatewayService_StartTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(StartTaskRequest) @@ -2213,6 +2208,42 @@ func _GatewayService_RequestAgentTransportCredential_Handler(srv interface{}, ct return interceptor(ctx, in, info, handler) } +func _GatewayService_CreateNodeEnrollment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateNodeEnrollmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayServiceServer).CreateNodeEnrollment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: GatewayService_CreateNodeEnrollment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayServiceServer).CreateNodeEnrollment(ctx, req.(*CreateNodeEnrollmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GatewayService_DeleteNodeEnrollment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteNodeEnrollmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayServiceServer).DeleteNodeEnrollment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: GatewayService_DeleteNodeEnrollment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayServiceServer).DeleteNodeEnrollment(ctx, req.(*DeleteNodeEnrollmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _GatewayService_ListAgentRoutes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListAgentRoutesRequest) if err := dec(in); err != nil { @@ -2290,47 +2321,18 @@ func _GatewayService_StreamAgent_Handler(srv interface{}, stream grpc.ServerStre if err := stream.RecvMsg(m); err != nil { return err } - return srv.(GatewayServiceServer).StreamAgent(m, &gatewayServiceStreamAgentServer{stream}) + return srv.(GatewayServiceServer).StreamAgent(m, &grpc.GenericServerStream[StreamAgentRequest, StreamAgentResponse]{ServerStream: stream}) } -type GatewayService_StreamAgentServer interface { - Send(*StreamAgentResponse) error - grpc.ServerStream -} - -type gatewayServiceStreamAgentServer struct { - grpc.ServerStream -} - -func (x *gatewayServiceStreamAgentServer) Send(m *StreamAgentResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_StreamAgentServer = grpc.ServerStreamingServer[StreamAgentResponse] func _GatewayService_StreamAgentTelemetry_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GatewayServiceServer).StreamAgentTelemetry(&gatewayServiceStreamAgentTelemetryServer{stream}) -} - -type GatewayService_StreamAgentTelemetryServer interface { - SendAndClose(*AgentTelemetryResponse) error - Recv() (*AgentTelemetryRequest, error) - grpc.ServerStream -} - -type gatewayServiceStreamAgentTelemetryServer struct { - grpc.ServerStream -} - -func (x *gatewayServiceStreamAgentTelemetryServer) SendAndClose(m *AgentTelemetryResponse) error { - return x.ServerStream.SendMsg(m) + return srv.(GatewayServiceServer).StreamAgentTelemetry(&grpc.GenericServerStream[AgentTelemetryRequest, AgentTelemetryResponse]{ServerStream: stream}) } -func (x *gatewayServiceStreamAgentTelemetryServer) Recv() (*AgentTelemetryRequest, error) { - m := new(AgentTelemetryRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type GatewayService_StreamAgentTelemetryServer = grpc.ClientStreamingServer[AgentTelemetryRequest, AgentTelemetryResponse] func _GatewayService_ListMachines_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListMachinesRequest) @@ -2759,6 +2761,14 @@ var GatewayService_ServiceDesc = grpc.ServiceDesc{ MethodName: "RequestAgentTransportCredential", Handler: _GatewayService_RequestAgentTransportCredential_Handler, }, + { + MethodName: "CreateNodeEnrollment", + Handler: _GatewayService_CreateNodeEnrollment_Handler, + }, + { + MethodName: "DeleteNodeEnrollment", + Handler: _GatewayService_DeleteNodeEnrollment_Handler, + }, { MethodName: "ListAgentRoutes", Handler: _GatewayService_ListAgentRoutes_Handler, diff --git a/proto/pod.pb.go b/proto/pod.pb.go index 012009bbb..5a94c861c 100644 --- a/proto/pod.pb.go +++ b/proto/pod.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.25.1 +// protoc v3.21.12 // source: pod.proto package proto diff --git a/proto/pod_grpc.pb.go b/proto/pod_grpc.pb.go index c44ee2ace..98e8f29ec 100644 --- a/proto/pod_grpc.pb.go +++ b/proto/pod_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.1 +// - protoc v3.21.12 // source: pod.proto package proto diff --git a/proto/thunder.pb.go b/proto/thunder.pb.go new file mode 100644 index 000000000..ae498a8c2 --- /dev/null +++ b/proto/thunder.pb.go @@ -0,0 +1,297 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v3.21.12 +// source: thunder.proto + +package proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +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 CreateClientEnrollmentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateClientEnrollmentRequest) Reset() { + *x = CreateClientEnrollmentRequest{} + mi := &file_thunder_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateClientEnrollmentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateClientEnrollmentRequest) ProtoMessage() {} + +func (x *CreateClientEnrollmentRequest) ProtoReflect() protoreflect.Message { + mi := &file_thunder_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateClientEnrollmentRequest.ProtoReflect.Descriptor instead. +func (*CreateClientEnrollmentRequest) Descriptor() ([]byte, []int) { + return file_thunder_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateClientEnrollmentRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type CreateClientEnrollmentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + InstallCommand string `protobuf:"bytes,3,opt,name=install_command,json=installCommand,proto3" json:"install_command,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateClientEnrollmentResponse) Reset() { + *x = CreateClientEnrollmentResponse{} + mi := &file_thunder_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateClientEnrollmentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateClientEnrollmentResponse) ProtoMessage() {} + +func (x *CreateClientEnrollmentResponse) ProtoReflect() protoreflect.Message { + mi := &file_thunder_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateClientEnrollmentResponse.ProtoReflect.Descriptor instead. +func (*CreateClientEnrollmentResponse) Descriptor() ([]byte, []int) { + return file_thunder_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateClientEnrollmentResponse) GetOk() bool { + if x != nil { + return x.Ok + } + return false +} + +func (x *CreateClientEnrollmentResponse) GetErrorMsg() string { + if x != nil { + return x.ErrorMsg + } + return "" +} + +func (x *CreateClientEnrollmentResponse) GetInstallCommand() string { + if x != nil { + return x.InstallCommand + } + return "" +} + +type DeleteClientEnrollmentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteClientEnrollmentRequest) Reset() { + *x = DeleteClientEnrollmentRequest{} + mi := &file_thunder_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteClientEnrollmentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteClientEnrollmentRequest) ProtoMessage() {} + +func (x *DeleteClientEnrollmentRequest) ProtoReflect() protoreflect.Message { + mi := &file_thunder_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteClientEnrollmentRequest.ProtoReflect.Descriptor instead. +func (*DeleteClientEnrollmentRequest) Descriptor() ([]byte, []int) { + return file_thunder_proto_rawDescGZIP(), []int{2} +} + +func (x *DeleteClientEnrollmentRequest) GetContainerId() string { + if x != nil { + return x.ContainerId + } + return "" +} + +type DeleteClientEnrollmentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteClientEnrollmentResponse) Reset() { + *x = DeleteClientEnrollmentResponse{} + mi := &file_thunder_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteClientEnrollmentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteClientEnrollmentResponse) ProtoMessage() {} + +func (x *DeleteClientEnrollmentResponse) ProtoReflect() protoreflect.Message { + mi := &file_thunder_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteClientEnrollmentResponse.ProtoReflect.Descriptor instead. +func (*DeleteClientEnrollmentResponse) Descriptor() ([]byte, []int) { + return file_thunder_proto_rawDescGZIP(), []int{3} +} + +func (x *DeleteClientEnrollmentResponse) GetOk() bool { + if x != nil { + return x.Ok + } + return false +} + +func (x *DeleteClientEnrollmentResponse) GetErrorMsg() string { + if x != nil { + return x.ErrorMsg + } + return "" +} + +var File_thunder_proto protoreflect.FileDescriptor + +const file_thunder_proto_rawDesc = "" + + "\n" + + "\rthunder.proto\x12\athunder\"B\n" + + "\x1dCreateClientEnrollmentRequest\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\"v\n" + + "\x1eCreateClientEnrollmentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\terror_msg\x18\x02 \x01(\tR\berrorMsg\x12'\n" + + "\x0finstall_command\x18\x03 \x01(\tR\x0einstallCommand\"B\n" + + "\x1dDeleteClientEnrollmentRequest\x12!\n" + + "\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\"M\n" + + "\x1eDeleteClientEnrollmentResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1b\n" + + "\terror_msg\x18\x02 \x01(\tR\berrorMsg2\xe6\x01\n" + + "\x0eThunderService\x12i\n" + + "\x16CreateClientEnrollment\x12&.thunder.CreateClientEnrollmentRequest\x1a'.thunder.CreateClientEnrollmentResponse\x12i\n" + + "\x16DeleteClientEnrollment\x12&.thunder.DeleteClientEnrollmentRequest\x1a'.thunder.DeleteClientEnrollmentResponseB#Z!github.com/beam-cloud/beta9/protob\x06proto3" + +var ( + file_thunder_proto_rawDescOnce sync.Once + file_thunder_proto_rawDescData []byte +) + +func file_thunder_proto_rawDescGZIP() []byte { + file_thunder_proto_rawDescOnce.Do(func() { + file_thunder_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_thunder_proto_rawDesc), len(file_thunder_proto_rawDesc))) + }) + return file_thunder_proto_rawDescData +} + +var file_thunder_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_thunder_proto_goTypes = []any{ + (*CreateClientEnrollmentRequest)(nil), // 0: thunder.CreateClientEnrollmentRequest + (*CreateClientEnrollmentResponse)(nil), // 1: thunder.CreateClientEnrollmentResponse + (*DeleteClientEnrollmentRequest)(nil), // 2: thunder.DeleteClientEnrollmentRequest + (*DeleteClientEnrollmentResponse)(nil), // 3: thunder.DeleteClientEnrollmentResponse +} +var file_thunder_proto_depIdxs = []int32{ + 0, // 0: thunder.ThunderService.CreateClientEnrollment:input_type -> thunder.CreateClientEnrollmentRequest + 2, // 1: thunder.ThunderService.DeleteClientEnrollment:input_type -> thunder.DeleteClientEnrollmentRequest + 1, // 2: thunder.ThunderService.CreateClientEnrollment:output_type -> thunder.CreateClientEnrollmentResponse + 3, // 3: thunder.ThunderService.DeleteClientEnrollment:output_type -> thunder.DeleteClientEnrollmentResponse + 2, // [2:4] is the sub-list for method output_type + 0, // [0:2] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_thunder_proto_init() } +func file_thunder_proto_init() { + if File_thunder_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_thunder_proto_rawDesc), len(file_thunder_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_thunder_proto_goTypes, + DependencyIndexes: file_thunder_proto_depIdxs, + MessageInfos: file_thunder_proto_msgTypes, + }.Build() + File_thunder_proto = out.File + file_thunder_proto_goTypes = nil + file_thunder_proto_depIdxs = nil +} diff --git a/proto/thunder_grpc.pb.go b/proto/thunder_grpc.pb.go new file mode 100644 index 000000000..6f4904471 --- /dev/null +++ b/proto/thunder_grpc.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.2 +// - protoc v3.21.12 +// source: thunder.proto + +package proto + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + ThunderService_CreateClientEnrollment_FullMethodName = "/thunder.ThunderService/CreateClientEnrollment" + ThunderService_DeleteClientEnrollment_FullMethodName = "/thunder.ThunderService/DeleteClientEnrollment" +) + +// ThunderServiceClient is the client API for ThunderService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ThunderServiceClient interface { + CreateClientEnrollment(ctx context.Context, in *CreateClientEnrollmentRequest, opts ...grpc.CallOption) (*CreateClientEnrollmentResponse, error) + DeleteClientEnrollment(ctx context.Context, in *DeleteClientEnrollmentRequest, opts ...grpc.CallOption) (*DeleteClientEnrollmentResponse, error) +} + +type thunderServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewThunderServiceClient(cc grpc.ClientConnInterface) ThunderServiceClient { + return &thunderServiceClient{cc} +} + +func (c *thunderServiceClient) CreateClientEnrollment(ctx context.Context, in *CreateClientEnrollmentRequest, opts ...grpc.CallOption) (*CreateClientEnrollmentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateClientEnrollmentResponse) + err := c.cc.Invoke(ctx, ThunderService_CreateClientEnrollment_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *thunderServiceClient) DeleteClientEnrollment(ctx context.Context, in *DeleteClientEnrollmentRequest, opts ...grpc.CallOption) (*DeleteClientEnrollmentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeleteClientEnrollmentResponse) + err := c.cc.Invoke(ctx, ThunderService_DeleteClientEnrollment_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ThunderServiceServer is the server API for ThunderService service. +// All implementations must embed UnimplementedThunderServiceServer +// for forward compatibility. +type ThunderServiceServer interface { + CreateClientEnrollment(context.Context, *CreateClientEnrollmentRequest) (*CreateClientEnrollmentResponse, error) + DeleteClientEnrollment(context.Context, *DeleteClientEnrollmentRequest) (*DeleteClientEnrollmentResponse, error) + mustEmbedUnimplementedThunderServiceServer() +} + +// UnimplementedThunderServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedThunderServiceServer struct{} + +func (UnimplementedThunderServiceServer) CreateClientEnrollment(context.Context, *CreateClientEnrollmentRequest) (*CreateClientEnrollmentResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CreateClientEnrollment not implemented") +} +func (UnimplementedThunderServiceServer) DeleteClientEnrollment(context.Context, *DeleteClientEnrollmentRequest) (*DeleteClientEnrollmentResponse, error) { + return nil, status.Error(codes.Unimplemented, "method DeleteClientEnrollment not implemented") +} +func (UnimplementedThunderServiceServer) mustEmbedUnimplementedThunderServiceServer() {} +func (UnimplementedThunderServiceServer) testEmbeddedByValue() {} + +// UnsafeThunderServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ThunderServiceServer will +// result in compilation errors. +type UnsafeThunderServiceServer interface { + mustEmbedUnimplementedThunderServiceServer() +} + +func RegisterThunderServiceServer(s grpc.ServiceRegistrar, srv ThunderServiceServer) { + // If the following call panics, it indicates UnimplementedThunderServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&ThunderService_ServiceDesc, srv) +} + +func _ThunderService_CreateClientEnrollment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateClientEnrollmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ThunderServiceServer).CreateClientEnrollment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ThunderService_CreateClientEnrollment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ThunderServiceServer).CreateClientEnrollment(ctx, req.(*CreateClientEnrollmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ThunderService_DeleteClientEnrollment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteClientEnrollmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ThunderServiceServer).DeleteClientEnrollment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ThunderService_DeleteClientEnrollment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ThunderServiceServer).DeleteClientEnrollment(ctx, req.(*DeleteClientEnrollmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ThunderService_ServiceDesc is the grpc.ServiceDesc for ThunderService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ThunderService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "thunder.ThunderService", + HandlerType: (*ThunderServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateClientEnrollment", + Handler: _ThunderService_CreateClientEnrollment_Handler, + }, + { + MethodName: "DeleteClientEnrollment", + Handler: _ThunderService_DeleteClientEnrollment_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "thunder.proto", +} diff --git a/proto/types.pb.go b/proto/types.pb.go index 7cad271c4..4b6c57408 100644 --- a/proto/types.pb.go +++ b/proto/types.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.25.1 +// protoc v3.21.12 // source: types.proto package proto diff --git a/proto/worker_repo.pb.go b/proto/worker_repo.pb.go index eb6633d4c..372cbb762 100644 --- a/proto/worker_repo.pb.go +++ b/proto/worker_repo.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 -// protoc v4.25.1 +// protoc v3.21.12 // source: worker_repo.proto package proto diff --git a/proto/worker_repo_grpc.pb.go b/proto/worker_repo_grpc.pb.go index 87b249ee0..9f3f8d8cc 100644 --- a/proto/worker_repo_grpc.pb.go +++ b/proto/worker_repo_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.1 +// - protoc v3.21.12 // source: worker_repo.proto package proto diff --git a/sdk/src/beta9/clients/gateway/__init__.py b/sdk/src/beta9/clients/gateway/__init__.py index c778d9b31..a64cff45b 100644 --- a/sdk/src/beta9/clients/gateway/__init__.py +++ b/sdk/src/beta9/clients/gateway/__init__.py @@ -1807,6 +1807,7 @@ class AgentPoolRuntimeConfig(betterproto.Message): durable_disks_path: str = betterproto.string_field(7) cache: "AgentPoolCacheConfig" = betterproto.message_field(8) config_group: str = betterproto.string_field(9) + gpu_virtualized: bool = betterproto.bool_field(10) class GatewayServiceStub(SyncServiceStub):