// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.22.0 // protoc v3.12.2 // source: google/cloud/dataproc/v1beta2/workflow_templates.proto package dataproc import ( context "context" reflect "reflect" sync "sync" proto "github.com/golang/protobuf/proto" empty "github.com/golang/protobuf/ptypes/empty" timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" longrunning "google.golang.org/genproto/googleapis/longrunning" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" ) 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) ) // This is a compile-time assertion that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 // The operation state. type WorkflowMetadata_State int32 const ( // Unused. WorkflowMetadata_UNKNOWN WorkflowMetadata_State = 0 // The operation has been created. WorkflowMetadata_PENDING WorkflowMetadata_State = 1 // The operation is running. WorkflowMetadata_RUNNING WorkflowMetadata_State = 2 // The operation is done; either cancelled or completed. WorkflowMetadata_DONE WorkflowMetadata_State = 3 ) // Enum value maps for WorkflowMetadata_State. var ( WorkflowMetadata_State_name = map[int32]string{ 0: "UNKNOWN", 1: "PENDING", 2: "RUNNING", 3: "DONE", } WorkflowMetadata_State_value = map[string]int32{ "UNKNOWN": 0, "PENDING": 1, "RUNNING": 2, "DONE": 3, } ) func (x WorkflowMetadata_State) Enum() *WorkflowMetadata_State { p := new(WorkflowMetadata_State) *p = x return p } func (x WorkflowMetadata_State) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkflowMetadata_State) Descriptor() protoreflect.EnumDescriptor { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_enumTypes[0].Descriptor() } func (WorkflowMetadata_State) Type() protoreflect.EnumType { return &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_enumTypes[0] } func (x WorkflowMetadata_State) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkflowMetadata_State.Descriptor instead. func (WorkflowMetadata_State) EnumDescriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{9, 0} } // The workflow node state. type WorkflowNode_NodeState int32 const ( // State is unspecified. WorkflowNode_NODE_STATUS_UNSPECIFIED WorkflowNode_NodeState = 0 // The node is awaiting prerequisite node to finish. WorkflowNode_BLOCKED WorkflowNode_NodeState = 1 // The node is runnable but not running. WorkflowNode_RUNNABLE WorkflowNode_NodeState = 2 // The node is running. WorkflowNode_RUNNING WorkflowNode_NodeState = 3 // The node completed successfully. WorkflowNode_COMPLETED WorkflowNode_NodeState = 4 // The node failed. A node can be marked FAILED because // its ancestor or peer failed. WorkflowNode_FAILED WorkflowNode_NodeState = 5 ) // Enum value maps for WorkflowNode_NodeState. var ( WorkflowNode_NodeState_name = map[int32]string{ 0: "NODE_STATUS_UNSPECIFIED", 1: "BLOCKED", 2: "RUNNABLE", 3: "RUNNING", 4: "COMPLETED", 5: "FAILED", } WorkflowNode_NodeState_value = map[string]int32{ "NODE_STATUS_UNSPECIFIED": 0, "BLOCKED": 1, "RUNNABLE": 2, "RUNNING": 3, "COMPLETED": 4, "FAILED": 5, } ) func (x WorkflowNode_NodeState) Enum() *WorkflowNode_NodeState { p := new(WorkflowNode_NodeState) *p = x return p } func (x WorkflowNode_NodeState) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkflowNode_NodeState) Descriptor() protoreflect.EnumDescriptor { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_enumTypes[1].Descriptor() } func (WorkflowNode_NodeState) Type() protoreflect.EnumType { return &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_enumTypes[1] } func (x WorkflowNode_NodeState) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkflowNode_NodeState.Descriptor instead. func (WorkflowNode_NodeState) EnumDescriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{12, 0} } // A Dataproc workflow template resource. type WorkflowTemplate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The template id. // // The id must contain only letters (a-z, A-Z), numbers (0-9), // underscores (_), and hyphens (-). Cannot begin or end with underscore // or hyphen. Must consist of between 3 and 50 characters. // // . Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` // Output only. The resource name of the workflow template, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates`, the resource name of the // template has the following format: // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` // // * For `projects.locations.workflowTemplates`, the resource name of the // template has the following format: // `projects/{project_id}/locations/{location}/workflowTemplates/{template_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. Used to perform a consistent read-modify-write. // // This field should be left blank for a `CreateWorkflowTemplate` request. It // is required for an `UpdateWorkflowTemplate` request, and must match the // current server version. A typical update template flow would fetch the // current template with a `GetWorkflowTemplate` request, which will return // the current template with the `version` field filled in with the // current server version. The user updates other fields in the template, // then returns it as part of the `UpdateWorkflowTemplate` request. Version int32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` // Output only. The time template was created. CreateTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The time template was last updated. UpdateTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // Optional. The labels to associate with this template. These labels // will be propagated to all jobs and clusters created by the workflow // instance. // // Label **keys** must contain 1 to 63 characters, and must conform to // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). // // Label **values** may be empty, but, if present, must contain 1 to 63 // characters, and must conform to // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). // // No more than 32 labels can be associated with a template. Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Required. WorkflowTemplate scheduling information. Placement *WorkflowTemplatePlacement `protobuf:"bytes,7,opt,name=placement,proto3" json:"placement,omitempty"` // Required. The Directed Acyclic Graph of Jobs to submit. Jobs []*OrderedJob `protobuf:"bytes,8,rep,name=jobs,proto3" json:"jobs,omitempty"` // Optional. Template parameters whose values are substituted into the // template. Values for parameters must be provided when the template is // instantiated. Parameters []*TemplateParameter `protobuf:"bytes,9,rep,name=parameters,proto3" json:"parameters,omitempty"` } func (x *WorkflowTemplate) Reset() { *x = WorkflowTemplate{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkflowTemplate) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkflowTemplate) ProtoMessage() {} func (x *WorkflowTemplate) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkflowTemplate.ProtoReflect.Descriptor instead. func (*WorkflowTemplate) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{0} } func (x *WorkflowTemplate) GetId() string { if x != nil { return x.Id } return "" } func (x *WorkflowTemplate) GetName() string { if x != nil { return x.Name } return "" } func (x *WorkflowTemplate) GetVersion() int32 { if x != nil { return x.Version } return 0 } func (x *WorkflowTemplate) GetCreateTime() *timestamp.Timestamp { if x != nil { return x.CreateTime } return nil } func (x *WorkflowTemplate) GetUpdateTime() *timestamp.Timestamp { if x != nil { return x.UpdateTime } return nil } func (x *WorkflowTemplate) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } func (x *WorkflowTemplate) GetPlacement() *WorkflowTemplatePlacement { if x != nil { return x.Placement } return nil } func (x *WorkflowTemplate) GetJobs() []*OrderedJob { if x != nil { return x.Jobs } return nil } func (x *WorkflowTemplate) GetParameters() []*TemplateParameter { if x != nil { return x.Parameters } return nil } // Specifies workflow execution target. // // Either `managed_cluster` or `cluster_selector` is required. type WorkflowTemplatePlacement struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Specifies where workflow executes; either on a managed // cluster or an existing cluster chosen by labels. // // Types that are assignable to Placement: // *WorkflowTemplatePlacement_ManagedCluster // *WorkflowTemplatePlacement_ClusterSelector Placement isWorkflowTemplatePlacement_Placement `protobuf_oneof:"placement"` } func (x *WorkflowTemplatePlacement) Reset() { *x = WorkflowTemplatePlacement{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkflowTemplatePlacement) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkflowTemplatePlacement) ProtoMessage() {} func (x *WorkflowTemplatePlacement) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkflowTemplatePlacement.ProtoReflect.Descriptor instead. func (*WorkflowTemplatePlacement) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{1} } func (m *WorkflowTemplatePlacement) GetPlacement() isWorkflowTemplatePlacement_Placement { if m != nil { return m.Placement } return nil } func (x *WorkflowTemplatePlacement) GetManagedCluster() *ManagedCluster { if x, ok := x.GetPlacement().(*WorkflowTemplatePlacement_ManagedCluster); ok { return x.ManagedCluster } return nil } func (x *WorkflowTemplatePlacement) GetClusterSelector() *ClusterSelector { if x, ok := x.GetPlacement().(*WorkflowTemplatePlacement_ClusterSelector); ok { return x.ClusterSelector } return nil } type isWorkflowTemplatePlacement_Placement interface { isWorkflowTemplatePlacement_Placement() } type WorkflowTemplatePlacement_ManagedCluster struct { // Optional. A cluster that is managed by the workflow. ManagedCluster *ManagedCluster `protobuf:"bytes,1,opt,name=managed_cluster,json=managedCluster,proto3,oneof"` } type WorkflowTemplatePlacement_ClusterSelector struct { // Optional. A selector that chooses target cluster for jobs based // on metadata. // // The selector is evaluated at the time each job is submitted. ClusterSelector *ClusterSelector `protobuf:"bytes,2,opt,name=cluster_selector,json=clusterSelector,proto3,oneof"` } func (*WorkflowTemplatePlacement_ManagedCluster) isWorkflowTemplatePlacement_Placement() {} func (*WorkflowTemplatePlacement_ClusterSelector) isWorkflowTemplatePlacement_Placement() {} // Cluster that is managed by the workflow. type ManagedCluster struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The cluster name prefix. A unique cluster name will be formed by // appending a random suffix. // // The name must contain only lower-case letters (a-z), numbers (0-9), // and hyphens (-). Must begin with a letter. Cannot begin or end with // hyphen. Must consist of between 2 and 35 characters. ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // Required. The cluster configuration. Config *ClusterConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` // Optional. The labels to associate with this cluster. // // Label keys must be between 1 and 63 characters long, and must conform to // the following PCRE regular expression: // [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62} // // Label values must be between 1 and 63 characters long, and must conform to // the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} // // No more than 32 labels can be associated with a given cluster. Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ManagedCluster) Reset() { *x = ManagedCluster{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ManagedCluster) String() string { return protoimpl.X.MessageStringOf(x) } func (*ManagedCluster) ProtoMessage() {} func (x *ManagedCluster) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ManagedCluster.ProtoReflect.Descriptor instead. func (*ManagedCluster) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{2} } func (x *ManagedCluster) GetClusterName() string { if x != nil { return x.ClusterName } return "" } func (x *ManagedCluster) GetConfig() *ClusterConfig { if x != nil { return x.Config } return nil } func (x *ManagedCluster) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } // A selector that chooses target cluster for jobs based on metadata. type ClusterSelector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Optional. The zone where workflow process executes. This parameter does not // affect the selection of the cluster. // // If unspecified, the zone of the first cluster matching the selector // is used. Zone string `protobuf:"bytes,1,opt,name=zone,proto3" json:"zone,omitempty"` // Required. The cluster labels. Cluster must have all labels // to match. ClusterLabels map[string]string `protobuf:"bytes,2,rep,name=cluster_labels,json=clusterLabels,proto3" json:"cluster_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *ClusterSelector) Reset() { *x = ClusterSelector{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClusterSelector) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClusterSelector) ProtoMessage() {} func (x *ClusterSelector) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ClusterSelector.ProtoReflect.Descriptor instead. func (*ClusterSelector) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{3} } func (x *ClusterSelector) GetZone() string { if x != nil { return x.Zone } return "" } func (x *ClusterSelector) GetClusterLabels() map[string]string { if x != nil { return x.ClusterLabels } return nil } // A job executed by the workflow. type OrderedJob struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The step id. The id must be unique among all jobs // within the template. // // The step id is used as prefix for job id, as job // `goog-dataproc-workflow-step-id` label, and in // [prerequisiteStepIds][google.cloud.dataproc.v1beta2.OrderedJob.prerequisite_step_ids] field from other // steps. // // The id must contain only letters (a-z, A-Z), numbers (0-9), // underscores (_), and hyphens (-). Cannot begin or end with underscore // or hyphen. Must consist of between 3 and 50 characters. StepId string `protobuf:"bytes,1,opt,name=step_id,json=stepId,proto3" json:"step_id,omitempty"` // Required. The job definition. // // Types that are assignable to JobType: // *OrderedJob_HadoopJob // *OrderedJob_SparkJob // *OrderedJob_PysparkJob // *OrderedJob_HiveJob // *OrderedJob_PigJob // *OrderedJob_SparkRJob // *OrderedJob_SparkSqlJob // *OrderedJob_PrestoJob JobType isOrderedJob_JobType `protobuf_oneof:"job_type"` // Optional. The labels to associate with this job. // // Label keys must be between 1 and 63 characters long, and must conform to // the following regular expression: // [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62} // // Label values must be between 1 and 63 characters long, and must conform to // the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} // // No more than 32 labels can be associated with a given job. Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Optional. Job scheduling configuration. Scheduling *JobScheduling `protobuf:"bytes,9,opt,name=scheduling,proto3" json:"scheduling,omitempty"` // Optional. The optional list of prerequisite job step_ids. // If not specified, the job will start at the beginning of workflow. PrerequisiteStepIds []string `protobuf:"bytes,10,rep,name=prerequisite_step_ids,json=prerequisiteStepIds,proto3" json:"prerequisite_step_ids,omitempty"` } func (x *OrderedJob) Reset() { *x = OrderedJob{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrderedJob) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrderedJob) ProtoMessage() {} func (x *OrderedJob) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OrderedJob.ProtoReflect.Descriptor instead. func (*OrderedJob) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{4} } func (x *OrderedJob) GetStepId() string { if x != nil { return x.StepId } return "" } func (m *OrderedJob) GetJobType() isOrderedJob_JobType { if m != nil { return m.JobType } return nil } func (x *OrderedJob) GetHadoopJob() *HadoopJob { if x, ok := x.GetJobType().(*OrderedJob_HadoopJob); ok { return x.HadoopJob } return nil } func (x *OrderedJob) GetSparkJob() *SparkJob { if x, ok := x.GetJobType().(*OrderedJob_SparkJob); ok { return x.SparkJob } return nil } func (x *OrderedJob) GetPysparkJob() *PySparkJob { if x, ok := x.GetJobType().(*OrderedJob_PysparkJob); ok { return x.PysparkJob } return nil } func (x *OrderedJob) GetHiveJob() *HiveJob { if x, ok := x.GetJobType().(*OrderedJob_HiveJob); ok { return x.HiveJob } return nil } func (x *OrderedJob) GetPigJob() *PigJob { if x, ok := x.GetJobType().(*OrderedJob_PigJob); ok { return x.PigJob } return nil } func (x *OrderedJob) GetSparkRJob() *SparkRJob { if x, ok := x.GetJobType().(*OrderedJob_SparkRJob); ok { return x.SparkRJob } return nil } func (x *OrderedJob) GetSparkSqlJob() *SparkSqlJob { if x, ok := x.GetJobType().(*OrderedJob_SparkSqlJob); ok { return x.SparkSqlJob } return nil } func (x *OrderedJob) GetPrestoJob() *PrestoJob { if x, ok := x.GetJobType().(*OrderedJob_PrestoJob); ok { return x.PrestoJob } return nil } func (x *OrderedJob) GetLabels() map[string]string { if x != nil { return x.Labels } return nil } func (x *OrderedJob) GetScheduling() *JobScheduling { if x != nil { return x.Scheduling } return nil } func (x *OrderedJob) GetPrerequisiteStepIds() []string { if x != nil { return x.PrerequisiteStepIds } return nil } type isOrderedJob_JobType interface { isOrderedJob_JobType() } type OrderedJob_HadoopJob struct { HadoopJob *HadoopJob `protobuf:"bytes,2,opt,name=hadoop_job,json=hadoopJob,proto3,oneof"` } type OrderedJob_SparkJob struct { SparkJob *SparkJob `protobuf:"bytes,3,opt,name=spark_job,json=sparkJob,proto3,oneof"` } type OrderedJob_PysparkJob struct { PysparkJob *PySparkJob `protobuf:"bytes,4,opt,name=pyspark_job,json=pysparkJob,proto3,oneof"` } type OrderedJob_HiveJob struct { HiveJob *HiveJob `protobuf:"bytes,5,opt,name=hive_job,json=hiveJob,proto3,oneof"` } type OrderedJob_PigJob struct { PigJob *PigJob `protobuf:"bytes,6,opt,name=pig_job,json=pigJob,proto3,oneof"` } type OrderedJob_SparkRJob struct { // Spark R job SparkRJob *SparkRJob `protobuf:"bytes,11,opt,name=spark_r_job,json=sparkRJob,proto3,oneof"` } type OrderedJob_SparkSqlJob struct { SparkSqlJob *SparkSqlJob `protobuf:"bytes,7,opt,name=spark_sql_job,json=sparkSqlJob,proto3,oneof"` } type OrderedJob_PrestoJob struct { // Presto job PrestoJob *PrestoJob `protobuf:"bytes,12,opt,name=presto_job,json=prestoJob,proto3,oneof"` } func (*OrderedJob_HadoopJob) isOrderedJob_JobType() {} func (*OrderedJob_SparkJob) isOrderedJob_JobType() {} func (*OrderedJob_PysparkJob) isOrderedJob_JobType() {} func (*OrderedJob_HiveJob) isOrderedJob_JobType() {} func (*OrderedJob_PigJob) isOrderedJob_JobType() {} func (*OrderedJob_SparkRJob) isOrderedJob_JobType() {} func (*OrderedJob_SparkSqlJob) isOrderedJob_JobType() {} func (*OrderedJob_PrestoJob) isOrderedJob_JobType() {} // A configurable parameter that replaces one or more fields in the template. // Parameterizable fields: // - Labels // - File uris // - Job properties // - Job arguments // - Script variables // - Main class (in HadoopJob and SparkJob) // - Zone (in ClusterSelector) type TemplateParameter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. Parameter name. // The parameter name is used as the key, and paired with the // parameter value, which are passed to the template when the template // is instantiated. // The name must contain only capital letters (A-Z), numbers (0-9), and // underscores (_), and must not start with a number. The maximum length is // 40 characters. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. Paths to all fields that the parameter replaces. // A field is allowed to appear in at most one parameter's list of field // paths. // // A field path is similar in syntax to a [google.protobuf.FieldMask][google.protobuf.FieldMask]. // For example, a field path that references the zone field of a workflow // template's cluster selector would be specified as // `placement.clusterSelector.zone`. // // Also, field paths can reference fields using the following syntax: // // * Values in maps can be referenced by key: // * labels['key'] // * placement.clusterSelector.clusterLabels['key'] // * placement.managedCluster.labels['key'] // * placement.clusterSelector.clusterLabels['key'] // * jobs['step-id'].labels['key'] // // * Jobs in the jobs list can be referenced by step-id: // * jobs['step-id'].hadoopJob.mainJarFileUri // * jobs['step-id'].hiveJob.queryFileUri // * jobs['step-id'].pySparkJob.mainPythonFileUri // * jobs['step-id'].hadoopJob.jarFileUris[0] // * jobs['step-id'].hadoopJob.archiveUris[0] // * jobs['step-id'].hadoopJob.fileUris[0] // * jobs['step-id'].pySparkJob.pythonFileUris[0] // // * Items in repeated fields can be referenced by a zero-based index: // * jobs['step-id'].sparkJob.args[0] // // * Other examples: // * jobs['step-id'].hadoopJob.properties['key'] // * jobs['step-id'].hadoopJob.args[0] // * jobs['step-id'].hiveJob.scriptVariables['key'] // * jobs['step-id'].hadoopJob.mainJarFileUri // * placement.clusterSelector.zone // // It may not be possible to parameterize maps and repeated fields in their // entirety since only individual map values and individual items in repeated // fields can be referenced. For example, the following field paths are // invalid: // // - placement.clusterSelector.clusterLabels // - jobs['step-id'].sparkJob.args Fields []string `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` // Optional. Brief description of the parameter. // Must not exceed 1024 characters. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Optional. Validation rules to be applied to this parameter's value. Validation *ParameterValidation `protobuf:"bytes,4,opt,name=validation,proto3" json:"validation,omitempty"` } func (x *TemplateParameter) Reset() { *x = TemplateParameter{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TemplateParameter) String() string { return protoimpl.X.MessageStringOf(x) } func (*TemplateParameter) ProtoMessage() {} func (x *TemplateParameter) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TemplateParameter.ProtoReflect.Descriptor instead. func (*TemplateParameter) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{5} } func (x *TemplateParameter) GetName() string { if x != nil { return x.Name } return "" } func (x *TemplateParameter) GetFields() []string { if x != nil { return x.Fields } return nil } func (x *TemplateParameter) GetDescription() string { if x != nil { return x.Description } return "" } func (x *TemplateParameter) GetValidation() *ParameterValidation { if x != nil { return x.Validation } return nil } // Configuration for parameter validation. type ParameterValidation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The type of validation to be performed. // // Types that are assignable to ValidationType: // *ParameterValidation_Regex // *ParameterValidation_Values ValidationType isParameterValidation_ValidationType `protobuf_oneof:"validation_type"` } func (x *ParameterValidation) Reset() { *x = ParameterValidation{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ParameterValidation) String() string { return protoimpl.X.MessageStringOf(x) } func (*ParameterValidation) ProtoMessage() {} func (x *ParameterValidation) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ParameterValidation.ProtoReflect.Descriptor instead. func (*ParameterValidation) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{6} } func (m *ParameterValidation) GetValidationType() isParameterValidation_ValidationType { if m != nil { return m.ValidationType } return nil } func (x *ParameterValidation) GetRegex() *RegexValidation { if x, ok := x.GetValidationType().(*ParameterValidation_Regex); ok { return x.Regex } return nil } func (x *ParameterValidation) GetValues() *ValueValidation { if x, ok := x.GetValidationType().(*ParameterValidation_Values); ok { return x.Values } return nil } type isParameterValidation_ValidationType interface { isParameterValidation_ValidationType() } type ParameterValidation_Regex struct { // Validation based on regular expressions. Regex *RegexValidation `protobuf:"bytes,1,opt,name=regex,proto3,oneof"` } type ParameterValidation_Values struct { // Validation based on a list of allowed values. Values *ValueValidation `protobuf:"bytes,2,opt,name=values,proto3,oneof"` } func (*ParameterValidation_Regex) isParameterValidation_ValidationType() {} func (*ParameterValidation_Values) isParameterValidation_ValidationType() {} // Validation based on regular expressions. type RegexValidation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. RE2 regular expressions used to validate the parameter's value. // The value must match the regex in its entirety (substring // matches are not sufficient). Regexes []string `protobuf:"bytes,1,rep,name=regexes,proto3" json:"regexes,omitempty"` } func (x *RegexValidation) Reset() { *x = RegexValidation{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RegexValidation) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegexValidation) ProtoMessage() {} func (x *RegexValidation) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegexValidation.ProtoReflect.Descriptor instead. func (*RegexValidation) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{7} } func (x *RegexValidation) GetRegexes() []string { if x != nil { return x.Regexes } return nil } // Validation based on a list of allowed values. type ValueValidation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. List of allowed values for the parameter. Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` } func (x *ValueValidation) Reset() { *x = ValueValidation{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ValueValidation) String() string { return protoimpl.X.MessageStringOf(x) } func (*ValueValidation) ProtoMessage() {} func (x *ValueValidation) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ValueValidation.ProtoReflect.Descriptor instead. func (*ValueValidation) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{8} } func (x *ValueValidation) GetValues() []string { if x != nil { return x.Values } return nil } // A Dataproc workflow template resource. type WorkflowMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The resource name of the workflow template as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates`, the resource name of the // template has the following format: // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` // // * For `projects.locations.workflowTemplates`, the resource name of the // template has the following format: // `projects/{project_id}/locations/{location}/workflowTemplates/{template_id}` Template string `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` // Output only. The version of template at the time of // workflow instantiation. Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` // Output only. The create cluster operation metadata. CreateCluster *ClusterOperation `protobuf:"bytes,3,opt,name=create_cluster,json=createCluster,proto3" json:"create_cluster,omitempty"` // Output only. The workflow graph. Graph *WorkflowGraph `protobuf:"bytes,4,opt,name=graph,proto3" json:"graph,omitempty"` // Output only. The delete cluster operation metadata. DeleteCluster *ClusterOperation `protobuf:"bytes,5,opt,name=delete_cluster,json=deleteCluster,proto3" json:"delete_cluster,omitempty"` // Output only. The workflow state. State WorkflowMetadata_State `protobuf:"varint,6,opt,name=state,proto3,enum=google.cloud.dataproc.v1beta2.WorkflowMetadata_State" json:"state,omitempty"` // Output only. The name of the target cluster. ClusterName string `protobuf:"bytes,7,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // Map from parameter names to values that were used for those parameters. Parameters map[string]string `protobuf:"bytes,8,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Output only. Workflow start time. StartTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // Output only. Workflow end time. EndTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // Output only. The UUID of target cluster. ClusterUuid string `protobuf:"bytes,11,opt,name=cluster_uuid,json=clusterUuid,proto3" json:"cluster_uuid,omitempty"` } func (x *WorkflowMetadata) Reset() { *x = WorkflowMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkflowMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkflowMetadata) ProtoMessage() {} func (x *WorkflowMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkflowMetadata.ProtoReflect.Descriptor instead. func (*WorkflowMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{9} } func (x *WorkflowMetadata) GetTemplate() string { if x != nil { return x.Template } return "" } func (x *WorkflowMetadata) GetVersion() int32 { if x != nil { return x.Version } return 0 } func (x *WorkflowMetadata) GetCreateCluster() *ClusterOperation { if x != nil { return x.CreateCluster } return nil } func (x *WorkflowMetadata) GetGraph() *WorkflowGraph { if x != nil { return x.Graph } return nil } func (x *WorkflowMetadata) GetDeleteCluster() *ClusterOperation { if x != nil { return x.DeleteCluster } return nil } func (x *WorkflowMetadata) GetState() WorkflowMetadata_State { if x != nil { return x.State } return WorkflowMetadata_UNKNOWN } func (x *WorkflowMetadata) GetClusterName() string { if x != nil { return x.ClusterName } return "" } func (x *WorkflowMetadata) GetParameters() map[string]string { if x != nil { return x.Parameters } return nil } func (x *WorkflowMetadata) GetStartTime() *timestamp.Timestamp { if x != nil { return x.StartTime } return nil } func (x *WorkflowMetadata) GetEndTime() *timestamp.Timestamp { if x != nil { return x.EndTime } return nil } func (x *WorkflowMetadata) GetClusterUuid() string { if x != nil { return x.ClusterUuid } return "" } // The cluster operation triggered by a workflow. type ClusterOperation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The id of the cluster operation. OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` // Output only. Error, if operation failed. Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // Output only. Indicates the operation is done. Done bool `protobuf:"varint,3,opt,name=done,proto3" json:"done,omitempty"` } func (x *ClusterOperation) Reset() { *x = ClusterOperation{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ClusterOperation) String() string { return protoimpl.X.MessageStringOf(x) } func (*ClusterOperation) ProtoMessage() {} func (x *ClusterOperation) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ClusterOperation.ProtoReflect.Descriptor instead. func (*ClusterOperation) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{10} } func (x *ClusterOperation) GetOperationId() string { if x != nil { return x.OperationId } return "" } func (x *ClusterOperation) GetError() string { if x != nil { return x.Error } return "" } func (x *ClusterOperation) GetDone() bool { if x != nil { return x.Done } return false } // The workflow graph. type WorkflowGraph struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The workflow nodes. Nodes []*WorkflowNode `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` } func (x *WorkflowGraph) Reset() { *x = WorkflowGraph{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkflowGraph) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkflowGraph) ProtoMessage() {} func (x *WorkflowGraph) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkflowGraph.ProtoReflect.Descriptor instead. func (*WorkflowGraph) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{11} } func (x *WorkflowGraph) GetNodes() []*WorkflowNode { if x != nil { return x.Nodes } return nil } // The workflow node. type WorkflowNode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. The name of the node. StepId string `protobuf:"bytes,1,opt,name=step_id,json=stepId,proto3" json:"step_id,omitempty"` // Output only. Node's prerequisite nodes. PrerequisiteStepIds []string `protobuf:"bytes,2,rep,name=prerequisite_step_ids,json=prerequisiteStepIds,proto3" json:"prerequisite_step_ids,omitempty"` // Output only. The job id; populated after the node enters RUNNING state. JobId string `protobuf:"bytes,3,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // Output only. The node state. State WorkflowNode_NodeState `protobuf:"varint,5,opt,name=state,proto3,enum=google.cloud.dataproc.v1beta2.WorkflowNode_NodeState" json:"state,omitempty"` // Output only. The error detail. Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` } func (x *WorkflowNode) Reset() { *x = WorkflowNode{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkflowNode) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkflowNode) ProtoMessage() {} func (x *WorkflowNode) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkflowNode.ProtoReflect.Descriptor instead. func (*WorkflowNode) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{12} } func (x *WorkflowNode) GetStepId() string { if x != nil { return x.StepId } return "" } func (x *WorkflowNode) GetPrerequisiteStepIds() []string { if x != nil { return x.PrerequisiteStepIds } return nil } func (x *WorkflowNode) GetJobId() string { if x != nil { return x.JobId } return "" } func (x *WorkflowNode) GetState() WorkflowNode_NodeState { if x != nil { return x.State } return WorkflowNode_NODE_STATUS_UNSPECIFIED } func (x *WorkflowNode) GetError() string { if x != nil { return x.Error } return "" } // A request to create a workflow template. type CreateWorkflowTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the region or location, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates,create`, the resource name of the // region has the following format: // `projects/{project_id}/regions/{region}` // // * For `projects.locations.workflowTemplates.create`, the resource name of // the location has the following format: // `projects/{project_id}/locations/{location}` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. The Dataproc workflow template to create. Template *WorkflowTemplate `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` } func (x *CreateWorkflowTemplateRequest) Reset() { *x = CreateWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWorkflowTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWorkflowTemplateRequest) ProtoMessage() {} func (x *CreateWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*CreateWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{13} } func (x *CreateWorkflowTemplateRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *CreateWorkflowTemplateRequest) GetTemplate() *WorkflowTemplate { if x != nil { return x.Template } return nil } // A request to fetch a workflow template. type GetWorkflowTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the workflow template, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates.get`, the resource name of the // template has the following format: // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` // // * For `projects.locations.workflowTemplates.get`, the resource name of the // template has the following format: // `projects/{project_id}/locations/{location}/workflowTemplates/{template_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. The version of workflow template to retrieve. Only previously // instantiated versions can be retrieved. // // If unspecified, retrieves the current version. Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` } func (x *GetWorkflowTemplateRequest) Reset() { *x = GetWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkflowTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkflowTemplateRequest) ProtoMessage() {} func (x *GetWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*GetWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{14} } func (x *GetWorkflowTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *GetWorkflowTemplateRequest) GetVersion() int32 { if x != nil { return x.Version } return 0 } // A request to instantiate a workflow template. type InstantiateWorkflowTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the workflow template, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates.instantiate`, the resource name // of the template has the following format: // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` // // * For `projects.locations.workflowTemplates.instantiate`, the resource name // of the template has the following format: // `projects/{project_id}/locations/{location}/workflowTemplates/{template_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. The version of workflow template to instantiate. If specified, // the workflow will be instantiated only if the current version of // the workflow template has the supplied version. // // This option cannot be used to instantiate a previous version of // workflow template. Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` // Deprecated. Please use `request_id` field instead. // // Deprecated: Do not use. InstanceId string `protobuf:"bytes,3,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` // Optional. A tag that prevents multiple concurrent workflow // instances with the same tag from running. This mitigates risk of // concurrent instances started due to retries. // // It is recommended to always set this value to a // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). // // The tag must contain only letters (a-z, A-Z), numbers (0-9), // underscores (_), and hyphens (-). The maximum length is 40 characters. RequestId string `protobuf:"bytes,5,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` // Optional. Map from parameter names to values that should be used for those // parameters. Values may not exceed 100 characters. Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *InstantiateWorkflowTemplateRequest) Reset() { *x = InstantiateWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InstantiateWorkflowTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*InstantiateWorkflowTemplateRequest) ProtoMessage() {} func (x *InstantiateWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use InstantiateWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*InstantiateWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{15} } func (x *InstantiateWorkflowTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *InstantiateWorkflowTemplateRequest) GetVersion() int32 { if x != nil { return x.Version } return 0 } // Deprecated: Do not use. func (x *InstantiateWorkflowTemplateRequest) GetInstanceId() string { if x != nil { return x.InstanceId } return "" } func (x *InstantiateWorkflowTemplateRequest) GetRequestId() string { if x != nil { return x.RequestId } return "" } func (x *InstantiateWorkflowTemplateRequest) GetParameters() map[string]string { if x != nil { return x.Parameters } return nil } // A request to instantiate an inline workflow template. type InstantiateInlineWorkflowTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the region or location, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates,instantiateinline`, the resource // name of the region has the following format: // `projects/{project_id}/regions/{region}` // // * For `projects.locations.workflowTemplates.instantiateinline`, the // resource name of the location has the following format: // `projects/{project_id}/locations/{location}` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. The workflow template to instantiate. Template *WorkflowTemplate `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // Deprecated. Please use `request_id` field instead. InstanceId string `protobuf:"bytes,3,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` // Optional. A tag that prevents multiple concurrent workflow // instances with the same tag from running. This mitigates risk of // concurrent instances started due to retries. // // It is recommended to always set this value to a // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). // // The tag must contain only letters (a-z, A-Z), numbers (0-9), // underscores (_), and hyphens (-). The maximum length is 40 characters. RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` } func (x *InstantiateInlineWorkflowTemplateRequest) Reset() { *x = InstantiateInlineWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InstantiateInlineWorkflowTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*InstantiateInlineWorkflowTemplateRequest) ProtoMessage() {} func (x *InstantiateInlineWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use InstantiateInlineWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*InstantiateInlineWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{16} } func (x *InstantiateInlineWorkflowTemplateRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *InstantiateInlineWorkflowTemplateRequest) GetTemplate() *WorkflowTemplate { if x != nil { return x.Template } return nil } func (x *InstantiateInlineWorkflowTemplateRequest) GetInstanceId() string { if x != nil { return x.InstanceId } return "" } func (x *InstantiateInlineWorkflowTemplateRequest) GetRequestId() string { if x != nil { return x.RequestId } return "" } // A request to update a workflow template. type UpdateWorkflowTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The updated workflow template. // // The `template.version` field must match the current version. Template *WorkflowTemplate `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` } func (x *UpdateWorkflowTemplateRequest) Reset() { *x = UpdateWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkflowTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkflowTemplateRequest) ProtoMessage() {} func (x *UpdateWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*UpdateWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{17} } func (x *UpdateWorkflowTemplateRequest) GetTemplate() *WorkflowTemplate { if x != nil { return x.Template } return nil } // A request to list workflow templates in a project. type ListWorkflowTemplatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the region or location, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates,list`, the resource // name of the region has the following format: // `projects/{project_id}/regions/{region}` // // * For `projects.locations.workflowTemplates.list`, the // resource name of the location has the following format: // `projects/{project_id}/locations/{location}` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. The maximum number of results to return in each response. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. The page token, returned by a previous call, to request the // next page of results. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } func (x *ListWorkflowTemplatesRequest) Reset() { *x = ListWorkflowTemplatesRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkflowTemplatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkflowTemplatesRequest) ProtoMessage() {} func (x *ListWorkflowTemplatesRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListWorkflowTemplatesRequest.ProtoReflect.Descriptor instead. func (*ListWorkflowTemplatesRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{18} } func (x *ListWorkflowTemplatesRequest) GetParent() string { if x != nil { return x.Parent } return "" } func (x *ListWorkflowTemplatesRequest) GetPageSize() int32 { if x != nil { return x.PageSize } return 0 } func (x *ListWorkflowTemplatesRequest) GetPageToken() string { if x != nil { return x.PageToken } return "" } // A response to a request to list workflow templates in a project. type ListWorkflowTemplatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Output only. WorkflowTemplates list. Templates []*WorkflowTemplate `protobuf:"bytes,1,rep,name=templates,proto3" json:"templates,omitempty"` // Output only. This token is included in the response if there are more // results to fetch. To fetch additional results, provide this value as the // page_token in a subsequent ListWorkflowTemplatesRequest. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } func (x *ListWorkflowTemplatesResponse) Reset() { *x = ListWorkflowTemplatesResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkflowTemplatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkflowTemplatesResponse) ProtoMessage() {} func (x *ListWorkflowTemplatesResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListWorkflowTemplatesResponse.ProtoReflect.Descriptor instead. func (*ListWorkflowTemplatesResponse) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{19} } func (x *ListWorkflowTemplatesResponse) GetTemplates() []*WorkflowTemplate { if x != nil { return x.Templates } return nil } func (x *ListWorkflowTemplatesResponse) GetNextPageToken() string { if x != nil { return x.NextPageToken } return "" } // A request to delete a workflow template. // // Currently started workflows will remain running. type DeleteWorkflowTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Required. The resource name of the workflow template, as described // in https://cloud.google.com/apis/design/resource_names. // // * For `projects.regions.workflowTemplates.delete`, the resource name // of the template has the following format: // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` // // * For `projects.locations.workflowTemplates.instantiate`, the resource name // of the template has the following format: // `projects/{project_id}/locations/{location}/workflowTemplates/{template_id}` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. The version of workflow template to delete. If specified, // will only delete the template if the current server version matches // specified version. Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` } func (x *DeleteWorkflowTemplateRequest) Reset() { *x = DeleteWorkflowTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteWorkflowTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteWorkflowTemplateRequest) ProtoMessage() {} func (x *DeleteWorkflowTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteWorkflowTemplateRequest.ProtoReflect.Descriptor instead. func (*DeleteWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP(), []int{20} } func (x *DeleteWorkflowTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *DeleteWorkflowTemplateRequest) GetVersion() int32 { if x != nil { return x.Version } return 0 } var File_google_cloud_dataproc_v1beta2_workflow_templates_proto protoreflect.FileDescriptor var file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDesc = []byte{ 0x0a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 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, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb3, 0x06, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0x55, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x3a, 0xca, 0x01, 0xea, 0x41, 0xc6, 0x01, 0x0a, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x49, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x12, 0x4d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x7d, 0x20, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x19, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x10, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x87, 0x02, 0x0a, 0x0e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0xd1, 0x01, 0x0a, 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x68, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0xa2, 0x07, 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x0a, 0x07, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x73, 0x74, 0x65, 0x70, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0a, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x48, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x09, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x46, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x08, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x4a, 0x6f, 0x62, 0x12, 0x4c, 0x0a, 0x0b, 0x70, 0x79, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x50, 0x79, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x79, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x4a, 0x6f, 0x62, 0x12, 0x43, 0x0a, 0x08, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x48, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x07, 0x68, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x40, 0x0a, 0x07, 0x70, 0x69, 0x67, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x50, 0x69, 0x67, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x06, 0x70, 0x69, 0x67, 0x4a, 0x6f, 0x62, 0x12, 0x4a, 0x0a, 0x0b, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x72, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x09, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x52, 0x4a, 0x6f, 0x62, 0x12, 0x50, 0x0a, 0x0d, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x53, 0x71, 0x6c, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x53, 0x71, 0x6c, 0x4a, 0x6f, 0x62, 0x12, 0x49, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x4a, 0x6f, 0x62, 0x12, 0x52, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x51, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x53, 0x74, 0x65, 0x70, 0x49, 0x64, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xba, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x48, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x65, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x65, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x67, 0x65, 0x78, 0x65, 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0xcd, 0x06, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x61, 0x70, 0x68, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x5b, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x75, 0x69, 0x64, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 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, 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, 0x38, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x6e, 0x0a, 0x10, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x57, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x46, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xdb, 0x02, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x74, 0x65, 0x70, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x53, 0x74, 0x65, 0x70, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6b, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x22, 0xbb, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x7c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xfa, 0x02, 0x0a, 0x22, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x71, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 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, 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, 0x86, 0x02, 0x0a, 0x28, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xe9, 0x11, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb0, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xa6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8c, 0x01, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x46, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0xda, 0x41, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x89, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x85, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe5, 0x02, 0x0a, 0x1b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x96, 0x01, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x5a, 0x4b, 0x22, 0x46, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xda, 0x41, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0xca, 0x41, 0x29, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x84, 0x03, 0x0a, 0x21, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb0, 0x01, 0x22, 0x4c, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x56, 0x22, 0x4a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0xda, 0x41, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0xca, 0x41, 0x29, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0xb0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, 0x1a, 0x41, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x4f, 0x1a, 0x43, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0xda, 0x41, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x9c, 0x02, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x5a, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xf6, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x85, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x2a, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x3c, 0x2a, 0x3a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x84, 0x01, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x42, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x32, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescOnce sync.Once file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescData = file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDesc ) func file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescGZIP() []byte { file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescOnce.Do(func() { file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescData) }) return file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDescData } var file_google_cloud_dataproc_v1beta2_workflow_templates_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_google_cloud_dataproc_v1beta2_workflow_templates_proto_goTypes = []interface{}{ (WorkflowMetadata_State)(0), // 0: google.cloud.dataproc.v1beta2.WorkflowMetadata.State (WorkflowNode_NodeState)(0), // 1: google.cloud.dataproc.v1beta2.WorkflowNode.NodeState (*WorkflowTemplate)(nil), // 2: google.cloud.dataproc.v1beta2.WorkflowTemplate (*WorkflowTemplatePlacement)(nil), // 3: google.cloud.dataproc.v1beta2.WorkflowTemplatePlacement (*ManagedCluster)(nil), // 4: google.cloud.dataproc.v1beta2.ManagedCluster (*ClusterSelector)(nil), // 5: google.cloud.dataproc.v1beta2.ClusterSelector (*OrderedJob)(nil), // 6: google.cloud.dataproc.v1beta2.OrderedJob (*TemplateParameter)(nil), // 7: google.cloud.dataproc.v1beta2.TemplateParameter (*ParameterValidation)(nil), // 8: google.cloud.dataproc.v1beta2.ParameterValidation (*RegexValidation)(nil), // 9: google.cloud.dataproc.v1beta2.RegexValidation (*ValueValidation)(nil), // 10: google.cloud.dataproc.v1beta2.ValueValidation (*WorkflowMetadata)(nil), // 11: google.cloud.dataproc.v1beta2.WorkflowMetadata (*ClusterOperation)(nil), // 12: google.cloud.dataproc.v1beta2.ClusterOperation (*WorkflowGraph)(nil), // 13: google.cloud.dataproc.v1beta2.WorkflowGraph (*WorkflowNode)(nil), // 14: google.cloud.dataproc.v1beta2.WorkflowNode (*CreateWorkflowTemplateRequest)(nil), // 15: google.cloud.dataproc.v1beta2.CreateWorkflowTemplateRequest (*GetWorkflowTemplateRequest)(nil), // 16: google.cloud.dataproc.v1beta2.GetWorkflowTemplateRequest (*InstantiateWorkflowTemplateRequest)(nil), // 17: google.cloud.dataproc.v1beta2.InstantiateWorkflowTemplateRequest (*InstantiateInlineWorkflowTemplateRequest)(nil), // 18: google.cloud.dataproc.v1beta2.InstantiateInlineWorkflowTemplateRequest (*UpdateWorkflowTemplateRequest)(nil), // 19: google.cloud.dataproc.v1beta2.UpdateWorkflowTemplateRequest (*ListWorkflowTemplatesRequest)(nil), // 20: google.cloud.dataproc.v1beta2.ListWorkflowTemplatesRequest (*ListWorkflowTemplatesResponse)(nil), // 21: google.cloud.dataproc.v1beta2.ListWorkflowTemplatesResponse (*DeleteWorkflowTemplateRequest)(nil), // 22: google.cloud.dataproc.v1beta2.DeleteWorkflowTemplateRequest nil, // 23: google.cloud.dataproc.v1beta2.WorkflowTemplate.LabelsEntry nil, // 24: google.cloud.dataproc.v1beta2.ManagedCluster.LabelsEntry nil, // 25: google.cloud.dataproc.v1beta2.ClusterSelector.ClusterLabelsEntry nil, // 26: google.cloud.dataproc.v1beta2.OrderedJob.LabelsEntry nil, // 27: google.cloud.dataproc.v1beta2.WorkflowMetadata.ParametersEntry nil, // 28: google.cloud.dataproc.v1beta2.InstantiateWorkflowTemplateRequest.ParametersEntry (*timestamp.Timestamp)(nil), // 29: google.protobuf.Timestamp (*ClusterConfig)(nil), // 30: google.cloud.dataproc.v1beta2.ClusterConfig (*HadoopJob)(nil), // 31: google.cloud.dataproc.v1beta2.HadoopJob (*SparkJob)(nil), // 32: google.cloud.dataproc.v1beta2.SparkJob (*PySparkJob)(nil), // 33: google.cloud.dataproc.v1beta2.PySparkJob (*HiveJob)(nil), // 34: google.cloud.dataproc.v1beta2.HiveJob (*PigJob)(nil), // 35: google.cloud.dataproc.v1beta2.PigJob (*SparkRJob)(nil), // 36: google.cloud.dataproc.v1beta2.SparkRJob (*SparkSqlJob)(nil), // 37: google.cloud.dataproc.v1beta2.SparkSqlJob (*PrestoJob)(nil), // 38: google.cloud.dataproc.v1beta2.PrestoJob (*JobScheduling)(nil), // 39: google.cloud.dataproc.v1beta2.JobScheduling (*longrunning.Operation)(nil), // 40: google.longrunning.Operation (*empty.Empty)(nil), // 41: google.protobuf.Empty } var file_google_cloud_dataproc_v1beta2_workflow_templates_proto_depIdxs = []int32{ 29, // 0: google.cloud.dataproc.v1beta2.WorkflowTemplate.create_time:type_name -> google.protobuf.Timestamp 29, // 1: google.cloud.dataproc.v1beta2.WorkflowTemplate.update_time:type_name -> google.protobuf.Timestamp 23, // 2: google.cloud.dataproc.v1beta2.WorkflowTemplate.labels:type_name -> google.cloud.dataproc.v1beta2.WorkflowTemplate.LabelsEntry 3, // 3: google.cloud.dataproc.v1beta2.WorkflowTemplate.placement:type_name -> google.cloud.dataproc.v1beta2.WorkflowTemplatePlacement 6, // 4: google.cloud.dataproc.v1beta2.WorkflowTemplate.jobs:type_name -> google.cloud.dataproc.v1beta2.OrderedJob 7, // 5: google.cloud.dataproc.v1beta2.WorkflowTemplate.parameters:type_name -> google.cloud.dataproc.v1beta2.TemplateParameter 4, // 6: google.cloud.dataproc.v1beta2.WorkflowTemplatePlacement.managed_cluster:type_name -> google.cloud.dataproc.v1beta2.ManagedCluster 5, // 7: google.cloud.dataproc.v1beta2.WorkflowTemplatePlacement.cluster_selector:type_name -> google.cloud.dataproc.v1beta2.ClusterSelector 30, // 8: google.cloud.dataproc.v1beta2.ManagedCluster.config:type_name -> google.cloud.dataproc.v1beta2.ClusterConfig 24, // 9: google.cloud.dataproc.v1beta2.ManagedCluster.labels:type_name -> google.cloud.dataproc.v1beta2.ManagedCluster.LabelsEntry 25, // 10: google.cloud.dataproc.v1beta2.ClusterSelector.cluster_labels:type_name -> google.cloud.dataproc.v1beta2.ClusterSelector.ClusterLabelsEntry 31, // 11: google.cloud.dataproc.v1beta2.OrderedJob.hadoop_job:type_name -> google.cloud.dataproc.v1beta2.HadoopJob 32, // 12: google.cloud.dataproc.v1beta2.OrderedJob.spark_job:type_name -> google.cloud.dataproc.v1beta2.SparkJob 33, // 13: google.cloud.dataproc.v1beta2.OrderedJob.pyspark_job:type_name -> google.cloud.dataproc.v1beta2.PySparkJob 34, // 14: google.cloud.dataproc.v1beta2.OrderedJob.hive_job:type_name -> google.cloud.dataproc.v1beta2.HiveJob 35, // 15: google.cloud.dataproc.v1beta2.OrderedJob.pig_job:type_name -> google.cloud.dataproc.v1beta2.PigJob 36, // 16: google.cloud.dataproc.v1beta2.OrderedJob.spark_r_job:type_name -> google.cloud.dataproc.v1beta2.SparkRJob 37, // 17: google.cloud.dataproc.v1beta2.OrderedJob.spark_sql_job:type_name -> google.cloud.dataproc.v1beta2.SparkSqlJob 38, // 18: google.cloud.dataproc.v1beta2.OrderedJob.presto_job:type_name -> google.cloud.dataproc.v1beta2.PrestoJob 26, // 19: google.cloud.dataproc.v1beta2.OrderedJob.labels:type_name -> google.cloud.dataproc.v1beta2.OrderedJob.LabelsEntry 39, // 20: google.cloud.dataproc.v1beta2.OrderedJob.scheduling:type_name -> google.cloud.dataproc.v1beta2.JobScheduling 8, // 21: google.cloud.dataproc.v1beta2.TemplateParameter.validation:type_name -> google.cloud.dataproc.v1beta2.ParameterValidation 9, // 22: google.cloud.dataproc.v1beta2.ParameterValidation.regex:type_name -> google.cloud.dataproc.v1beta2.RegexValidation 10, // 23: google.cloud.dataproc.v1beta2.ParameterValidation.values:type_name -> google.cloud.dataproc.v1beta2.ValueValidation 12, // 24: google.cloud.dataproc.v1beta2.WorkflowMetadata.create_cluster:type_name -> google.cloud.dataproc.v1beta2.ClusterOperation 13, // 25: google.cloud.dataproc.v1beta2.WorkflowMetadata.graph:type_name -> google.cloud.dataproc.v1beta2.WorkflowGraph 12, // 26: google.cloud.dataproc.v1beta2.WorkflowMetadata.delete_cluster:type_name -> google.cloud.dataproc.v1beta2.ClusterOperation 0, // 27: google.cloud.dataproc.v1beta2.WorkflowMetadata.state:type_name -> google.cloud.dataproc.v1beta2.WorkflowMetadata.State 27, // 28: google.cloud.dataproc.v1beta2.WorkflowMetadata.parameters:type_name -> google.cloud.dataproc.v1beta2.WorkflowMetadata.ParametersEntry 29, // 29: google.cloud.dataproc.v1beta2.WorkflowMetadata.start_time:type_name -> google.protobuf.Timestamp 29, // 30: google.cloud.dataproc.v1beta2.WorkflowMetadata.end_time:type_name -> google.protobuf.Timestamp 14, // 31: google.cloud.dataproc.v1beta2.WorkflowGraph.nodes:type_name -> google.cloud.dataproc.v1beta2.WorkflowNode 1, // 32: google.cloud.dataproc.v1beta2.WorkflowNode.state:type_name -> google.cloud.dataproc.v1beta2.WorkflowNode.NodeState 2, // 33: google.cloud.dataproc.v1beta2.CreateWorkflowTemplateRequest.template:type_name -> google.cloud.dataproc.v1beta2.WorkflowTemplate 28, // 34: google.cloud.dataproc.v1beta2.InstantiateWorkflowTemplateRequest.parameters:type_name -> google.cloud.dataproc.v1beta2.InstantiateWorkflowTemplateRequest.ParametersEntry 2, // 35: google.cloud.dataproc.v1beta2.InstantiateInlineWorkflowTemplateRequest.template:type_name -> google.cloud.dataproc.v1beta2.WorkflowTemplate 2, // 36: google.cloud.dataproc.v1beta2.UpdateWorkflowTemplateRequest.template:type_name -> google.cloud.dataproc.v1beta2.WorkflowTemplate 2, // 37: google.cloud.dataproc.v1beta2.ListWorkflowTemplatesResponse.templates:type_name -> google.cloud.dataproc.v1beta2.WorkflowTemplate 15, // 38: google.cloud.dataproc.v1beta2.WorkflowTemplateService.CreateWorkflowTemplate:input_type -> google.cloud.dataproc.v1beta2.CreateWorkflowTemplateRequest 16, // 39: google.cloud.dataproc.v1beta2.WorkflowTemplateService.GetWorkflowTemplate:input_type -> google.cloud.dataproc.v1beta2.GetWorkflowTemplateRequest 17, // 40: google.cloud.dataproc.v1beta2.WorkflowTemplateService.InstantiateWorkflowTemplate:input_type -> google.cloud.dataproc.v1beta2.InstantiateWorkflowTemplateRequest 18, // 41: google.cloud.dataproc.v1beta2.WorkflowTemplateService.InstantiateInlineWorkflowTemplate:input_type -> google.cloud.dataproc.v1beta2.InstantiateInlineWorkflowTemplateRequest 19, // 42: google.cloud.dataproc.v1beta2.WorkflowTemplateService.UpdateWorkflowTemplate:input_type -> google.cloud.dataproc.v1beta2.UpdateWorkflowTemplateRequest 20, // 43: google.cloud.dataproc.v1beta2.WorkflowTemplateService.ListWorkflowTemplates:input_type -> google.cloud.dataproc.v1beta2.ListWorkflowTemplatesRequest 22, // 44: google.cloud.dataproc.v1beta2.WorkflowTemplateService.DeleteWorkflowTemplate:input_type -> google.cloud.dataproc.v1beta2.DeleteWorkflowTemplateRequest 2, // 45: google.cloud.dataproc.v1beta2.WorkflowTemplateService.CreateWorkflowTemplate:output_type -> google.cloud.dataproc.v1beta2.WorkflowTemplate 2, // 46: google.cloud.dataproc.v1beta2.WorkflowTemplateService.GetWorkflowTemplate:output_type -> google.cloud.dataproc.v1beta2.WorkflowTemplate 40, // 47: google.cloud.dataproc.v1beta2.WorkflowTemplateService.InstantiateWorkflowTemplate:output_type -> google.longrunning.Operation 40, // 48: google.cloud.dataproc.v1beta2.WorkflowTemplateService.InstantiateInlineWorkflowTemplate:output_type -> google.longrunning.Operation 2, // 49: google.cloud.dataproc.v1beta2.WorkflowTemplateService.UpdateWorkflowTemplate:output_type -> google.cloud.dataproc.v1beta2.WorkflowTemplate 21, // 50: google.cloud.dataproc.v1beta2.WorkflowTemplateService.ListWorkflowTemplates:output_type -> google.cloud.dataproc.v1beta2.ListWorkflowTemplatesResponse 41, // 51: google.cloud.dataproc.v1beta2.WorkflowTemplateService.DeleteWorkflowTemplate:output_type -> google.protobuf.Empty 45, // [45:52] is the sub-list for method output_type 38, // [38:45] is the sub-list for method input_type 38, // [38:38] is the sub-list for extension type_name 38, // [38:38] is the sub-list for extension extendee 0, // [0:38] is the sub-list for field type_name } func init() { file_google_cloud_dataproc_v1beta2_workflow_templates_proto_init() } func file_google_cloud_dataproc_v1beta2_workflow_templates_proto_init() { if File_google_cloud_dataproc_v1beta2_workflow_templates_proto != nil { return } file_google_cloud_dataproc_v1beta2_clusters_proto_init() file_google_cloud_dataproc_v1beta2_jobs_proto_init() if !protoimpl.UnsafeEnabled { file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowTemplate); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowTemplatePlacement); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ManagedCluster); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterSelector); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrderedJob); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TemplateParameter); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParameterValidation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegexValidation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValueValidation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterOperation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowGraph); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkflowNode); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWorkflowTemplateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkflowTemplateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstantiateWorkflowTemplateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstantiateInlineWorkflowTemplateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkflowTemplateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkflowTemplatesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkflowTemplatesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWorkflowTemplateRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[1].OneofWrappers = []interface{}{ (*WorkflowTemplatePlacement_ManagedCluster)(nil), (*WorkflowTemplatePlacement_ClusterSelector)(nil), } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[4].OneofWrappers = []interface{}{ (*OrderedJob_HadoopJob)(nil), (*OrderedJob_SparkJob)(nil), (*OrderedJob_PysparkJob)(nil), (*OrderedJob_HiveJob)(nil), (*OrderedJob_PigJob)(nil), (*OrderedJob_SparkRJob)(nil), (*OrderedJob_SparkSqlJob)(nil), (*OrderedJob_PrestoJob)(nil), } file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes[6].OneofWrappers = []interface{}{ (*ParameterValidation_Regex)(nil), (*ParameterValidation_Values)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDesc, NumEnums: 2, NumMessages: 27, NumExtensions: 0, NumServices: 1, }, GoTypes: file_google_cloud_dataproc_v1beta2_workflow_templates_proto_goTypes, DependencyIndexes: file_google_cloud_dataproc_v1beta2_workflow_templates_proto_depIdxs, EnumInfos: file_google_cloud_dataproc_v1beta2_workflow_templates_proto_enumTypes, MessageInfos: file_google_cloud_dataproc_v1beta2_workflow_templates_proto_msgTypes, }.Build() File_google_cloud_dataproc_v1beta2_workflow_templates_proto = out.File file_google_cloud_dataproc_v1beta2_workflow_templates_proto_rawDesc = nil file_google_cloud_dataproc_v1beta2_workflow_templates_proto_goTypes = nil file_google_cloud_dataproc_v1beta2_workflow_templates_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion6 // WorkflowTemplateServiceClient is the client API for WorkflowTemplateService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type WorkflowTemplateServiceClient interface { // Creates new workflow template. CreateWorkflowTemplate(ctx context.Context, in *CreateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) // Retrieves the latest workflow template. // // Can retrieve previously instantiated template by specifying optional // version parameter. GetWorkflowTemplate(ctx context.Context, in *GetWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) // Instantiates a template and begins execution. // // The returned Operation can be used to track execution of // workflow by polling // [operations.get][google.longrunning.Operations.GetOperation]. // The Operation will complete when entire workflow is finished. // // The running workflow can be aborted via // [operations.cancel][google.longrunning.Operations.CancelOperation]. // This will cause any inflight jobs to be cancelled and workflow-owned // clusters to be deleted. // // The [Operation.metadata][google.longrunning.Operation.metadata] will be // [WorkflowMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#workflowmetadata). // Also see [Using // WorkflowMetadata](https://cloud.google.com/dataproc/docs/concepts/workflows/debugging#using_workflowmetadata). // // On successful completion, // [Operation.response][google.longrunning.Operation.response] will be // [Empty][google.protobuf.Empty]. InstantiateWorkflowTemplate(ctx context.Context, in *InstantiateWorkflowTemplateRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Instantiates a template and begins execution. // // This method is equivalent to executing the sequence // [CreateWorkflowTemplate][google.cloud.dataproc.v1beta2.WorkflowTemplateService.CreateWorkflowTemplate], [InstantiateWorkflowTemplate][google.cloud.dataproc.v1beta2.WorkflowTemplateService.InstantiateWorkflowTemplate], // [DeleteWorkflowTemplate][google.cloud.dataproc.v1beta2.WorkflowTemplateService.DeleteWorkflowTemplate]. // // The returned Operation can be used to track execution of // workflow by polling // [operations.get][google.longrunning.Operations.GetOperation]. // The Operation will complete when entire workflow is finished. // // The running workflow can be aborted via // [operations.cancel][google.longrunning.Operations.CancelOperation]. // This will cause any inflight jobs to be cancelled and workflow-owned // clusters to be deleted. // // The [Operation.metadata][google.longrunning.Operation.metadata] will be // [WorkflowMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#workflowmetadata). // Also see [Using // WorkflowMetadata](https://cloud.google.com/dataproc/docs/concepts/workflows/debugging#using_workflowmetadata). // // On successful completion, // [Operation.response][google.longrunning.Operation.response] will be // [Empty][google.protobuf.Empty]. InstantiateInlineWorkflowTemplate(ctx context.Context, in *InstantiateInlineWorkflowTemplateRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // Updates (replaces) workflow template. The updated template // must contain version that matches the current server version. UpdateWorkflowTemplate(ctx context.Context, in *UpdateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) // Lists workflows that match the specified filter in the request. ListWorkflowTemplates(ctx context.Context, in *ListWorkflowTemplatesRequest, opts ...grpc.CallOption) (*ListWorkflowTemplatesResponse, error) // Deletes a workflow template. It does not cancel in-progress workflows. DeleteWorkflowTemplate(ctx context.Context, in *DeleteWorkflowTemplateRequest, opts ...grpc.CallOption) (*empty.Empty, error) } type workflowTemplateServiceClient struct { cc grpc.ClientConnInterface } func NewWorkflowTemplateServiceClient(cc grpc.ClientConnInterface) WorkflowTemplateServiceClient { return &workflowTemplateServiceClient{cc} } func (c *workflowTemplateServiceClient) CreateWorkflowTemplate(ctx context.Context, in *CreateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) { out := new(WorkflowTemplate) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/CreateWorkflowTemplate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *workflowTemplateServiceClient) GetWorkflowTemplate(ctx context.Context, in *GetWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) { out := new(WorkflowTemplate) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/GetWorkflowTemplate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *workflowTemplateServiceClient) InstantiateWorkflowTemplate(ctx context.Context, in *InstantiateWorkflowTemplateRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { out := new(longrunning.Operation) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/InstantiateWorkflowTemplate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *workflowTemplateServiceClient) InstantiateInlineWorkflowTemplate(ctx context.Context, in *InstantiateInlineWorkflowTemplateRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { out := new(longrunning.Operation) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/InstantiateInlineWorkflowTemplate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *workflowTemplateServiceClient) UpdateWorkflowTemplate(ctx context.Context, in *UpdateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) { out := new(WorkflowTemplate) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/UpdateWorkflowTemplate", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *workflowTemplateServiceClient) ListWorkflowTemplates(ctx context.Context, in *ListWorkflowTemplatesRequest, opts ...grpc.CallOption) (*ListWorkflowTemplatesResponse, error) { out := new(ListWorkflowTemplatesResponse) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/ListWorkflowTemplates", in, out, opts...) if err != nil { return nil, err } return out, nil } func (c *workflowTemplateServiceClient) DeleteWorkflowTemplate(ctx context.Context, in *DeleteWorkflowTemplateRequest, opts ...grpc.CallOption) (*empty.Empty, error) { out := new(empty.Empty) err := c.cc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/DeleteWorkflowTemplate", in, out, opts...) if err != nil { return nil, err } return out, nil } // WorkflowTemplateServiceServer is the server API for WorkflowTemplateService service. type WorkflowTemplateServiceServer interface { // Creates new workflow template. CreateWorkflowTemplate(context.Context, *CreateWorkflowTemplateRequest) (*WorkflowTemplate, error) // Retrieves the latest workflow template. // // Can retrieve previously instantiated template by specifying optional // version parameter. GetWorkflowTemplate(context.Context, *GetWorkflowTemplateRequest) (*WorkflowTemplate, error) // Instantiates a template and begins execution. // // The returned Operation can be used to track execution of // workflow by polling // [operations.get][google.longrunning.Operations.GetOperation]. // The Operation will complete when entire workflow is finished. // // The running workflow can be aborted via // [operations.cancel][google.longrunning.Operations.CancelOperation]. // This will cause any inflight jobs to be cancelled and workflow-owned // clusters to be deleted. // // The [Operation.metadata][google.longrunning.Operation.metadata] will be // [WorkflowMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1beta2#workflowmetadata). // Also see [Using // WorkflowMetadata](https://cloud.google.com/dataproc/docs/concepts/workflows/debugging#using_workflowmetadata). // // On successful completion, // [Operation.response][google.longrunning.Operation.response] will be // [Empty][google.protobuf.Empty]. InstantiateWorkflowTemplate(context.Context, *InstantiateWorkflowTemplateRequest) (*longrunning.Operation, error) // Instantiates a template and begins execution. // // This method is equivalent to executing the sequence // [CreateWorkflowTemplate][google.cloud.dataproc.v1beta2.WorkflowTemplateService.CreateWorkflowTemplate], [InstantiateWorkflowTemplate][google.cloud.dataproc.v1beta2.WorkflowTemplateService.InstantiateWorkflowTemplate], // [DeleteWorkflowTemplate][google.cloud.dataproc.v1beta2.WorkflowTemplateService.DeleteWorkflowTemplate]. // // The returned Operation can be used to track execution of // workflow by polling // [operations.get][google.longrunning.Operations.GetOperation]. // The Operation will complete when entire workflow is finished. // // The running workflow can be aborted via // [operations.cancel][google.longrunning.Operations.CancelOperation]. // This will cause any inflight jobs to be cancelled and workflow-owned // clusters to be deleted. // // The [Operation.metadata][google.longrunning.Operation.metadata] will be // [WorkflowMetadata](https://cloud.google.com/dataproc/docs/reference/rpc/google.cloud.dataproc.v1#workflowmetadata). // Also see [Using // WorkflowMetadata](https://cloud.google.com/dataproc/docs/concepts/workflows/debugging#using_workflowmetadata). // // On successful completion, // [Operation.response][google.longrunning.Operation.response] will be // [Empty][google.protobuf.Empty]. InstantiateInlineWorkflowTemplate(context.Context, *InstantiateInlineWorkflowTemplateRequest) (*longrunning.Operation, error) // Updates (replaces) workflow template. The updated template // must contain version that matches the current server version. UpdateWorkflowTemplate(context.Context, *UpdateWorkflowTemplateRequest) (*WorkflowTemplate, error) // Lists workflows that match the specified filter in the request. ListWorkflowTemplates(context.Context, *ListWorkflowTemplatesRequest) (*ListWorkflowTemplatesResponse, error) // Deletes a workflow template. It does not cancel in-progress workflows. DeleteWorkflowTemplate(context.Context, *DeleteWorkflowTemplateRequest) (*empty.Empty, error) } // UnimplementedWorkflowTemplateServiceServer can be embedded to have forward compatible implementations. type UnimplementedWorkflowTemplateServiceServer struct { } func (*UnimplementedWorkflowTemplateServiceServer) CreateWorkflowTemplate(context.Context, *CreateWorkflowTemplateRequest) (*WorkflowTemplate, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateWorkflowTemplate not implemented") } func (*UnimplementedWorkflowTemplateServiceServer) GetWorkflowTemplate(context.Context, *GetWorkflowTemplateRequest) (*WorkflowTemplate, error) { return nil, status.Errorf(codes.Unimplemented, "method GetWorkflowTemplate not implemented") } func (*UnimplementedWorkflowTemplateServiceServer) InstantiateWorkflowTemplate(context.Context, *InstantiateWorkflowTemplateRequest) (*longrunning.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method InstantiateWorkflowTemplate not implemented") } func (*UnimplementedWorkflowTemplateServiceServer) InstantiateInlineWorkflowTemplate(context.Context, *InstantiateInlineWorkflowTemplateRequest) (*longrunning.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method InstantiateInlineWorkflowTemplate not implemented") } func (*UnimplementedWorkflowTemplateServiceServer) UpdateWorkflowTemplate(context.Context, *UpdateWorkflowTemplateRequest) (*WorkflowTemplate, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateWorkflowTemplate not implemented") } func (*UnimplementedWorkflowTemplateServiceServer) ListWorkflowTemplates(context.Context, *ListWorkflowTemplatesRequest) (*ListWorkflowTemplatesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListWorkflowTemplates not implemented") } func (*UnimplementedWorkflowTemplateServiceServer) DeleteWorkflowTemplate(context.Context, *DeleteWorkflowTemplateRequest) (*empty.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteWorkflowTemplate not implemented") } func RegisterWorkflowTemplateServiceServer(s *grpc.Server, srv WorkflowTemplateServiceServer) { s.RegisterService(&_WorkflowTemplateService_serviceDesc, srv) } func _WorkflowTemplateService_CreateWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateWorkflowTemplateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).CreateWorkflowTemplate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/CreateWorkflowTemplate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).CreateWorkflowTemplate(ctx, req.(*CreateWorkflowTemplateRequest)) } return interceptor(ctx, in, info, handler) } func _WorkflowTemplateService_GetWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetWorkflowTemplateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).GetWorkflowTemplate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/GetWorkflowTemplate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).GetWorkflowTemplate(ctx, req.(*GetWorkflowTemplateRequest)) } return interceptor(ctx, in, info, handler) } func _WorkflowTemplateService_InstantiateWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(InstantiateWorkflowTemplateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).InstantiateWorkflowTemplate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/InstantiateWorkflowTemplate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).InstantiateWorkflowTemplate(ctx, req.(*InstantiateWorkflowTemplateRequest)) } return interceptor(ctx, in, info, handler) } func _WorkflowTemplateService_InstantiateInlineWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(InstantiateInlineWorkflowTemplateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).InstantiateInlineWorkflowTemplate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/InstantiateInlineWorkflowTemplate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).InstantiateInlineWorkflowTemplate(ctx, req.(*InstantiateInlineWorkflowTemplateRequest)) } return interceptor(ctx, in, info, handler) } func _WorkflowTemplateService_UpdateWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateWorkflowTemplateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).UpdateWorkflowTemplate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/UpdateWorkflowTemplate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).UpdateWorkflowTemplate(ctx, req.(*UpdateWorkflowTemplateRequest)) } return interceptor(ctx, in, info, handler) } func _WorkflowTemplateService_ListWorkflowTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListWorkflowTemplatesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).ListWorkflowTemplates(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/ListWorkflowTemplates", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).ListWorkflowTemplates(ctx, req.(*ListWorkflowTemplatesRequest)) } return interceptor(ctx, in, info, handler) } func _WorkflowTemplateService_DeleteWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteWorkflowTemplateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(WorkflowTemplateServiceServer).DeleteWorkflowTemplate(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/DeleteWorkflowTemplate", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkflowTemplateServiceServer).DeleteWorkflowTemplate(ctx, req.(*DeleteWorkflowTemplateRequest)) } return interceptor(ctx, in, info, handler) } var _WorkflowTemplateService_serviceDesc = grpc.ServiceDesc{ ServiceName: "google.cloud.dataproc.v1beta2.WorkflowTemplateService", HandlerType: (*WorkflowTemplateServiceServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "CreateWorkflowTemplate", Handler: _WorkflowTemplateService_CreateWorkflowTemplate_Handler, }, { MethodName: "GetWorkflowTemplate", Handler: _WorkflowTemplateService_GetWorkflowTemplate_Handler, }, { MethodName: "InstantiateWorkflowTemplate", Handler: _WorkflowTemplateService_InstantiateWorkflowTemplate_Handler, }, { MethodName: "InstantiateInlineWorkflowTemplate", Handler: _WorkflowTemplateService_InstantiateInlineWorkflowTemplate_Handler, }, { MethodName: "UpdateWorkflowTemplate", Handler: _WorkflowTemplateService_UpdateWorkflowTemplate_Handler, }, { MethodName: "ListWorkflowTemplates", Handler: _WorkflowTemplateService_ListWorkflowTemplates_Handler, }, { MethodName: "DeleteWorkflowTemplate", Handler: _WorkflowTemplateService_DeleteWorkflowTemplate_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "google/cloud/dataproc/v1beta2/workflow_templates.proto", }