diff --git a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go
index 79c7808906..c28eef4696 100644
--- a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go
+++ b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go
@@ -11351,23 +11351,1414 @@ type JobTypeConfig_JobTypeSync struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ // Specify job-wide schema change strategies that will be used to map data from the source to the destination.
+ // This acts as the default configuration for all schemas and tables unless overridden by a schema mapping at a lower level.
+ SchemaChange *JobTypeConfig_JobTypeSync_SchemaChange `protobuf:"bytes,1,opt,name=schema_change,json=schemaChange,proto3,oneof" json:"schema_change,omitempty"`
+ // Specify schema mappings that will be used to map data from the source to the destination
+ // This replaces the mappings field and is used to configure column transformers as well as re-wire destination schemas and tables.
+ SchemaMappings []*JobTypeConfig_JobTypeSync_SchemaMapping `protobuf:"bytes,2,rep,name=schema_mappings,json=schemaMappings,proto3" json:"schema_mappings,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync) Reset() {
+ *x = JobTypeConfig_JobTypeSync{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[182]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[182]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0}
+}
+
+func (x *JobTypeConfig_JobTypeSync) GetSchemaChange() *JobTypeConfig_JobTypeSync_SchemaChange {
+ if x != nil {
+ return x.SchemaChange
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync) GetSchemaMappings() []*JobTypeConfig_JobTypeSync_SchemaMapping {
+ if x != nil {
+ return x.SchemaMappings
+ }
+ return nil
+}
+
+type JobTypeConfig_JobTypePiiDetect struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The configuration for data sampling
+ DataSampling *JobTypeConfig_JobTypePiiDetect_DataSampling `protobuf:"bytes,1,opt,name=data_sampling,json=dataSampling,proto3" json:"data_sampling,omitempty"`
+ // The configuration for filtering tables to scan
+ TableScanFilter *JobTypeConfig_JobTypePiiDetect_TableScanFilter `protobuf:"bytes,2,opt,name=table_scan_filter,json=tableScanFilter,proto3" json:"table_scan_filter,omitempty"`
+ // The user prompt to use for PII detection to help influence the LLM
+ UserPrompt *string `protobuf:"bytes,3,opt,name=user_prompt,json=userPrompt,proto3,oneof" json:"user_prompt,omitempty"`
+ // The configuration for incremental PII detection
+ Incremental *JobTypeConfig_JobTypePiiDetect_Incremental `protobuf:"bytes,4,opt,name=incremental,proto3,oneof" json:"incremental,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypePiiDetect) Reset() {
+ *x = JobTypeConfig_JobTypePiiDetect{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypePiiDetect) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypePiiDetect) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypePiiDetect) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypePiiDetect.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypePiiDetect) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 1}
+}
+
+func (x *JobTypeConfig_JobTypePiiDetect) GetDataSampling() *JobTypeConfig_JobTypePiiDetect_DataSampling {
+ if x != nil {
+ return x.DataSampling
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypePiiDetect) GetTableScanFilter() *JobTypeConfig_JobTypePiiDetect_TableScanFilter {
+ if x != nil {
+ return x.TableScanFilter
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypePiiDetect) GetUserPrompt() string {
+ if x != nil && x.UserPrompt != nil {
+ return *x.UserPrompt
+ }
+ return ""
+}
+
+func (x *JobTypeConfig_JobTypePiiDetect) GetIncremental() *JobTypeConfig_JobTypePiiDetect_Incremental {
+ if x != nil {
+ return x.Incremental
+ }
+ return nil
+}
+
+// Configure how schemas, tables, and columns are handled during a job run.
+// If anything is not defined, a system-defined fallback will be implemented. Further information can be found in the documentation.
+type JobTypeConfig_JobTypeSync_SchemaChange struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Configure how schemas are handled during a job run
+ SchemaStrategy *JobTypeConfig_JobTypeSync_SchemaStrategy `protobuf:"bytes,1,opt,name=schema_strategy,json=schemaStrategy,proto3,oneof" json:"schema_strategy,omitempty"`
+ // Configure how tables are handled during a job run
+ TableStrategy *JobTypeConfig_JobTypeSync_TableStrategy `protobuf:"bytes,2,opt,name=table_strategy,json=tableStrategy,proto3,oneof" json:"table_strategy,omitempty"`
+ // Configure how columns are handled during a job run
+ ColumnStrategy *JobTypeConfig_JobTypeSync_ColumnStrategy `protobuf:"bytes,3,opt,name=column_strategy,json=columnStrategy,proto3,oneof" json:"column_strategy,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaChange) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaChange{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[184]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaChange) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaChange) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaChange) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[184]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaChange.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaChange) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 0}
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaChange) GetSchemaStrategy() *JobTypeConfig_JobTypeSync_SchemaStrategy {
+ if x != nil {
+ return x.SchemaStrategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaChange) GetTableStrategy() *JobTypeConfig_JobTypeSync_TableStrategy {
+ if x != nil {
+ return x.TableStrategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaChange) GetColumnStrategy() *JobTypeConfig_JobTypeSync_ColumnStrategy {
+ if x != nil {
+ return x.ColumnStrategy
+ }
+ return nil
+}
+
+// The strategy used to configure how schemas are handled during a job run
+type JobTypeConfig_JobTypeSync_SchemaStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_
+ // *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas_
+ Strategy isJobTypeConfig_JobTypeSync_SchemaStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[185]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[185]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 1}
+}
+
+func (m *JobTypeConfig_JobTypeSync_SchemaStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_SchemaStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy) GetMapAllSchemas() *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_); ok {
+ return x.MapAllSchemas
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy) GetMapDefinedSchemas() *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas_); ok {
+ return x.MapDefinedSchemas
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_SchemaStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_SchemaStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_ struct {
+ // When this strategy is configured, all schemas are mapped
+ MapAllSchemas *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas `protobuf:"bytes,1,opt,name=map_all_schemas,json=mapAllSchemas,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas_ struct {
+ // When this strategy is configured, only the schemas that are defined are mapped
+ MapDefinedSchemas *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas `protobuf:"bytes,2,opt,name=map_defined_schemas,json=mapDefinedSchemas,proto3,oneof"`
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_) isJobTypeConfig_JobTypeSync_SchemaStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas_) isJobTypeConfig_JobTypeSync_SchemaStrategy_Strategy() {
+}
+
+// The strategy used to configure how tables are handled during a job run
+type JobTypeConfig_JobTypeSync_TableStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_
+ // *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_
+ Strategy isJobTypeConfig_JobTypeSync_TableStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_TableStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_TableStrategy) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_TableStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_TableStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 2}
+}
+
+func (m *JobTypeConfig_JobTypeSync_TableStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_TableStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy) GetMapAllTables() *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_); ok {
+ return x.MapAllTables
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy) GetMapDefinedTables() *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_); ok {
+ return x.MapDefinedTables
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_TableStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_TableStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_ struct {
+ // When this strategy is configured, all tables are mapped
+ MapAllTables *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables `protobuf:"bytes,1,opt,name=map_all_tables,json=mapAllTables,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_ struct {
+ // When this strategy is configured, only the tables that are defined are mapped
+ MapDefinedTables *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables `protobuf:"bytes,2,opt,name=map_defined_tables,json=mapDefinedTables,proto3,oneof"`
+}
+
+func (*JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_) isJobTypeConfig_JobTypeSync_TableStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_) isJobTypeConfig_JobTypeSync_TableStrategy_Strategy() {
+}
+
+// The strategy used to configure how columns are handled during a job run
+type JobTypeConfig_JobTypeSync_ColumnStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns_
+ Strategy isJobTypeConfig_JobTypeSync_ColumnStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[187]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[187]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3}
+}
+
+func (m *JobTypeConfig_JobTypeSync_ColumnStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_ColumnStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy) GetMapAllColumns() *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_); ok {
+ return x.MapAllColumns
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy) GetMapDefinedColumns() *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns_); ok {
+ return x.MapDefinedColumns
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_ColumnStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_ColumnStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_ struct {
+ // 1. Map all columns + user-defined sub-strategies for each mismatch scenario
+ MapAllColumns *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns `protobuf:"bytes,1,opt,name=map_all_columns,json=mapAllColumns,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns_ struct {
+ // 2. Only map user-defined columns + sub-strategies for mismatch scenarios
+ MapDefinedColumns *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns `protobuf:"bytes,2,opt,name=map_defined_columns,json=mapDefinedColumns,proto3,oneof"`
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_) isJobTypeConfig_JobTypeSync_ColumnStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns_) isJobTypeConfig_JobTypeSync_ColumnStrategy_Strategy() {
+}
+
+// Configuration for a specific schema mapping
+type JobTypeConfig_JobTypeSync_SchemaMapping struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The database schema this mapping belongs to
+ Schema string `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"`
+ // Optionally specify a destination schema that this mapping will go to
+ DestinationSchema *string `protobuf:"bytes,2,opt,name=destination_schema,json=destinationSchema,proto3,oneof" json:"destination_schema,omitempty"`
+ // The list of table mappings that will be used to map data from the source to the destination
+ TableMappings []*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping `protobuf:"bytes,3,rep,name=table_mappings,json=tableMappings,proto3" json:"table_mappings,omitempty"`
+ // Optionally specify a table strategy. This will override the global table strategy for this schema
+ TableStrategy *JobTypeConfig_JobTypeSync_TableStrategy `protobuf:"bytes,4,opt,name=table_strategy,json=tableStrategy,proto3,oneof" json:"table_strategy,omitempty"`
+ // Optionally specify a column strategy. This will override the global column strategy for this schema
+ ColumnStrategy *JobTypeConfig_JobTypeSync_ColumnStrategy `protobuf:"bytes,5,opt,name=column_strategy,json=columnStrategy,proto3,oneof" json:"column_strategy,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaMapping{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaMapping) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaMapping.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaMapping) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 4}
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) GetSchema() string {
+ if x != nil {
+ return x.Schema
+ }
+ return ""
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) GetDestinationSchema() string {
+ if x != nil && x.DestinationSchema != nil {
+ return *x.DestinationSchema
+ }
+ return ""
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) GetTableMappings() []*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping {
+ if x != nil {
+ return x.TableMappings
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) GetTableStrategy() *JobTypeConfig_JobTypeSync_TableStrategy {
+ if x != nil {
+ return x.TableStrategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping) GetColumnStrategy() *JobTypeConfig_JobTypeSync_ColumnStrategy {
+ if x != nil {
+ return x.ColumnStrategy
+ }
+ return nil
+}
+
+// When this strategy is configured, all schemas are mapped
+type JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 1, 0}
+}
+
+// When this strategy is configured, only the schemas that are defined are mapped
+type JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[190]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[190]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 1, 1}
+}
+
+// When this strategy is configured, all tables are mapped
+type JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) Reset() {
+ *x = JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 2, 0}
+}
+
+// When this strategy is configured, only the tables that are defined are mapped
+type JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) Reset() {
+ *x = JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[192]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[192]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 2, 1}
+}
+
+// -------------------------------------------------------------
+// 1. MapAllColumns
+// -------------------------------------------------------------
+type JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // When a column is present in source but not mapped
+ ColumnInSourceNotMapped *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy `protobuf:"bytes,1,opt,name=column_in_source_not_mapped,json=columnInSourceNotMapped,proto3,oneof" json:"column_in_source_not_mapped,omitempty"`
+ // When a column is mapped but not in source
+ ColumnMappedNotInSource *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy `protobuf:"bytes,2,opt,name=column_mapped_not_in_source,json=columnMappedNotInSource,proto3,oneof" json:"column_mapped_not_in_source,omitempty"`
+ // When a column is in source + mapped, but missing in destination
+ ColumnInSourceMappedNotInDestination *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy `protobuf:"bytes,3,opt,name=column_in_source_mapped_not_in_destination,json=columnInSourceMappedNotInDestination,proto3,oneof" json:"column_in_source_mapped_not_in_destination,omitempty"`
+ // When a column is in the destination but not in source
+ ColumnInDestinationNoLongerInSource *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy `protobuf:"bytes,4,opt,name=column_in_destination_no_longer_in_source,json=columnInDestinationNoLongerInSource,proto3,oneof" json:"column_in_destination_no_longer_in_source,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 0}
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) GetColumnInSourceNotMapped() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy {
+ if x != nil {
+ return x.ColumnInSourceNotMapped
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) GetColumnMappedNotInSource() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy {
+ if x != nil {
+ return x.ColumnMappedNotInSource
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) GetColumnInSourceMappedNotInDestination() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy {
+ if x != nil {
+ return x.ColumnInSourceMappedNotInDestination
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) GetColumnInDestinationNoLongerInSource() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy {
+ if x != nil {
+ return x.ColumnInDestinationNoLongerInSource
+ }
+ return nil
+}
+
+// -------------------------------------------------------------
+// 2. MapDefinedColumns
+// -------------------------------------------------------------
+type JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Mapped but missing in source
+ ColumnMappedNotInSource *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy `protobuf:"bytes,1,opt,name=column_mapped_not_in_source,json=columnMappedNotInSource,proto3,oneof" json:"column_mapped_not_in_source,omitempty"`
+ // In source + mapped, but missing in destination
+ ColumnInSourceMappedNotInDestination *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy `protobuf:"bytes,2,opt,name=column_in_source_mapped_not_in_destination,json=columnInSourceMappedNotInDestination,proto3,oneof" json:"column_in_source_mapped_not_in_destination,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[194]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[194]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 1}
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) GetColumnMappedNotInSource() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy {
+ if x != nil {
+ return x.ColumnMappedNotInSource
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) GetColumnInSourceMappedNotInDestination() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy {
+ if x != nil {
+ return x.ColumnInSourceMappedNotInDestination
+ }
+ return nil
+}
+
+// a) Column present in source, not mapped
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_
+ Strategy isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[195]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[195]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 2}
+}
+
+func (m *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) GetPassthrough() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_); ok {
+ return x.Passthrough
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) GetAutoMap() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_); ok {
+ return x.AutoMap
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) GetHalt() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_); ok {
+ return x.Halt
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) GetDrop() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_); ok {
+ return x.Drop
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_ struct {
+ Passthrough *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough `protobuf:"bytes,1,opt,name=passthrough,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_ struct {
+ AutoMap *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap `protobuf:"bytes,2,opt,name=auto_map,json=autoMap,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_ struct {
+ Halt *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt `protobuf:"bytes,3,opt,name=halt,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_ struct {
+ Drop *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Strategy() {
+}
+
+// b) Column mapped, but not in source
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_
+ Strategy isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[196]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[196]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 3}
+}
+
+func (m *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) GetContinue() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_); ok {
+ return x.Continue
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) GetHalt() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_); ok {
+ return x.Halt
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_ struct {
+ Continue *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue `protobuf:"bytes,1,opt,name=continue,proto3,oneof"` // e.g. treat as NULL or skip
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_ struct {
+ Halt *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt `protobuf:"bytes,2,opt,name=halt,proto3,oneof"` // fail the job
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Strategy() {
+}
+
+// c) Column in source + mapped, but missing in destination
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_
+ Strategy isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[197]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[197]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 4}
+}
+
+func (m *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) GetContinue() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_); ok {
+ return x.Continue
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) GetDrop() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_); ok {
+ return x.Drop
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) GetHalt() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_); ok {
+ return x.Halt
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_ struct {
+ // In your version, "Continue" = "if init_schema => create column, else skip"
+ Continue *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue `protobuf:"bytes,1,opt,name=continue,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_ struct {
+ Drop *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop `protobuf:"bytes,2,opt,name=drop,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_ struct {
+ Halt *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt `protobuf:"bytes,3,opt,name=halt,proto3,oneof"`
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Strategy() {
+}
+
+// d) Column in destination, but not in source
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Types that are assignable to Strategy:
+ //
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt_
+ // *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_
+ Strategy isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy `protobuf_oneof:"strategy"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[198]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[198]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 5}
+}
+
+func (m *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) GetStrategy() isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy {
+ if m != nil {
+ return m.Strategy
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) GetContinue() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_); ok {
+ return x.Continue
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) GetHalt() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt_); ok {
+ return x.Halt
+ }
+ return nil
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) GetAutoMap() *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap {
+ if x, ok := x.GetStrategy().(*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_); ok {
+ return x.AutoMap
+ }
+ return nil
+}
+
+type isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy interface {
+ isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy()
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_ struct {
+ // "Continue" => "if init_schema => drop column, else leave it alone"
+ Continue *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue `protobuf:"bytes,1,opt,name=continue,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt_ struct {
+ Halt *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt `protobuf:"bytes,2,opt,name=halt,proto3,oneof"`
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_ struct {
+ AutoMap *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap `protobuf:"bytes,3,opt,name=auto_map,json=autoMap,proto3,oneof"`
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy() {
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_) isJobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Strategy() {
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[199]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[199]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 2, 0}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[200]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[200]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 2, 1}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[201]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[201]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 2, 2}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[202]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[202]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 2, 3}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[203]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[203]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 3, 0}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
}
-func (x *JobTypeConfig_JobTypeSync) Reset() {
- *x = JobTypeConfig_JobTypeSync{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[182]
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[204]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
-func (x *JobTypeConfig_JobTypeSync) String() string {
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*JobTypeConfig_JobTypeSync) ProtoMessage() {}
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) ProtoMessage() {
+}
-func (x *JobTypeConfig_JobTypeSync) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[182]
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[204]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11378,41 +12769,70 @@ func (x *JobTypeConfig_JobTypeSync) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use JobTypeConfig_JobTypeSync.ProtoReflect.Descriptor instead.
-func (*JobTypeConfig_JobTypeSync) Descriptor() ([]byte, []int) {
- return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0}
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 3, 1}
}
-type JobTypeConfig_JobTypePiiDetect struct {
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+}
- // The configuration for data sampling
- DataSampling *JobTypeConfig_JobTypePiiDetect_DataSampling `protobuf:"bytes,1,opt,name=data_sampling,json=dataSampling,proto3" json:"data_sampling,omitempty"`
- // The configuration for filtering tables to scan
- TableScanFilter *JobTypeConfig_JobTypePiiDetect_TableScanFilter `protobuf:"bytes,2,opt,name=table_scan_filter,json=tableScanFilter,proto3" json:"table_scan_filter,omitempty"`
- // The user prompt to use for PII detection to help influence the LLM
- UserPrompt *string `protobuf:"bytes,3,opt,name=user_prompt,json=userPrompt,proto3,oneof" json:"user_prompt,omitempty"`
- // The configuration for incremental PII detection
- Incremental *JobTypeConfig_JobTypePiiDetect_Incremental `protobuf:"bytes,4,opt,name=incremental,proto3,oneof" json:"incremental,omitempty"`
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[205]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
}
-func (x *JobTypeConfig_JobTypePiiDetect) Reset() {
- *x = JobTypeConfig_JobTypePiiDetect{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183]
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[205]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 4, 0}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[206]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
-func (x *JobTypeConfig_JobTypePiiDetect) String() string {
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*JobTypeConfig_JobTypePiiDetect) ProtoMessage() {}
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) ProtoMessage() {
+}
-func (x *JobTypeConfig_JobTypePiiDetect) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183]
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[206]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11423,35 +12843,285 @@ func (x *JobTypeConfig_JobTypePiiDetect) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use JobTypeConfig_JobTypePiiDetect.ProtoReflect.Descriptor instead.
-func (*JobTypeConfig_JobTypePiiDetect) Descriptor() ([]byte, []int) {
- return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 1}
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 4, 1}
}
-func (x *JobTypeConfig_JobTypePiiDetect) GetDataSampling() *JobTypeConfig_JobTypePiiDetect_DataSampling {
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[207]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[207]
if x != nil {
- return x.DataSampling
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 4, 2}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[208]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[208]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 5, 0}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[209]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[209]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 5, 1}
+}
+
+type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) Reset() {
+ *x = JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[210]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) ProtoMessage() {
+}
+
+func (x *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[210]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 3, 5, 2}
+}
+
+// Configuration for a specific table mapping in a schema
+type JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The database table this mapping belongs to
+ Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"`
+ // Optionally specify a destination table that this mapping will go to
+ DestinationTable *string `protobuf:"bytes,2,opt,name=destination_table,json=destinationTable,proto3,oneof" json:"destination_table,omitempty"`
+ // The list of column mappings that will be used to map data from the source to the destination
+ ColumnMappings []*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping `protobuf:"bytes,3,rep,name=column_mappings,json=columnMappings,proto3" json:"column_mappings,omitempty"`
+ // Optionally specify a column strategy. This will override the global column strategy for this table
+ ColumnStrategy *JobTypeConfig_JobTypeSync_ColumnStrategy `protobuf:"bytes,4,opt,name=column_strategy,json=columnStrategy,proto3,oneof" json:"column_strategy,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[211]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[211]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 4, 0}
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) GetTable() string {
+ if x != nil {
+ return x.Table
+ }
+ return ""
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) GetDestinationTable() string {
+ if x != nil && x.DestinationTable != nil {
+ return *x.DestinationTable
+ }
+ return ""
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) GetColumnMappings() []*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping {
+ if x != nil {
+ return x.ColumnMappings
}
return nil
}
-func (x *JobTypeConfig_JobTypePiiDetect) GetTableScanFilter() *JobTypeConfig_JobTypePiiDetect_TableScanFilter {
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) GetColumnStrategy() *JobTypeConfig_JobTypeSync_ColumnStrategy {
if x != nil {
- return x.TableScanFilter
+ return x.ColumnStrategy
}
return nil
}
-func (x *JobTypeConfig_JobTypePiiDetect) GetUserPrompt() string {
- if x != nil && x.UserPrompt != nil {
- return *x.UserPrompt
+// Configuration for a specific column mapping in a table
+type JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The column this mapping belongs to
+ Column string `protobuf:"bytes,1,opt,name=column,proto3" json:"column,omitempty"`
+ // The transformer configuration that will be applied to each cell in the column
+ Transformer *TransformerConfig `protobuf:"bytes,2,opt,name=transformer,proto3,oneof" json:"transformer,omitempty"`
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) Reset() {
+ *x = JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping{}
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[212]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) ProtoMessage() {}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) ProtoReflect() protoreflect.Message {
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[212]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping.ProtoReflect.Descriptor instead.
+func (*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) Descriptor() ([]byte, []int) {
+ return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{43, 0, 4, 0, 0}
+}
+
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) GetColumn() string {
+ if x != nil {
+ return x.Column
}
return ""
}
-func (x *JobTypeConfig_JobTypePiiDetect) GetIncremental() *JobTypeConfig_JobTypePiiDetect_Incremental {
+func (x *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) GetTransformer() *TransformerConfig {
if x != nil {
- return x.Incremental
+ return x.Transformer
}
return nil
}
@@ -11468,7 +13138,7 @@ type JobTypeConfig_JobTypePiiDetect_Incremental struct {
func (x *JobTypeConfig_JobTypePiiDetect_Incremental) Reset() {
*x = JobTypeConfig_JobTypePiiDetect_Incremental{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[184]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[213]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11480,7 +13150,7 @@ func (x *JobTypeConfig_JobTypePiiDetect_Incremental) String() string {
func (*JobTypeConfig_JobTypePiiDetect_Incremental) ProtoMessage() {}
func (x *JobTypeConfig_JobTypePiiDetect_Incremental) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[184]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[213]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11515,7 +13185,7 @@ type JobTypeConfig_JobTypePiiDetect_DataSampling struct {
func (x *JobTypeConfig_JobTypePiiDetect_DataSampling) Reset() {
*x = JobTypeConfig_JobTypePiiDetect_DataSampling{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[185]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[214]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11527,7 +13197,7 @@ func (x *JobTypeConfig_JobTypePiiDetect_DataSampling) String() string {
func (*JobTypeConfig_JobTypePiiDetect_DataSampling) ProtoMessage() {}
func (x *JobTypeConfig_JobTypePiiDetect_DataSampling) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[185]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[214]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11566,7 +13236,7 @@ type JobTypeConfig_JobTypePiiDetect_TableScanFilter struct {
func (x *JobTypeConfig_JobTypePiiDetect_TableScanFilter) Reset() {
*x = JobTypeConfig_JobTypePiiDetect_TableScanFilter{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[215]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11578,7 +13248,7 @@ func (x *JobTypeConfig_JobTypePiiDetect_TableScanFilter) String() string {
func (*JobTypeConfig_JobTypePiiDetect_TableScanFilter) ProtoMessage() {}
func (x *JobTypeConfig_JobTypePiiDetect_TableScanFilter) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[215]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11659,7 +13329,7 @@ type JobTypeConfig_JobTypePiiDetect_IncludeAll struct {
func (x *JobTypeConfig_JobTypePiiDetect_IncludeAll) Reset() {
*x = JobTypeConfig_JobTypePiiDetect_IncludeAll{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[187]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[216]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11671,7 +13341,7 @@ func (x *JobTypeConfig_JobTypePiiDetect_IncludeAll) String() string {
func (*JobTypeConfig_JobTypePiiDetect_IncludeAll) ProtoMessage() {}
func (x *JobTypeConfig_JobTypePiiDetect_IncludeAll) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[187]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[216]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11701,7 +13371,7 @@ type JobTypeConfig_JobTypePiiDetect_TablePatterns struct {
func (x *JobTypeConfig_JobTypePiiDetect_TablePatterns) Reset() {
*x = JobTypeConfig_JobTypePiiDetect_TablePatterns{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[217]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11713,7 +13383,7 @@ func (x *JobTypeConfig_JobTypePiiDetect_TablePatterns) String() string {
func (*JobTypeConfig_JobTypePiiDetect_TablePatterns) ProtoMessage() {}
func (x *JobTypeConfig_JobTypePiiDetect_TablePatterns) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[217]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11757,7 +13427,7 @@ type JobTypeConfig_JobTypePiiDetect_TableIdentifier struct {
func (x *JobTypeConfig_JobTypePiiDetect_TableIdentifier) Reset() {
*x = JobTypeConfig_JobTypePiiDetect_TableIdentifier{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[218]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11769,7 +13439,7 @@ func (x *JobTypeConfig_JobTypePiiDetect_TableIdentifier) String() string {
func (*JobTypeConfig_JobTypePiiDetect_TableIdentifier) ProtoMessage() {}
func (x *JobTypeConfig_JobTypePiiDetect_TableIdentifier) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[218]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11814,7 +13484,7 @@ type GetJobRunLogsResponse_LogLine struct {
func (x *GetJobRunLogsResponse_LogLine) Reset() {
*x = GetJobRunLogsResponse_LogLine{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[220]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11826,7 +13496,7 @@ func (x *GetJobRunLogsResponse_LogLine) String() string {
func (*GetJobRunLogsResponse_LogLine) ProtoMessage() {}
func (x *GetJobRunLogsResponse_LogLine) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[220]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11877,7 +13547,7 @@ type ColumnError_ColumnErrorReport struct {
func (x *ColumnError_ColumnErrorReport) Reset() {
*x = ColumnError_ColumnErrorReport{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[222]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11889,7 +13559,7 @@ func (x *ColumnError_ColumnErrorReport) String() string {
func (*ColumnError_ColumnErrorReport) ProtoMessage() {}
func (x *ColumnError_ColumnErrorReport) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[222]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11933,7 +13603,7 @@ type ColumnWarning_ColumnWarningReport struct {
func (x *ColumnWarning_ColumnWarningReport) Reset() {
*x = ColumnWarning_ColumnWarningReport{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[194]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[223]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11945,7 +13615,7 @@ func (x *ColumnWarning_ColumnWarningReport) String() string {
func (*ColumnWarning_ColumnWarningReport) ProtoMessage() {}
func (x *ColumnWarning_ColumnWarningReport) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[194]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[223]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11989,7 +13659,7 @@ type DatabaseError_DatabaseErrorReport struct {
func (x *DatabaseError_DatabaseErrorReport) Reset() {
*x = DatabaseError_DatabaseErrorReport{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[195]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[224]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12001,7 +13671,7 @@ func (x *DatabaseError_DatabaseErrorReport) String() string {
func (*DatabaseError_DatabaseErrorReport) ProtoMessage() {}
func (x *DatabaseError_DatabaseErrorReport) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[195]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[224]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12045,7 +13715,7 @@ type TableError_TableErrorReport struct {
func (x *TableError_TableErrorReport) Reset() {
*x = TableError_TableErrorReport{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[196]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[225]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12057,7 +13727,7 @@ func (x *TableError_TableErrorReport) String() string {
func (*TableError_TableErrorReport) ProtoMessage() {}
func (x *TableError_TableErrorReport) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[196]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[225]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12100,7 +13770,7 @@ type ValidateSchemaResponse_Table struct {
func (x *ValidateSchemaResponse_Table) Reset() {
*x = ValidateSchemaResponse_Table{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[197]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[226]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12112,7 +13782,7 @@ func (x *ValidateSchemaResponse_Table) String() string {
func (*ValidateSchemaResponse_Table) ProtoMessage() {}
func (x *ValidateSchemaResponse_Table) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[197]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[226]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12158,7 +13828,7 @@ type JobHookConfig_JobSqlHook struct {
func (x *JobHookConfig_JobSqlHook) Reset() {
*x = JobHookConfig_JobSqlHook{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[198]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[227]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12170,7 +13840,7 @@ func (x *JobHookConfig_JobSqlHook) String() string {
func (*JobHookConfig_JobSqlHook) ProtoMessage() {}
func (x *JobHookConfig_JobSqlHook) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[198]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[227]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12221,7 +13891,7 @@ type JobHookConfig_JobSqlHook_Timing struct {
func (x *JobHookConfig_JobSqlHook_Timing) Reset() {
*x = JobHookConfig_JobSqlHook_Timing{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[199]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[228]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12233,7 +13903,7 @@ func (x *JobHookConfig_JobSqlHook_Timing) String() string {
func (*JobHookConfig_JobSqlHook_Timing) ProtoMessage() {}
func (x *JobHookConfig_JobSqlHook_Timing) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[199]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[228]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12307,7 +13977,7 @@ type PiiDetectionReport_TableReport struct {
func (x *PiiDetectionReport_TableReport) Reset() {
*x = PiiDetectionReport_TableReport{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[200]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[229]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12319,7 +13989,7 @@ func (x *PiiDetectionReport_TableReport) String() string {
func (*PiiDetectionReport_TableReport) ProtoMessage() {}
func (x *PiiDetectionReport_TableReport) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[200]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[229]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12372,7 +14042,7 @@ type PiiDetectionReport_TableReport_ColumnReport struct {
func (x *PiiDetectionReport_TableReport_ColumnReport) Reset() {
*x = PiiDetectionReport_TableReport_ColumnReport{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[201]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[230]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12384,7 +14054,7 @@ func (x *PiiDetectionReport_TableReport_ColumnReport) String() string {
func (*PiiDetectionReport_TableReport_ColumnReport) ProtoMessage() {}
func (x *PiiDetectionReport_TableReport_ColumnReport) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[201]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[230]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12433,7 +14103,7 @@ type PiiDetectionReport_TableReport_ColumnReport_Regex struct {
func (x *PiiDetectionReport_TableReport_ColumnReport_Regex) Reset() {
*x = PiiDetectionReport_TableReport_ColumnReport_Regex{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[202]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[231]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12445,7 +14115,7 @@ func (x *PiiDetectionReport_TableReport_ColumnReport_Regex) String() string {
func (*PiiDetectionReport_TableReport_ColumnReport_Regex) ProtoMessage() {}
func (x *PiiDetectionReport_TableReport_ColumnReport_Regex) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[202]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[231]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12482,7 +14152,7 @@ type PiiDetectionReport_TableReport_ColumnReport_LLM struct {
func (x *PiiDetectionReport_TableReport_ColumnReport_LLM) Reset() {
*x = PiiDetectionReport_TableReport_ColumnReport_LLM{}
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[203]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[232]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12494,7 +14164,7 @@ func (x *PiiDetectionReport_TableReport_ColumnReport_LLM) String() string {
func (*PiiDetectionReport_TableReport_ColumnReport_LLM) ProtoMessage() {}
func (x *PiiDetectionReport_TableReport_ColumnReport_LLM) ProtoReflect() protoreflect.Message {
- mi := &file_mgmt_v1alpha1_job_proto_msgTypes[203]
+ mi := &file_mgmt_v1alpha1_job_proto_msgTypes[232]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -13247,7 +14917,7 @@ var file_mgmt_v1alpha1_job_proto_rawDesc = []byte{
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69,
0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69,
0x6f, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42,
- 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x94, 0x08, 0x0a, 0x10, 0x43,
+ 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0xf2, 0x06, 0x0a, 0x10, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61,
@@ -13289,1501 +14959,1845 @@ var file_mgmt_v1alpha1_job_proto_rawDesc = []byte{
0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52,
- 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x3a, 0xd4, 0x02, 0xba, 0x48,
- 0xd0, 0x02, 0x1a, 0x9f, 0x01, 0x0a, 0x1a, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x5f,
- 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x73, 0x79, 0x6e,
- 0x63, 0x12, 0x2f, 0x46, 0x6f, 0x72, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x6a, 0x6f, 0x62, 0x73,
- 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6d,
- 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
- 0x65, 0x64, 0x1a, 0x50, 0x21, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x6f,
- 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x68, 0x61, 0x73, 0x28, 0x74,
- 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x73, 0x79, 0x6e,
- 0x63, 0x29, 0x20, 0x3f, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d,
- 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x29, 0x20, 0x3e, 0x3d, 0x20, 0x31, 0x20, 0x3a, 0x20,
- 0x74, 0x72, 0x75, 0x65, 0x1a, 0xab, 0x01, 0x0a, 0x1e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66,
- 0x6f, 0x72, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x33, 0x46, 0x6f, 0x72, 0x20, 0x73, 0x79, 0x6e,
- 0x63, 0x20, 0x6a, 0x6f, 0x62, 0x73, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74,
- 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0x54, 0x21, 0x68,
- 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65,
- 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x6f,
- 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x29, 0x20, 0x3f, 0x20, 0x73,
- 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x20, 0x3e, 0x3d, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x74, 0x72,
- 0x75, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70,
- 0x65, 0x22, 0xbd, 0x09, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x3a, 0xb2, 0x01, 0xba, 0x48,
+ 0xae, 0x01, 0x1a, 0xab, 0x01, 0x0a, 0x1e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72,
+ 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x33, 0x46, 0x6f, 0x72, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x20,
+ 0x6a, 0x6f, 0x62, 0x73, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x6f,
+ 0x6e, 0x65, 0x20, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69,
+ 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0x54, 0x21, 0x68, 0x61, 0x73,
+ 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x29, 0x20,
+ 0x7c, 0x7c, 0x20, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x6f, 0x62, 0x5f,
+ 0x74, 0x79, 0x70, 0x65, 0x2e, 0x73, 0x79, 0x6e, 0x63, 0x29, 0x20, 0x3f, 0x20, 0x73, 0x69, 0x7a,
+ 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x29, 0x20, 0x3e, 0x3d, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65,
+ 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22,
+ 0xdc, 0x35, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x12, 0x3e, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e,
+ 0x63, 0x12, 0x4e, 0x0a, 0x0a, 0x70, 0x69, 0x69, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65,
+ 0x74, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x09, 0x70, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63,
+ 0x74, 0x1a, 0xab, 0x2c, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e,
+ 0x63, 0x12, 0x5f, 0x0a, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79,
+ 0x6e, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48,
+ 0x00, 0x52, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
+ 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x70, 0x70,
+ 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x73, 0x1a, 0xfb, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x43, 0x68,
+ 0x61, 0x6e, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x73,
+ 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0e, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x54, 0x61,
+ 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x01, 0x52, 0x0d, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12,
+ 0x65, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
+ 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79,
+ 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x48, 0x02, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x12, 0x0a,
+ 0x10, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x1a, 0xb7, 0x02, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x12, 0x6f, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x61, 0x6c, 0x6c, 0x5f,
+ 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x4d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x53, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x7b, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x64, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x53, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x4d, 0x61, 0x70, 0x44,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x48, 0x00, 0x52,
+ 0x11, 0x6d, 0x61, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x73, 0x1a, 0x0f, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x53, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x73, 0x1a, 0x13, 0x0a, 0x11, 0x4d, 0x61, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x00, 0x1a, 0xac, 0x02, 0x0a, 0x0d,
+ 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x6b, 0x0a,
+ 0x0e, 0x6d, 0x61, 0x70, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e,
+ 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x4d, 0x61,
+ 0x70, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61,
+ 0x70, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x12, 0x6d, 0x61,
+ 0x70, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63,
+ 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x4d,
+ 0x61, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x48,
+ 0x00, 0x52, 0x10, 0x6d, 0x61, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x73, 0x1a, 0x12, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x00, 0x1a, 0x89, 0x1b, 0x0a, 0x0e, 0x43,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x6f, 0x0a,
+ 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63,
+ 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e,
+ 0x4d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52,
+ 0x0d, 0x6d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x7b,
+ 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
+ 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x2e, 0x4d, 0x61, 0x70, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x43,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x44, 0x65, 0x66,
+ 0x69, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x1a, 0xea, 0x06, 0x0a, 0x0d,
+ 0x4d, 0x61, 0x70, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x9a, 0x01,
+ 0x0a, 0x1b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x4d, 0x61,
+ 0x70, 0x70, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x17,
+ 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f,
+ 0x74, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x9a, 0x01, 0x0a, 0x1b, 0x63,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74,
+ 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x57, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x01, 0x52, 0x17, 0x63, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0xc3, 0x01, 0x0a, 0x2a, 0x63, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70,
+ 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x64, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
+ 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x44,
+ 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x67, 0x79, 0x48, 0x02, 0x52, 0x24, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x44,
+ 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0xbb, 0x01,
+ 0x0a, 0x29, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x74,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65,
+ 0x72, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x5e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
- 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x04, 0x73,
- 0x79, 0x6e, 0x63, 0x12, 0x4e, 0x0a, 0x0a, 0x70, 0x69, 0x69, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63,
- 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69,
- 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x09, 0x70, 0x69, 0x69, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x1a, 0x0d, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79,
- 0x6e, 0x63, 0x1a, 0xf9, 0x07, 0x0a, 0x10, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69,
- 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x12, 0x5f, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f,
- 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a,
+ 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f,
+ 0x74, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x48, 0x03, 0x52, 0x23, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x44, 0x65, 0x73,
+ 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x4c, 0x6f, 0x6e, 0x67, 0x65, 0x72,
+ 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1e, 0x0a, 0x1c, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f,
+ 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x2d, 0x0a, 0x2b, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x64,
+ 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x2c, 0x0a, 0x2a, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x69,
+ 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0xc5, 0x03, 0x0a, 0x11, 0x4d, 0x61, 0x70,
+ 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x9a,
+ 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64,
+ 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52,
+ 0x17, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74,
+ 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0xc3, 0x01, 0x0a, 0x2a,
+ 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x64,
+ 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x64, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f,
+ 0x74, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x01, 0x52, 0x24, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f,
+ 0x74, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
+ 0x01, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6d, 0x61, 0x70,
+ 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x5f,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f,
+ 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x1a, 0xc7, 0x04, 0x0a, 0x1f, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x12, 0x87, 0x01, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72,
+ 0x6f, 0x75, 0x67, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x63, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
+ 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
+ 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x48,
+ 0x00, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x12, 0x7c,
+ 0x0a, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x5f, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x65,
+ 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61,
+ 0x70, 0x48, 0x00, 0x52, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x12, 0x72, 0x0a, 0x04,
+ 0x68, 0x61, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5c, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
+ 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
+ 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x04, 0x68, 0x61, 0x6c, 0x74,
+ 0x12, 0x72, 0x0a, 0x04, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5c,
0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62,
- 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e, 0x44, 0x61,
- 0x74, 0x61, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61,
- 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x69, 0x0a, 0x11, 0x74, 0x61, 0x62, 0x6c,
- 0x65, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65,
- 0x63, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x46, 0x69, 0x6c, 0x74,
- 0x65, 0x72, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x46, 0x69, 0x6c,
- 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d,
- 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72,
- 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x69, 0x6e, 0x63,
- 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39,
+ 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53,
+ 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x53,
+ 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x48, 0x00, 0x52, 0x04,
+ 0x64, 0x72, 0x6f, 0x70, 0x1a, 0x0d, 0x0a, 0x0b, 0x50, 0x61, 0x73, 0x73, 0x74, 0x68, 0x72, 0x6f,
+ 0x75, 0x67, 0x68, 0x1a, 0x09, 0x0a, 0x07, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x1a, 0x06,
+ 0x0a, 0x04, 0x48, 0x61, 0x6c, 0x74, 0x1a, 0x06, 0x0a, 0x04, 0x44, 0x72, 0x6f, 0x70, 0x42, 0x0a,
+ 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0xb5, 0x02, 0x0a, 0x1f, 0x43,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e,
+ 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x7e,
+ 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x60, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e,
+ 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x72,
+ 0x0a, 0x04, 0x68, 0x61, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5c, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
+ 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70,
+ 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x04, 0x68, 0x61,
+ 0x6c, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x1a, 0x06,
+ 0x0a, 0x04, 0x48, 0x61, 0x6c, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x67, 0x79, 0x1a, 0xe6, 0x03, 0x0a, 0x2c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e,
+ 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74,
+ 0x65, 0x67, 0x79, 0x12, 0x8b, 0x01, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x6d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63,
+ 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e,
+ 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61,
+ 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6e,
+ 0x74, 0x69, 0x6e, 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75,
+ 0x65, 0x12, 0x7f, 0x0a, 0x04, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x69, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49,
+ 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x74,
+ 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x48, 0x00, 0x52, 0x04, 0x64, 0x72,
+ 0x6f, 0x70, 0x12, 0x7f, 0x0a, 0x04, 0x68, 0x61, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x69, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f,
+ 0x74, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x04, 0x68,
+ 0x61, 0x6c, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x1a,
+ 0x06, 0x0a, 0x04, 0x44, 0x72, 0x6f, 0x70, 0x1a, 0x06, 0x0a, 0x04, 0x48, 0x61, 0x6c, 0x74, 0x42,
+ 0x0a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0xdc, 0x03, 0x0a, 0x26,
+ 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x85, 0x01, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6e, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x67, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
+ 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53,
+ 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65,
+ 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x44, 0x65, 0x73, 0x74, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e,
+ 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x12, 0x79,
+ 0x0a, 0x04, 0x68, 0x61, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x63, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
+ 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x44, 0x65,
+ 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c,
+ 0x74, 0x48, 0x00, 0x52, 0x04, 0x68, 0x61, 0x6c, 0x74, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x61, 0x75,
+ 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x66, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
+ 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x44, 0x65,
+ 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x53, 0x6f,
+ 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x41, 0x75, 0x74,
+ 0x6f, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x07, 0x61, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x1a,
+ 0x0a, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x1a, 0x06, 0x0a, 0x04, 0x48,
+ 0x61, 0x6c, 0x74, 0x1a, 0x09, 0x0a, 0x07, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x42, 0x0a,
+ 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0xd4, 0x07, 0x0a, 0x0d, 0x53, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10,
+ 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x32, 0x0a, 0x12, 0x64, 0x65, 0x73,
+ 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a,
+ 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e,
+ 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x61,
+ 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x62, 0x0a, 0x0e, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x54, 0x61, 0x62, 0x6c,
+ 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x01, 0x52, 0x0d, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a,
+ 0x0f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63,
+ 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48,
+ 0x02, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x88, 0x01, 0x01, 0x1a, 0xf8, 0x03, 0x0a, 0x0c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x00, 0x52, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61,
+ 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x7a, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x51, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70,
+ 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x73, 0x12, 0x65, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
+ 0x65, 0x53, 0x79, 0x6e, 0x63, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x48, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88, 0x01, 0x01, 0x1a, 0x89, 0x01, 0x0a, 0x0d, 0x43, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x06, 0x63,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04,
+ 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x47, 0x0a, 0x0b,
+ 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
+ 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
+ 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42,
+ 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x10, 0x0a,
+ 0x0e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x1a,
+ 0xf9, 0x07, 0x0a, 0x10, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65,
+ 0x74, 0x65, 0x63, 0x74, 0x12, 0x5f, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x61, 0x6d,
+ 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
+ 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53,
+ 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x53, 0x61, 0x6d,
+ 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x69, 0x0a, 0x11, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73,
+ 0x63, 0x61, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e,
+ 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52,
+ 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
+ 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f,
+ 0x6d, 0x70, 0x74, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54,
+ 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
+ 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65,
+ 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d,
+ 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x1a, 0x2c, 0x0a, 0x0b, 0x49, 0x6e, 0x63, 0x72,
+ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x2d, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x61,
+ 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x45, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xaf, 0x02, 0x0a, 0x0f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53,
+ 0x63, 0x61, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0b, 0x69, 0x6e, 0x63,
+ 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38,
0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62,
0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e, 0x49, 0x6e,
- 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x63,
- 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x1a, 0x2c, 0x0a, 0x0b, 0x49,
- 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73,
- 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
- 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x2d, 0x0a, 0x0c, 0x44, 0x61, 0x74,
- 0x61, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
- 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xaf, 0x02, 0x0a, 0x0f, 0x54, 0x61, 0x62,
- 0x6c, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0b,
- 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x38, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x57, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69,
+ 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12,
+ 0x57, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x3b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e,
+ 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x48, 0x00, 0x52,
+ 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x0d, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65,
+ 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x1a, 0x0c, 0x0a, 0x0a, 0x49, 0x6e, 0x63, 0x6c, 0x75,
+ 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x1a, 0x80, 0x01, 0x0a, 0x0d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50,
+ 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x73, 0x12, 0x55, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x2e, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x69,
- 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x57, 0x0a, 0x07, 0x69, 0x6e, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79,
- 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
- 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50,
- 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75,
- 0x64, 0x65, 0x12, 0x57, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65,
- 0x63, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73,
- 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x0d, 0x0a, 0x04, 0x6d,
- 0x6f, 0x64, 0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x1a, 0x0c, 0x0a, 0x0a, 0x49, 0x6e,
- 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x1a, 0x80, 0x01, 0x0a, 0x0d, 0x54, 0x61, 0x62,
- 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x63, 0x68,
- 0x65, 0x6d, 0x61, 0x73, 0x12, 0x55, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
- 0x69, 0x65, 0x72, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x51, 0x0a, 0x0f, 0x54,
- 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x1f,
- 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
- 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12,
- 0x1d, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
- 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e,
- 0x0a, 0x0c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x0e,
- 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x42, 0x11,
- 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08,
- 0x00, 0x22, 0x71, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x75, 0x6e,
- 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72,
- 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02,
- 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04,
- 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04,
- 0x08, 0x07, 0x10, 0x08, 0x22, 0x95, 0x02, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
- 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x19, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69,
- 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04,
- 0x22, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
+ 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
+ 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x51, 0x0a, 0x0f, 0x54, 0x61, 0x62, 0x6c,
+ 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x06, 0x73,
+ 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04,
+ 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x05,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04,
+ 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
+ 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
+ 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x08, 0x6a,
+ 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x00, 0x22, 0x71,
+ 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x54, 0x69, 0x6d,
+ 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x75, 0x6e, 0x5f,
+ 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08,
+ 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a,
+ 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10,
+ 0x08, 0x22, 0x95, 0x02, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x19, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
+ 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
+ 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28,
+ 0x01, 0x48, 0x00, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x6f, 0x43,
+ 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x41,
+ 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07,
+ 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74,
0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01,
- 0x01, 0x12, 0x41, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c,
- 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x48, 0x01, 0x52, 0x13, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x54, 0x6f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
- 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x63,
- 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x5b, 0x0a, 0x0b,
- 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x37, 0x0a, 0x10, 0x6d,
- 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x48, 0x00,
- 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74,
- 0x73, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d,
- 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x22, 0x39, 0x0a, 0x11, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24,
- 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52,
- 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x57, 0x0a, 0x15, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69,
- 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x12, 0x38, 0x0a,
- 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72,
- 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xb5, 0x01,
- 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x06,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48,
- 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a,
- 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48,
- 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x06,
- 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48,
- 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x46, 0x0a,
- 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61,
- 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
- 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x22, 0x29, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64,
- 0x22, 0x36, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x70, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28,
- 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f,
- 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x19, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x63, 0x0a,
- 0x0f, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
- 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61,
- 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x61, 0x75, 0x73, 0x65,
- 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
- 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x6f,
- 0x74, 0x65, 0x22, 0x38, 0x0a, 0x10, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xb9, 0x02, 0x0a,
- 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x01, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x6f,
+ 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x19,
+ 0x0a, 0x17, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73,
+ 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x5b, 0x0a, 0x0b, 0x52, 0x65, 0x74,
+ 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x37, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x69,
+ 0x6d, 0x75, 0x6d, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x28, 0x00, 0x48, 0x00, 0x52, 0x0f, 0x6d,
+ 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x88, 0x01,
+ 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x61, 0x74,
+ 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x22, 0x39, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a,
+ 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f,
+ 0x62, 0x22, 0x57, 0x0a, 0x15, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73,
+ 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xb5, 0x01, 0x0a, 0x0a, 0x4a,
+ 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x06, 0x73, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02,
+ 0x10, 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1d, 0x0a, 0x05, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02,
+ 0x10, 0x01, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x06, 0x63, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02,
+ 0x10, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x46, 0x0a, 0x0b, 0x74, 0x72,
+ 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
+ 0x6f, 0x72, 0x6d, 0x65, 0x72, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
+ 0x65, 0x72, 0x22, 0x29, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x36, 0x0a,
+ 0x0e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x70, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a,
+ 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
- 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x35, 0x0a,
- 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70,
- 0x69, 0x6e, 0x67, 0x73, 0x12, 0x59, 0x0a, 0x14, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f,
- 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
- 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x76, 0x69, 0x72,
- 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12,
- 0x37, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
- 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a,
- 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03,
- 0x6a, 0x6f, 0x62, 0x22, 0x72, 0x0a, 0x1a, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65,
- 0x74, 0x12, 0x54, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
- 0x67, 0x72, 0x65, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
- 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73,
- 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x22, 0x66, 0x0a, 0x17, 0x4d, 0x79, 0x73, 0x71, 0x6c,
- 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73,
- 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x22,
- 0x5e, 0x0a, 0x1a, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x53, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a,
- 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x79,
- 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c,
- 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22,
- 0x66, 0x0a, 0x17, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x6d, 0x73,
- 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68,
- 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x73, 0x73, 0x71, 0x6c,
- 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x22, 0xf8, 0x02, 0x0a, 0x18, 0x4a, 0x6f, 0x62, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x53, 0x75, 0x62, 0x65, 0x74, 0x53, 0x63, 0x68,
- 0x65, 0x6d, 0x61, 0x73, 0x12, 0x54, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73,
- 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f,
- 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74,
- 0x67, 0x72, 0x65, 0x73, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x6d, 0x79,
- 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, 0x73, 0x71,
- 0x6c, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d,
- 0x6f, 0x64, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x64,
- 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x64, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a,
- 0x0c, 0x6d, 0x73, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6d,
- 0x73, 0x73, 0x71, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x07, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x01,
- 0x10, 0x02, 0x22, 0xd0, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18,
+ 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x63,
+ 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x63, 0x0a, 0x0f, 0x50, 0x61,
+ 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x75, 0x73, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x70, 0x61, 0x75, 0x73, 0x65, 0x12, 0x17, 0x0a,
+ 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e,
+ 0x6f, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x22,
+ 0x38, 0x0a, 0x10, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xb9, 0x02, 0x0a, 0x20, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72,
- 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x53, 0x75, 0x62, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x73, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x48, 0x0a, 0x21, 0x73,
- 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
- 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x42, 0x79,
- 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72,
- 0x61, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x50, 0x0a, 0x28, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+ 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x73, 0x12, 0x59, 0x0a, 0x14, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72,
+ 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x43, 0x6f,
+ 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
+ 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x37, 0x0a, 0x08,
+ 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a,
- 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xde, 0x01, 0x0a, 0x25, 0x55, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62,
- 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
- 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49,
- 0x64, 0x12, 0x3e, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69,
- 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61,
+ 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x6a, 0x6f,
+ 0x62, 0x54, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a,
+ 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f,
+ 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62,
+ 0x22, 0x72, 0x0a, 0x1a, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x54,
+ 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65,
+ 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x53, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x73, 0x22, 0x66, 0x0a, 0x17, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12,
+ 0x4b, 0x0a, 0x0d, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c,
+ 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x22, 0x5e, 0x0a, 0x1a,
+ 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d,
+ 0x6f, 0x44, 0x42, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x17,
+ 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x6d, 0x73, 0x73, 0x71, 0x6c,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d,
+ 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x73, 0x22, 0xf8, 0x02, 0x0a, 0x18, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x53, 0x71, 0x6c, 0x53, 0x75, 0x62, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x73, 0x12, 0x54, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x75,
+ 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67,
+ 0x72, 0x65, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53,
+ 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65,
+ 0x73, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c,
+ 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79,
+ 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x53,
+ 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x75,
+ 0x62, 0x73, 0x65, 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x64, 0x62,
+ 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x79,
+ 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x79, 0x6e, 0x61,
+ 0x6d, 0x6f, 0x64, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x0c, 0x6d, 0x73,
+ 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x73, 0x73, 0x71,
+ 0x6c, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x73, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22,
+ 0xd0, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62,
+ 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01,
+ 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x53, 0x71, 0x6c, 0x53, 0x75, 0x62, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x52,
+ 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x12, 0x48, 0x0a, 0x21, 0x73, 0x75, 0x62, 0x73,
+ 0x65, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65,
+ 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x1d, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x42, 0x79, 0x46, 0x6f, 0x72,
+ 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e,
+ 0x74, 0x73, 0x22, 0x50, 0x0a, 0x28, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72,
+ 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53,
+ 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24,
+ 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52,
+ 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xde, 0x01, 0x0a, 0x25, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a,
+ 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f,
+ 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
+ 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12,
+ 0x2d, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
+ 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3e,
+ 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25,
+ 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a,
+ 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x58, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a,
+ 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f,
+ 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
+ 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22,
+ 0x28, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x26, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05,
+ 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x58, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65,
+ 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4f, 0x0a, 0x27, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x2f, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
- 0xb0, 0x01, 0x01, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x49, 0x64, 0x22, 0x28, 0x0a, 0x26, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a,
- 0x26, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x10, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x0a, 0x19,
+ 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
+ 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0x72, 0x14, 0x32, 0x12,
+ 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x7b, 0x33, 0x2c, 0x31, 0x30, 0x30,
+ 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
+ 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
+ 0x64, 0x22, 0x3f, 0x0a, 0x1a, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76,
+ 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
+ 0x6c, 0x65, 0x22, 0x67, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01,
- 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x64,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4f, 0x0a, 0x27, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x10,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
- 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x73, 0x0a, 0x19, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69,
- 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0x72,
- 0x14, 0x32, 0x12, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x7b, 0x33, 0x2c,
- 0x31, 0x30, 0x30, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0a, 0x61,
- 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x1a, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d,
- 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
- 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x41, 0x76, 0x61, 0x69,
- 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x67, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52,
- 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x06, 0x6a, 0x6f,
+ 0x01, 0x48, 0x00, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x61, 0x63,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
+ 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x22, 0x46, 0x0a, 0x12, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52,
+ 0x75, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72,
+ 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62,
+ 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x43,
+ 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x06, 0x6a, 0x6f, 0x62,
+ 0x52, 0x75, 0x6e, 0x22, 0x36, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62,
+ 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f,
0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72,
- 0x03, 0xb0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x29, 0x0a,
- 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x09, 0x61,
- 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x42, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x22, 0x46,
- 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x07, 0x6a,
- 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
+ 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62,
0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f,
0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
- 0x64, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x06,
- 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x22, 0x36, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a,
- 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
- 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x16,
- 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c,
- 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a,
- 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61,
- 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f,
- 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x06, 0x0a,
- 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
- 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49,
- 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x12,
- 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x65,
- 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a,
- 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70,
- 0x69, 0x6e, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63,
- 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d,
- 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a,
- 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x12, 0x49, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66,
- 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b,
- 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x14, 0x76,
- 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b,
- 0x65, 0x79, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61,
- 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69,
- 0x6e, 0x74, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69,
- 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79,
- 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
- 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x42,
- 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x22, 0x67, 0x0a, 0x0c, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75,
- 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x0a,
- 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x17, 0x47, 0x65,
- 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
- 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x75, 0x6e,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e,
- 0x74, 0x52, 0x75, 0x6e, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73,
- 0x22, 0x4f, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12,
- 0x40, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65,
- 0x73, 0x22, 0x38, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52,
- 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f,
- 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72,
- 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x16, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75,
- 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74,
- 0x52, 0x75, 0x6e, 0x73, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x22, 0x36,
- 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
- 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30,
- 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a,
- 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x22, 0x64, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x63,
- 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a,
- 0x6f, 0x62, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61,
- 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4a,
- 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
- 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0x2b,
- 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
- 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x0f,
- 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12,
- 0x35, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69,
- 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61,
- 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x6c,
- 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x64, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x75,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x06, 0x0a, 0x03, 0x4a, 0x6f,
+ 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f,
+ 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39,
+ 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79,
+ 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41,
+ 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
+ 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69,
+ 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65,
+ 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x61,
+ 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e,
+ 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x61,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0c, 0x73, 0x79,
+ 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a,
+ 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
+ 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f,
+ 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x14, 0x76, 0x69, 0x72, 0x74,
+ 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73,
+ 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f,
+ 0x72, 0x65, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52,
+ 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b,
+ 0x65, 0x79, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
+ 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e,
+ 0x66, 0x69, 0x67, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e,
+ 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x67,
+ 0x0a, 0x0c, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x39,
+ 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62,
+ 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4a, 0x6f,
+ 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f,
+ 0x62, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63,
+ 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3c, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75,
+ 0x6e, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x22, 0x4f, 0x0a,
+ 0x0b, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e,
+ 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x38,
+ 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01,
+ 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e,
+ 0x73, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x22, 0x36, 0x0a, 0x13, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f,
+ 0x62, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x64, 0x0a,
+ 0x0f, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
+ 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49,
+ 0x64, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x3a, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
- 0x65, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
- 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69,
- 0x6c, 0x75, 0x72, 0x65, 0x22, 0xdd, 0x02, 0x0a, 0x06, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75,
- 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x63, 0x6f,
- 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+ 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72,
+ 0x64, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x0f, 0x41,
+ 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x18,
+ 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x0f, 0x50, 0x65, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x06,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x74,
+ 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69,
+ 0x76, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74,
+ 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41,
+ 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00,
+ 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01,
+ 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
+ 0x65, 0x22, 0xdd, 0x02, 0x0a, 0x06, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06,
+ 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f,
+ 0x62, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x53, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x0b,
- 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4d,
- 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69,
- 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69,
- 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69, 0x65, 0x73, 0x42, 0x0f, 0x0a,
- 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x4a, 0x04,
- 0x08, 0x05, 0x10, 0x06, 0x22, 0x51, 0x0a, 0x14, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x74,
- 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x52,
- 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74,
- 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
- 0x39, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
- 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x72,
- 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x42, 0x0a, 0x12, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x53,
- 0x79, 0x6e, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68,
- 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x13, 0x4a, 0x6f, 0x62,
- 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x53, 0x79,
- 0x6e, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x79,
- 0x6e, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x11, 0x0a, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x9d, 0x02,
- 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a,
- 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
- 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a,
- 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
+ 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x12, 0x70,
+ 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69, 0x65,
+ 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41,
+ 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10,
+ 0x06, 0x22, 0x51, 0x0a, 0x14, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x54, 0x61, 0x73, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61,
+ 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a,
+ 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x6c,
- 0x6f, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x76,
+ 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x5f, 0x0a,
- 0x16, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72,
- 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62,
- 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
- 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x75,
- 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a,
- 0x0f, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6d,
- 0x70, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a,
- 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a,
- 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
- 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62,
- 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x16, 0x54,
- 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65,
+ 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x22, 0x42, 0x0a, 0x12, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x53, 0x79, 0x6e, 0x63,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x13, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a,
+ 0x0d, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x11, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x9d, 0x02, 0x0a, 0x0b, 0x4a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
+ 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39,
+ 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
+ 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6c, 0x6f,
+ 0x73, 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, 0x52, 0x09, 0x63, 0x6c, 0x6f, 0x73, 0x65,
+ 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
+ 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
+ 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x5f, 0x0a, 0x16, 0x47, 0x65,
+ 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
+ 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
+ 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x17, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73,
+ 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+ 0x74, 0x65, 0x22, 0x5c, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52,
+ 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62,
+ 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
+ 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x16, 0x54, 0x65, 0x72, 0x6d,
+ 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64,
+ 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x54, 0x65, 0x72,
+ 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb2, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52,
+ 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49,
+ 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
+ 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x57, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x1f, 0x0a, 0x0b,
+ 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x54, 0x61, 0x69, 0x6c, 0x12, 0x30, 0x0a,
+ 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52,
+ 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12,
+ 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20,
+ 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x6c, 0x6f,
+ 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f,
+ 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x90, 0x02, 0x0a, 0x1b, 0x47, 0x65,
+ 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61,
+ 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x67,
+ 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x67,
+ 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67,
+ 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x42, 0x0c,
+ 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x8b, 0x02, 0x0a,
+ 0x14, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75,
0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01,
- 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17,
- 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb2, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4a,
- 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75,
- 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52,
- 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0,
- 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a,
- 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f,
- 0x67, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12,
- 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x54, 0x61, 0x69, 0x6c,
- 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65,
- 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01,
- 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x88,
- 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73,
- 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52,
- 0x09, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d,
- 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x90, 0x02, 0x0a,
- 0x1b, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08,
- 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
- 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
- 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
- 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
- 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 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, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22,
- 0x8b, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f,
- 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f,
- 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72,
- 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12,
- 0x30, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x4c, 0x6f, 0x67, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f,
- 0x77, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e,
- 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28,
- 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73,
- 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c,
- 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c,
- 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
- 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x22, 0xe3, 0x02,
- 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c,
- 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f,
- 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e,
- 0x65, 0x73, 0x1a, 0xfe, 0x01, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x19,
- 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
- 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65,
- 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52,
- 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c,
- 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 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, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f,
- 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49,
- 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x66, 0x6b, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f,
- 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x66, 0x6b, 0x6c,
- 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a, 0x1d, 0x53, 0x65, 0x74,
- 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f,
- 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62,
- 0x22, 0x77, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0,
- 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6f,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d,
- 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x74,
- 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x73, 0x79,
- 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x41, 0x0a, 0x19, 0x53, 0x65, 0x74,
- 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xd3, 0x02, 0x0a,
- 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70,
- 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61,
- 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73,
- 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e,
- 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x0d, 0x63,
- 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x63, 0x6f,
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x59, 0x0a, 0x14, 0x76, 0x69,
- 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65,
- 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c,
- 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e,
- 0x74, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
- 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x22, 0xe7, 0x07, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72,
- 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61,
- 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1a, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f,
- 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x65, 0x72,
- 0x72, 0x6f, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75,
- 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72,
- 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x6d, 0x0a, 0x11, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
- 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x3e, 0x0a, 0x04,
- 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
- 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72,
- 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xb3, 0x05, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
- 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f,
+ 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06,
+ 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67,
+ 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x30,
+ 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x01, 0x48, 0x00,
+ 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x88, 0x01, 0x01,
+ 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x05,
+ 0x20, 0x03, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x6c,
+ 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78,
+ 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x15, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75,
+ 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x6f,
+ 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x1a,
+ 0xfe, 0x01, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6c,
+ 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c,
+ 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c,
+ 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4c,
+ 0x69, 0x6e, 0x65, 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, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x22, 0x83, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66,
+ 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
+ 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, 0x0a, 0x10, 0x77,
+ 0x6f, 0x72, 0x66, 0x6b, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x66, 0x6b, 0x6c, 0x6f, 0x77, 0x4f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62,
+ 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x77, 0x0a,
+ 0x18, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69,
+ 0x74, 0x79, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x63, 0x4f,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x41, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62,
+ 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xd3, 0x02, 0x0a, 0x1a, 0x56, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+ 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
+ 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
+ 0x64, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08,
+ 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x59, 0x0a, 0x14, 0x76, 0x69, 0x72, 0x74, 0x75,
+ 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72,
+ 0x65, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x52, 0x12,
+ 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65,
+ 0x79, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x48, 0x00, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01,
+ 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22,
+ 0xe7, 0x07, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
+ 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1a, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x6d, 0x0a, 0x11, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x63, 0x6f, 0x64,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43,
+ 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x22, 0xb3, 0x05, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4c, 0x55, 0x4d,
+ 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x4f,
0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f,
- 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a,
- 0x25, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f,
- 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f,
- 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4f, 0x4c, 0x55,
- 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f,
- 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49,
- 0x4e, 0x47, 0x10, 0x02, 0x12, 0x3a, 0x0a, 0x36, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45,
- 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52,
- 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f,
- 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x03,
- 0x12, 0x3f, 0x0a, 0x3b, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
- 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x46,
- 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46,
+ 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55,
+ 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f,
+ 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46,
0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10,
- 0x04, 0x12, 0x4b, 0x0a, 0x47, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f,
- 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54,
- 0x45, 0x44, 0x5f, 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x44, 0x45, 0x50, 0x45,
- 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f,
- 0x4f, 0x4e, 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x3c,
- 0x0a, 0x38, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43,
- 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43,
- 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f,
- 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x3b, 0x0a, 0x37,
- 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44,
- 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4c,
- 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e,
- 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x07, 0x12, 0x3c, 0x0a, 0x38, 0x43, 0x4f, 0x4c,
+ 0x02, 0x12, 0x3a, 0x0a, 0x36, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f,
+ 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44,
+ 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x3f, 0x0a,
+ 0x3b, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f,
+ 0x44, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x45,
+ 0x49, 0x47, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e,
+ 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x4b,
+ 0x0a, 0x47, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43,
+ 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f,
+ 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45,
+ 0x4e, 0x43, 0x59, 0x5f, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x45,
+ 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x3c, 0x0a, 0x38, 0x43,
+ 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45,
+ 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x55,
+ 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f,
+ 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x3b, 0x0a, 0x37, 0x43, 0x4f, 0x4c,
0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56,
- 0x46, 0x4b, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e,
- 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41,
- 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x3b, 0x0a, 0x37, 0x43, 0x4f, 0x4c, 0x55, 0x4d,
- 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b,
- 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e,
- 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52,
- 0x43, 0x45, 0x10, 0x09, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45,
- 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x43, 0x4f,
- 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49,
- 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x0a, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4f, 0x4c, 0x55,
- 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46,
- 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f,
- 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x10, 0x0b, 0x22, 0xdb, 0x03, 0x0a,
- 0x0d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x16,
- 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
- 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06,
- 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f,
- 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73,
- 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e,
- 0x69, 0x6e, 0x67, 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f,
- 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f,
- 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6c, 0x75,
- 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52,
- 0x0e, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a,
- 0x73, 0x0a, 0x13, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69,
- 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67,
- 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57,
- 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4f,
- 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x44,
- 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x2b, 0x0a, 0x27, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e,
- 0x47, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44,
- 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28,
+ 0x46, 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e,
+ 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f,
+ 0x55, 0x52, 0x43, 0x45, 0x10, 0x07, 0x12, 0x3c, 0x0a, 0x38, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f,
+ 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f,
+ 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49,
+ 0x4e, 0x47, 0x10, 0x08, 0x12, 0x3b, 0x0a, 0x37, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x54, 0x41,
+ 0x52, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
+ 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10,
+ 0x09, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d,
+ 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41,
+ 0x54, 0x43, 0x48, 0x10, 0x0a, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f,
+ 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x53,
+ 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4e, 0x4f, 0x54,
+ 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x10, 0x0b, 0x22, 0xdb, 0x03, 0x0a, 0x0d, 0x43, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68,
+ 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67,
+ 0x73, 0x12, 0x59, 0x0a, 0x0f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+ 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57,
+ 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0e, 0x77, 0x61,
+ 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x73, 0x0a, 0x13,
+ 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x2e,
+ 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x64,
+ 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x22, 0x93, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e,
+ 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4f, 0x4c, 0x55, 0x4d,
+ 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55,
+ 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27,
0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43,
0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e,
- 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0xae, 0x03, 0x0a, 0x0d, 0x44,
- 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x06,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01,
- 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f,
- 0x72, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x44, 0x61,
- 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a,
- 0x73, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72,
- 0x6f, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72,
- 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73,
- 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x41,
- 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44,
- 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x4d, 0x0a, 0x49, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f,
- 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54,
- 0x45, 0x44, 0x5f, 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x44, 0x45, 0x50, 0x45,
- 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f,
- 0x4f, 0x4e, 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x2b,
- 0x0a, 0x27, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
- 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e,
- 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x22, 0xca, 0x04, 0x0a, 0x0a,
- 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63,
- 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f,
- 0x72, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x2a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65,
- 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x65, 0x72, 0x72,
- 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x6a, 0x0a, 0x10, 0x54, 0x61, 0x62,
- 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x3c, 0x0a,
- 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c,
- 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f,
- 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd0, 0x02, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45,
- 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x42, 0x4c,
- 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53,
- 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x41,
- 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x54,
- 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49,
- 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x41,
+ 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x4f, 0x4c,
+ 0x55, 0x4d, 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x44, 0x45,
+ 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41,
+ 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0xae, 0x03, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61,
+ 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x06, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74,
+ 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62,
+ 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0c,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x73, 0x0a, 0x13,
+ 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e,
+ 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64,
+ 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x41, 0x54, 0x41, 0x42,
+ 0x41, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55,
+ 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x4d, 0x0a, 0x49,
+ 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43,
+ 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f,
+ 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45,
+ 0x4e, 0x43, 0x59, 0x5f, 0x41, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x45,
+ 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x44,
+ 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f,
+ 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x43, 0x4f, 0x4c, 0x55, 0x4d, 0x4e, 0x5f, 0x4d, 0x49,
+ 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x02, 0x22, 0xca, 0x04, 0x0a, 0x0a, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d,
+ 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12,
+ 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72,
+ 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x6a, 0x0a, 0x10, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45,
+ 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x63, 0x6f,
+ 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72,
+ 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f,
+ 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+ 0x67, 0x65, 0x22, 0xd0, 0x02, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f,
+ 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
+ 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x41, 0x42, 0x4c, 0x45,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c,
+ 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53,
+ 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x41, 0x42, 0x4c, 0x45,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f,
+ 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54,
+ 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e,
+ 0x47, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52,
+ 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52,
+ 0x43, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55,
+ 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x03, 0x12, 0x3a,
+ 0x0a, 0x36, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f,
+ 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x41,
+ 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e,
+ 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x41,
0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56,
- 0x46, 0x4b, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f,
- 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50,
- 0x50, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x53,
- 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
- 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10,
- 0x03, 0x12, 0x3a, 0x0a, 0x36, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
- 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54,
- 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44,
- 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x39, 0x0a,
- 0x35, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44,
- 0x45, 0x5f, 0x56, 0x46, 0x4b, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42,
- 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f,
- 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x05, 0x22, 0xaa, 0x02, 0x0a, 0x1b, 0x56, 0x61, 0x6c,
- 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x75,
- 0x6d, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0c, 0x63, 0x6f, 0x6c,
- 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74,
- 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72,
- 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73,
- 0x12, 0x45, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69,
- 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
- 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57,
- 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65,
- 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61,
- 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45,
- 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x7d, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
- 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35,
- 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70,
- 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
- 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xd8, 0x02, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
- 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x46, 0x0a, 0x0f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
- 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73,
- 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67,
- 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x72, 0x61,
- 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
- 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0c, 0x65,
- 0x78, 0x74, 0x72, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65,
- 0x52, 0x0d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12,
- 0x27, 0x0a, 0x0f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e,
- 0x67, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c,
- 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x46, 0x4b, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f,
+ 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x4f, 0x55,
+ 0x52, 0x43, 0x45, 0x10, 0x05, 0x22, 0xaa, 0x02, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
+ 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+ 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61,
+ 0x73, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0e, 0x64,
+ 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x45, 0x0a,
+ 0x0f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72,
+ 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x57, 0x61, 0x72, 0x6e,
+ 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65,
+ 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f,
+ 0x72, 0x73, 0x22, 0x7d, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6d,
+ 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+ 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49,
+ 0x64, 0x22, 0xd8, 0x02, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0f,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61,
+ 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x72,
+ 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+ 0x32, 0x2b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0d, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18,
+ 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x73, 0x1a, 0x35, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16,
+ 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5b, 0x0a, 0x11,
+ 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65,
+ 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62,
- 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22,
- 0x5b, 0x0a, 0x11, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
- 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05,
- 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62,
- 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20,
- 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xa5, 0x01, 0x0a,
- 0x18, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x43,
- 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68,
- 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d,
- 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
- 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
- 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f,
- 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
- 0x6e, 0x4b, 0x65, 0x79, 0x22, 0x88, 0x01, 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75,
- 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72,
- 0x02, 0x10, 0x01, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a,
- 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x74,
- 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04,
- 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22,
- 0x44, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4b, 0x65,
- 0x79, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43,
- 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f,
- 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
- 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
- 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x15, 0x53, 0x65, 0x74,
- 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52,
- 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e,
- 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0xad, 0x03, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
- 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
- 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
- 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73,
- 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f,
- 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
- 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x72, 0x69,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0x48, 0x06,
- 0x2a, 0x04, 0x18, 0x64, 0x28, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x22, 0xdd, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x77, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12,
- 0x2d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba,
- 0x48, 0x16, 0x72, 0x14, 0x32, 0x12, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d,
- 0x7b, 0x33, 0x2c, 0x31, 0x30, 0x30, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29,
- 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, 0x65,
- 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e,
- 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
- 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x72, 0x69,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0x48, 0x06,
- 0x2a, 0x04, 0x18, 0x64, 0x28, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x22, 0xbd, 0x03, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f,
- 0x62, 0x53, 0x71, 0x6c, 0x48, 0x6f, 0x6f, 0x6b, 0x48, 0x00, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x1a,
- 0xc5, 0x02, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x53, 0x71, 0x6c, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x1d,
- 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba,
- 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a,
- 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c,
- 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x06,
- 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d,
+ 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12,
+ 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
+ 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x18, 0x56, 0x69,
+ 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x6e, 0x73,
+ 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14,
+ 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18,
+ 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x41,
+ 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69,
+ 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65,
+ 0x79, 0x22, 0x88, 0x01, 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01,
+ 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0b, 0x65, 0x78,
+ 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e,
+ 0x61, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10,
+ 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x14,
+ 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x02,
+ 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
+ 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
+ 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x4b, 0x65, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x17, 0x0a,
+ 0x15, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e,
+ 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x03,
+ 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a,
+ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2b, 0x0a, 0x12,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f,
+ 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49,
+ 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
+ 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0x48, 0x06, 0x2a, 0x04, 0x18,
+ 0x64, 0x28, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xdd, 0x01,
+ 0x0a, 0x0a, 0x4e, 0x65, 0x77, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x2d, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0x72,
+ 0x14, 0x32, 0x12, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x7b, 0x33, 0x2c,
+ 0x31, 0x30, 0x30, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0b, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x43, 0x6f,
+ 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
+ 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
+ 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0x48, 0x06, 0x2a, 0x04, 0x18,
+ 0x64, 0x28, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xbd, 0x03,
+ 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+ 0x3b, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d,
0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
0x48, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x71,
- 0x6c, 0x48, 0x6f, 0x6f, 0x6b, 0x2e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x74, 0x69,
- 0x6d, 0x69, 0x6e, 0x67, 0x1a, 0xa0, 0x01, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12,
- 0x40, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x50,
- 0x72, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x65, 0x53, 0x79, 0x6e,
- 0x63, 0x12, 0x43, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69,
- 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f,
- 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67,
- 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04,
- 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05,
- 0x22, 0x16, 0x0a, 0x14, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e,
- 0x67, 0x50, 0x72, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0x17, 0x0a, 0x15, 0x4a, 0x6f, 0x62, 0x48,
- 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x79, 0x6e,
- 0x63, 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01,
- 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4a,
- 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
- 0x2c, 0x0a, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
+ 0x6c, 0x48, 0x6f, 0x6f, 0x6b, 0x48, 0x00, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x1a, 0xc5, 0x02, 0x0a,
+ 0x0a, 0x4a, 0x6f, 0x62, 0x53, 0x71, 0x6c, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x1d, 0x0a, 0x05, 0x71,
+ 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72,
+ 0x02, 0x10, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x74, 0x69, 0x6d,
+ 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x71, 0x6c, 0x48, 0x6f,
+ 0x6f, 0x6b, 0x2e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e,
+ 0x67, 0x1a, 0xa0, 0x01, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x40, 0x0a, 0x08,
+ 0x70, 0x72, 0x65, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a,
- 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x2d, 0x0a,
- 0x11, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
- 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x12,
- 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x65, 0x53,
+ 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x43,
+ 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x50,
+ 0x6f, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x53,
+ 0x79, 0x6e, 0x63, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x05, 0xba,
+ 0x48, 0x02, 0x08, 0x01, 0x42, 0x0f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x05,
+ 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10,
+ 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x16, 0x0a,
+ 0x14, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x72,
+ 0x65, 0x53, 0x79, 0x6e, 0x63, 0x22, 0x17, 0x0a, 0x15, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b,
+ 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x22, 0x35,
+ 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05,
+ 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48,
+ 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05,
+ 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48,
+ 0x6f, 0x6f, 0x6b, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x47, 0x65,
+ 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x2a, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f,
+ 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x5c, 0x0a, 0x14, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x6f,
+ 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x65, 0x77, 0x4a, 0x6f, 0x62, 0x48,
+ 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x43, 0x0a, 0x15, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x5c,
- 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x2d, 0x0a,
- 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4e, 0x65, 0x77, 0x4a,
- 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x43, 0x0a, 0x15,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f,
- 0x6b, 0x22, 0x30, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
- 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52,
- 0x02, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x1d,
- 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61,
- 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a,
- 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a,
- 0x6f, 0x62, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x1e, 0x49, 0x73, 0x4a, 0x6f,
- 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
- 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73,
- 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0b, 0x69, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x81, 0x02,
- 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
+ 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x30,
+ 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64,
- 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19,
- 0xba, 0x48, 0x16, 0x72, 0x14, 0x32, 0x12, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d,
- 0x5d, 0x7b, 0x33, 0x2c, 0x31, 0x30, 0x30, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
- 0x29, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f,
- 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
- 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x72,
- 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0x48,
- 0x06, 0x2a, 0x04, 0x18, 0x64, 0x28, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x22, 0x43, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
- 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x68, 0x6f,
- 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b,
- 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0x4e, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
- 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07,
- 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x47, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x1d, 0x49, 0x73, 0x4a,
+ 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61,
+ 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f,
+ 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x1e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
+ 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x61, 0x76,
+ 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69,
+ 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x14, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2d, 0x0a,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16,
+ 0x72, 0x14, 0x32, 0x12, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x30, 0x2d, 0x39, 0x2d, 0x5d, 0x7b, 0x33,
+ 0x2c, 0x31, 0x30, 0x30, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0b,
+ 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x43,
+ 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a,
+ 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72,
+ 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x09, 0xba, 0x48, 0x06, 0x2a, 0x04,
+ 0x18, 0x64, 0x28, 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x43,
+ 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68,
+ 0x6f, 0x6f, 0x6b, 0x22, 0x4e, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61,
+ 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x22, 0x47, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x2a, 0x0a, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a,
+ 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22, 0xde, 0x01, 0x0a,
+ 0x20, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05, 0x6a, 0x6f, 0x62,
+ 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48,
+ 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x69,
+ 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x12,
+ 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x50,
+ 0x52, 0x45, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x49, 0x4d, 0x49,
+ 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02, 0x22, 0x51, 0x0a,
+ 0x21, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x04, 0x68, 0x6f, 0x6f, 0x6b, 0x22,
- 0xde, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x05,
- 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a,
- 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x74,
- 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x49, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12,
- 0x16, 0x0a, 0x12, 0x54, 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x49, 0x4d, 0x49, 0x4e,
- 0x47, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54,
- 0x49, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x02,
- 0x22, 0x51, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x05, 0x68, 0x6f,
- 0x6f, 0x6b, 0x73, 0x22, 0x6e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01,
- 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
- 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
- 0x74, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74,
- 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22,
- 0xee, 0x04, 0x0a, 0x12, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x90, 0x04,
- 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a,
- 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
- 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x54, 0x0a, 0x07, 0x63,
- 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d,
- 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69,
- 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e,
- 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75,
- 0x6d, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
- 0x73, 0x1a, 0xfc, 0x02, 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x70, 0x6f,
- 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x68, 0x0a, 0x0c, 0x72, 0x65,
- 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x40, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e,
- 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x52, 0x65, 0x67,
- 0x65, 0x78, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0a, 0x6c, 0x6c, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f,
- 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c,
- 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65,
- 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x4c, 0x4c, 0x4d, 0x48, 0x01, 0x52, 0x09, 0x6c, 0x6c, 0x6d, 0x52,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x23, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65,
- 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x1a, 0x41, 0x0a,
- 0x03, 0x4c, 0x4c, 0x4d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
- 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65,
- 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72,
- 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c, 0x6c, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x2a, 0x6f, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a,
- 0x16, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50,
- 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4a, 0x4f, 0x42,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10,
- 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
- 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x42, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10,
- 0x04, 0x2a, 0xa7, 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54,
- 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c,
- 0x45, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10,
- 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54,
- 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12,
- 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54,
- 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x92, 0x02, 0x0a, 0x0c,
- 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a,
- 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16,
- 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50,
- 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x42, 0x5f,
- 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49,
- 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10,
- 0x03, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41,
- 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x4a,
- 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41,
- 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x4a, 0x4f, 0x42, 0x5f,
- 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49,
- 0x4e, 0x41, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x42, 0x5f, 0x52,
- 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44,
- 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54,
- 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x08,
- 0x2a, 0x7c, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x22, 0x0a,
- 0x1e, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x5f, 0x54,
- 0x49, 0x4d, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
- 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f,
- 0x46, 0x49, 0x46, 0x54, 0x45, 0x45, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a,
- 0x13, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x4f, 0x4e, 0x45, 0x5f,
- 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x49,
- 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x4f, 0x4e, 0x45, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x03, 0x2a, 0x77,
- 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f,
- 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56,
- 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f,
- 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x12,
- 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e,
- 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x32, 0xb0, 0x21, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x53,
- 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x73, 0x12, 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4a, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12,
- 0x1c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
+ 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x05, 0x68, 0x6f, 0x6f, 0x6b, 0x73,
+ 0x22, 0x6e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x25, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x6a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64,
+ 0x22, 0x5a, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xee, 0x04, 0x0a,
+ 0x12, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70,
+ 0x6f, 0x72, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f,
+ 0x72, 0x74, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x90, 0x04, 0x0a, 0x0b, 0x54,
+ 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63,
+ 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65,
+ 0x6d, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x54, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x62,
+ 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52,
+ 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x1a, 0xfc,
+ 0x02, 0x0a, 0x0c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12,
+ 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x68, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78,
+ 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69,
+ 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+ 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x48,
+ 0x00, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01,
+ 0x01, 0x12, 0x62, 0x0a, 0x0a, 0x6c, 0x6c, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x2e, 0x4c, 0x4c, 0x4d, 0x48, 0x01, 0x52, 0x09, 0x6c, 0x6c, 0x6d, 0x52, 0x65, 0x70, 0x6f,
+ 0x72, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x23, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a,
+ 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x1a, 0x41, 0x0a, 0x03, 0x4c, 0x4c,
+ 0x4d, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0f, 0x0a,
+ 0x0d, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0d,
+ 0x0a, 0x0b, 0x5f, 0x6c, 0x6c, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2a, 0x6f, 0x0a,
+ 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f,
+ 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15,
+ 0x0a, 0x11, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x55,
+ 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xa7,
+ 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53,
+ 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10,
+ 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1c,
+ 0x0a, 0x18, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16,
+ 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
+ 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x92, 0x02, 0x0a, 0x0c, 0x4a, 0x6f, 0x62,
+ 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x4a, 0x4f, 0x42,
+ 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50,
+ 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x42,
+ 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44,
+ 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e,
+ 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10,
+ 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x12, 0x18,
+ 0x0a, 0x14, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x4a, 0x4f, 0x42, 0x5f,
+ 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45,
+ 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e,
+ 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54,
+ 0x45, 0x44, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f,
+ 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x07, 0x12,
+ 0x1c, 0x0a, 0x18, 0x4a, 0x4f, 0x42, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x08, 0x2a, 0x7c, 0x0a,
+ 0x09, 0x4c, 0x6f, 0x67, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x4f,
+ 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x4e, 0x4f, 0x5f, 0x54, 0x49, 0x4d, 0x45,
+ 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a,
+ 0x0a, 0x16, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x46, 0x49, 0x46,
+ 0x54, 0x45, 0x45, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x4f,
+ 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x5f, 0x4f, 0x4e, 0x45, 0x5f, 0x48, 0x4f, 0x55,
+ 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x4f, 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f,
+ 0x57, 0x5f, 0x4f, 0x4e, 0x45, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x03, 0x2a, 0x77, 0x0a, 0x08, 0x4c,
+ 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c,
+ 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
+ 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c,
+ 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c,
+ 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12,
+ 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52,
+ 0x4f, 0x52, 0x10, 0x04, 0x32, 0xb0, 0x21, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x53, 0x65, 0x72, 0x76,
+ 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x1d,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
- 0x01, 0x12, 0x50, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1f,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62,
- 0x12, 0x1f, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x12, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61,
- 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f,
- 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41,
- 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x68, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a,
- 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90,
+ 0x02, 0x01, 0x12, 0x4a, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f,
+ 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x50,
+ 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+ 0x12, 0x50, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x12, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41,
+ 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61,
+ 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69,
+ 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90,
+ 0x02, 0x01, 0x12, 0x68, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f,
+ 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x80, 0x01, 0x0a,
+ 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x6d, 0x67, 0x6d,
0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
- 0x80, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e,
- 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f,
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x00, 0x12, 0x95, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x12, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x37, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43,
- 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8f, 0x01, 0x0a, 0x1e, 0x55,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8f, 0x01, 0x0a,
- 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
- 0x34, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x92,
- 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x95, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
+ 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62,
+ 0x73, 0x65, 0x74, 0x73, 0x12, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63,
+ 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75,
+ 0x62, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6e, 0x6e,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8f, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+ 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8f, 0x01, 0x0a, 0x1e, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74,
0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
- 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x08, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x12,
- 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x1f, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x00, 0x12, 0x68, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65,
- 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63,
- 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x62, 0x0a, 0x0e,
- 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52,
- 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01,
- 0x12, 0x5c, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x62,
- 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73,
- 0x12, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90,
- 0x02, 0x01, 0x12, 0x56, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73,
- 0x12, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0f, 0x47, 0x65,
- 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e,
+ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x92, 0x01, 0x0a, 0x1f,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+ 0x35, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62,
+ 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+ 0x12, 0x4d, 0x0a, 0x08, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x75,
+ 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x75,
+ 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
+ 0x68, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52,
+ 0x75, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74,
+ 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x62, 0x0a, 0x0e, 0x47, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c, 0x0a,
+ 0x0c, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e,
0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
- 0x01, 0x12, 0x53, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x1f,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x59, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
- 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62,
- 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75,
- 0x6e, 0x12, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52,
- 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c,
- 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x22, 0x2e, 0x6d,
- 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x6e,
- 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x69,
- 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x25, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69,
- 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75,
- 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x13, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
+ 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x62, 0x0a, 0x0e, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x24, 0x2e,
0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5c, 0x0a,
- 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x23,
- 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x15, 0x53,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66,
- 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
- 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x68, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f,
- 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e,
- 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e,
- 0x67, 0x73, 0x12, 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61,
- 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0e, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x24, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75,
+ 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65,
- 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d,
- 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x2e,
+ 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12,
+ 0x56, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x20, 0x2e,
0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x53, 0x65,
- 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x2e, 0x6d, 0x67,
- 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52,
- 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4a, 0x6f,
+ 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f,
+ 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x53,
+ 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x1f, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03,
+ 0x90, 0x02, 0x01, 0x12, 0x59, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62,
+ 0x52, 0x75, 0x6e, 0x12, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f,
+ 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59,
+ 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x22,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0c, 0x43, 0x61, 0x6e,
+ 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x22, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c,
+ 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x61,
+ 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54,
+ 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x70, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12,
+ 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72,
+ 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f,
+ 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x0d, 0x47, 0x65,
+ 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x23, 0x2e, 0x6d, 0x67,
+ 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x52,
- 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x75,
- 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x12, 0x2b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
+ 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
+ 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68,
+ 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69,
+ 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12,
+ 0x29, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69,
+ 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
+ 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69,
+ 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x24, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
+ 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x2e, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x59, 0x0a, 0x0b, 0x47,
- 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x21, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x47, 0x65, 0x74,
+ 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75,
+ 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x52, 0x75,
+ 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e,
+ 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65,
+ 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65,
+ 0x74, 0x52, 0x75, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x59, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4a,
+ 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
+ 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x67, 0x6d,
0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f,
- 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
- 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x56, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
- 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c,
- 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12,
- 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
- 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x23, 0x2e,
- 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x16, 0x49, 0x73,
- 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c,
- 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61,
- 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65,
- 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62,
- 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f,
- 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x68, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x45,
- 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
- 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x28, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
- 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
- 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x83, 0x01, 0x0a, 0x19,
- 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b,
- 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x2e, 0x6d, 0x67, 0x6d, 0x74,
- 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74,
- 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d,
- 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63,
- 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69,
- 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
- 0x01, 0x12, 0x77, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2b, 0x2e, 0x6d, 0x67, 0x6d,
- 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69,
- 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03,
+ 0x90, 0x02, 0x01, 0x12, 0x56, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x12, 0x20, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x0d, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x23, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x23, 0x2e, 0x6d, 0x67, 0x6d,
+ 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x16, 0x49, 0x73, 0x4a, 0x6f, 0x62,
+ 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
+ 0x65, 0x12, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41,
+ 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x2d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+ 0x49, 0x73, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x76, 0x61,
+ 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+ 0x12, 0x5c, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f,
+ 0x6b, 0x12, 0x23, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62,
+ 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68,
+ 0x0a, 0x11, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x6e, 0x61, 0x62,
+ 0x6c, 0x65, 0x64, 0x12, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x6e,
+ 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d,
+ 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74,
+ 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x83, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74,
+ 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79,
+ 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
+ 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76,
+ 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x42, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e,
+ 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x77,
+ 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2b, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76,
0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65,
- 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xc4, 0x01, 0x0a, 0x11, 0x63,
- 0x6f, 0x6d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
- 0x42, 0x08, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69,
- 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x75, 0x63, 0x6c, 0x65, 0x75, 0x73,
- 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6e, 0x65, 0x6f, 0x73, 0x79, 0x6e, 0x63, 0x2f, 0x62, 0x61,
- 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x3b, 0x6d, 0x67, 0x6d, 0x74, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02,
- 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4d, 0x67, 0x6d, 0x74, 0x2e, 0x56, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x0d, 0x4d, 0x67, 0x6d, 0x74, 0x5c, 0x56, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x19, 0x4d, 0x67, 0x6d, 0x74, 0x5c, 0x56, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0xea, 0x02, 0x0e, 0x4d, 0x67, 0x6d, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
- 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x69, 0x44, 0x65, 0x74, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xc4, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e,
+ 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x08, 0x4a,
+ 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75,
+ 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6e, 0x75, 0x63, 0x6c, 0x65, 0x75, 0x73, 0x63, 0x6c, 0x6f,
+ 0x75, 0x64, 0x2f, 0x6e, 0x65, 0x6f, 0x73, 0x79, 0x6e, 0x63, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65,
+ 0x6e, 0x64, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x6d,
+ 0x67, 0x6d, 0x74, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58,
+ 0x58, 0xaa, 0x02, 0x0d, 0x4d, 0x67, 0x6d, 0x74, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0xca, 0x02, 0x0d, 0x4d, 0x67, 0x6d, 0x74, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0xe2, 0x02, 0x19, 0x4d, 0x67, 0x6d, 0x74, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e,
+ 0x4d, 0x67, 0x6d, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -14799,7 +16813,7 @@ func file_mgmt_v1alpha1_job_proto_rawDescGZIP() []byte {
}
var file_mgmt_v1alpha1_job_proto_enumTypes = make([]protoimpl.EnumInfo, 11)
-var file_mgmt_v1alpha1_job_proto_msgTypes = make([]protoimpl.MessageInfo, 204)
+var file_mgmt_v1alpha1_job_proto_msgTypes = make([]protoimpl.MessageInfo, 233)
var file_mgmt_v1alpha1_job_proto_goTypes = []any{
(JobStatus)(0), // 0: mgmt.v1alpha1.JobStatus
(ActivityStatus)(0), // 1: mgmt.v1alpha1.ActivityStatus
@@ -14974,51 +16988,80 @@ var file_mgmt_v1alpha1_job_proto_goTypes = []any{
(*PostgresSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 170: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy
(*PostgresSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob)(nil), // 171: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
(*PostgresSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap)(nil), // 172: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap
- (*PostgresSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough)(nil), // 173: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
- (*PostgresSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 174: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJob
- (*PostgresSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 175: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
- (*MysqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 176: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy
- (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy)(nil), // 177: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy
- (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 178: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob
- (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 179: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
- (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob)(nil), // 180: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
- (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap)(nil), // 181: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap
- (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough)(nil), // 182: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
- (*MssqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 183: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy
- (*MssqlSourceConnectionOptions_NewColumnAdditionStrategy)(nil), // 184: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy
- (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 185: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob
- (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 186: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
- (*MssqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob)(nil), // 187: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
- (*MssqlSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough)(nil), // 188: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
- (*PostgresOnConflictConfig_PostgresOnConflictDoNothing)(nil), // 189: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothing
- (*PostgresOnConflictConfig_PostgresOnConflictUpdate)(nil), // 190: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdate
- (*MysqlOnConflictConfig_MysqlOnConflictDoNothing)(nil), // 191: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothing
- (*MysqlOnConflictConfig_MysqlOnConflictUpdate)(nil), // 192: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdate
- (*JobTypeConfig_JobTypeSync)(nil), // 193: mgmt.v1alpha1.JobTypeConfig.JobTypeSync
- (*JobTypeConfig_JobTypePiiDetect)(nil), // 194: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect
- (*JobTypeConfig_JobTypePiiDetect_Incremental)(nil), // 195: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental
- (*JobTypeConfig_JobTypePiiDetect_DataSampling)(nil), // 196: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling
- (*JobTypeConfig_JobTypePiiDetect_TableScanFilter)(nil), // 197: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter
- (*JobTypeConfig_JobTypePiiDetect_IncludeAll)(nil), // 198: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll
- (*JobTypeConfig_JobTypePiiDetect_TablePatterns)(nil), // 199: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns
- (*JobTypeConfig_JobTypePiiDetect_TableIdentifier)(nil), // 200: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier
- nil, // 201: mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry
- (*GetJobRunLogsResponse_LogLine)(nil), // 202: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine
- nil, // 203: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry
- (*ColumnError_ColumnErrorReport)(nil), // 204: mgmt.v1alpha1.ColumnError.ColumnErrorReport
- (*ColumnWarning_ColumnWarningReport)(nil), // 205: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport
- (*DatabaseError_DatabaseErrorReport)(nil), // 206: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport
- (*TableError_TableErrorReport)(nil), // 207: mgmt.v1alpha1.TableError.TableErrorReport
- (*ValidateSchemaResponse_Table)(nil), // 208: mgmt.v1alpha1.ValidateSchemaResponse.Table
- (*JobHookConfig_JobSqlHook)(nil), // 209: mgmt.v1alpha1.JobHookConfig.JobSqlHook
- (*JobHookConfig_JobSqlHook_Timing)(nil), // 210: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing
- (*PiiDetectionReport_TableReport)(nil), // 211: mgmt.v1alpha1.PiiDetectionReport.TableReport
- (*PiiDetectionReport_TableReport_ColumnReport)(nil), // 212: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport
- (*PiiDetectionReport_TableReport_ColumnReport_Regex)(nil), // 213: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex
- (*PiiDetectionReport_TableReport_ColumnReport_LLM)(nil), // 214: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM
- (*TransformerConfig)(nil), // 215: mgmt.v1alpha1.TransformerConfig
- (*timestamppb.Timestamp)(nil), // 216: google.protobuf.Timestamp
- (*DatabaseColumn)(nil), // 217: mgmt.v1alpha1.DatabaseColumn
+ (*PostgresSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough)(nil), // 173: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
+ (*PostgresSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 174: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJob
+ (*PostgresSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 175: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
+ (*MysqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 176: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy
+ (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy)(nil), // 177: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy
+ (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 178: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob
+ (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 179: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
+ (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob)(nil), // 180: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
+ (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap)(nil), // 181: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap
+ (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough)(nil), // 182: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
+ (*MssqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 183: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy
+ (*MssqlSourceConnectionOptions_NewColumnAdditionStrategy)(nil), // 184: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy
+ (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 185: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob
+ (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 186: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
+ (*MssqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob)(nil), // 187: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
+ (*MssqlSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough)(nil), // 188: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
+ (*PostgresOnConflictConfig_PostgresOnConflictDoNothing)(nil), // 189: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothing
+ (*PostgresOnConflictConfig_PostgresOnConflictUpdate)(nil), // 190: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdate
+ (*MysqlOnConflictConfig_MysqlOnConflictDoNothing)(nil), // 191: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothing
+ (*MysqlOnConflictConfig_MysqlOnConflictUpdate)(nil), // 192: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdate
+ (*JobTypeConfig_JobTypeSync)(nil), // 193: mgmt.v1alpha1.JobTypeConfig.JobTypeSync
+ (*JobTypeConfig_JobTypePiiDetect)(nil), // 194: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect
+ (*JobTypeConfig_JobTypeSync_SchemaChange)(nil), // 195: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange
+ (*JobTypeConfig_JobTypeSync_SchemaStrategy)(nil), // 196: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy
+ (*JobTypeConfig_JobTypeSync_TableStrategy)(nil), // 197: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy)(nil), // 198: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ (*JobTypeConfig_JobTypeSync_SchemaMapping)(nil), // 199: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping
+ (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas)(nil), // 200: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas
+ (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas)(nil), // 201: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas
+ (*JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables)(nil), // 202: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables
+ (*JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables)(nil), // 203: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns)(nil), // 204: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns)(nil), // 205: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy)(nil), // 206: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy)(nil), // 207: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy)(nil), // 208: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy)(nil), // 209: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough)(nil), // 210: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap)(nil), // 211: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt)(nil), // 212: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop)(nil), // 213: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue)(nil), // 214: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt)(nil), // 215: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue)(nil), // 216: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop)(nil), // 217: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt)(nil), // 218: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue)(nil), // 219: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt)(nil), // 220: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap)(nil), // 221: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap
+ (*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping)(nil), // 222: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping
+ (*JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping)(nil), // 223: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping
+ (*JobTypeConfig_JobTypePiiDetect_Incremental)(nil), // 224: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental
+ (*JobTypeConfig_JobTypePiiDetect_DataSampling)(nil), // 225: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling
+ (*JobTypeConfig_JobTypePiiDetect_TableScanFilter)(nil), // 226: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter
+ (*JobTypeConfig_JobTypePiiDetect_IncludeAll)(nil), // 227: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll
+ (*JobTypeConfig_JobTypePiiDetect_TablePatterns)(nil), // 228: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns
+ (*JobTypeConfig_JobTypePiiDetect_TableIdentifier)(nil), // 229: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier
+ nil, // 230: mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry
+ (*GetJobRunLogsResponse_LogLine)(nil), // 231: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine
+ nil, // 232: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry
+ (*ColumnError_ColumnErrorReport)(nil), // 233: mgmt.v1alpha1.ColumnError.ColumnErrorReport
+ (*ColumnWarning_ColumnWarningReport)(nil), // 234: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport
+ (*DatabaseError_DatabaseErrorReport)(nil), // 235: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport
+ (*TableError_TableErrorReport)(nil), // 236: mgmt.v1alpha1.TableError.TableErrorReport
+ (*ValidateSchemaResponse_Table)(nil), // 237: mgmt.v1alpha1.ValidateSchemaResponse.Table
+ (*JobHookConfig_JobSqlHook)(nil), // 238: mgmt.v1alpha1.JobHookConfig.JobSqlHook
+ (*JobHookConfig_JobSqlHook_Timing)(nil), // 239: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing
+ (*PiiDetectionReport_TableReport)(nil), // 240: mgmt.v1alpha1.PiiDetectionReport.TableReport
+ (*PiiDetectionReport_TableReport_ColumnReport)(nil), // 241: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport
+ (*PiiDetectionReport_TableReport_ColumnReport_Regex)(nil), // 242: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex
+ (*PiiDetectionReport_TableReport_ColumnReport_LLM)(nil), // 243: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM
+ (*TransformerConfig)(nil), // 244: mgmt.v1alpha1.TransformerConfig
+ (*timestamppb.Timestamp)(nil), // 245: google.protobuf.Timestamp
+ (*DatabaseColumn)(nil), // 246: mgmt.v1alpha1.DatabaseColumn
}
var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
94, // 0: mgmt.v1alpha1.GetJobsResponse.jobs:type_name -> mgmt.v1alpha1.Job
@@ -15089,7 +17132,7 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
194, // 65: mgmt.v1alpha1.JobTypeConfig.pii_detect:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect
57, // 66: mgmt.v1alpha1.ActivityOptions.retry_policy:type_name -> mgmt.v1alpha1.RetryPolicy
94, // 67: mgmt.v1alpha1.CreateJobResponse.job:type_name -> mgmt.v1alpha1.Job
- 215, // 68: mgmt.v1alpha1.JobMappingTransformer.config:type_name -> mgmt.v1alpha1.TransformerConfig
+ 244, // 68: mgmt.v1alpha1.JobMappingTransformer.config:type_name -> mgmt.v1alpha1.TransformerConfig
59, // 69: mgmt.v1alpha1.JobMapping.transformer:type_name -> mgmt.v1alpha1.JobMappingTransformer
94, // 70: mgmt.v1alpha1.GetJobResponse.job:type_name -> mgmt.v1alpha1.Job
94, // 71: mgmt.v1alpha1.UpdateJobScheduleResponse.job:type_name -> mgmt.v1alpha1.Job
@@ -15115,8 +17158,8 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
94, // 91: mgmt.v1alpha1.CreateJobDestinationConnectionsResponse.job:type_name -> mgmt.v1alpha1.Job
108, // 92: mgmt.v1alpha1.GetJobRunsResponse.job_runs:type_name -> mgmt.v1alpha1.JobRun
108, // 93: mgmt.v1alpha1.GetJobRunResponse.job_run:type_name -> mgmt.v1alpha1.JobRun
- 216, // 94: mgmt.v1alpha1.Job.created_at:type_name -> google.protobuf.Timestamp
- 216, // 95: mgmt.v1alpha1.Job.updated_at:type_name -> google.protobuf.Timestamp
+ 245, // 94: mgmt.v1alpha1.Job.created_at:type_name -> google.protobuf.Timestamp
+ 245, // 95: mgmt.v1alpha1.Job.updated_at:type_name -> google.protobuf.Timestamp
13, // 96: mgmt.v1alpha1.Job.source:type_name -> mgmt.v1alpha1.JobSource
16, // 97: mgmt.v1alpha1.Job.destinations:type_name -> mgmt.v1alpha1.JobDestination
60, // 98: mgmt.v1alpha1.Job.mappings:type_name -> mgmt.v1alpha1.JobMapping
@@ -15124,9 +17167,9 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
55, // 100: mgmt.v1alpha1.Job.workflow_options:type_name -> mgmt.v1alpha1.WorkflowOptions
137, // 101: mgmt.v1alpha1.Job.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint
54, // 102: mgmt.v1alpha1.Job.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig
- 216, // 103: mgmt.v1alpha1.JobRecentRun.start_time:type_name -> google.protobuf.Timestamp
+ 245, // 103: mgmt.v1alpha1.JobRecentRun.start_time:type_name -> google.protobuf.Timestamp
95, // 104: mgmt.v1alpha1.GetJobRecentRunsResponse.recent_runs:type_name -> mgmt.v1alpha1.JobRecentRun
- 216, // 105: mgmt.v1alpha1.JobNextRuns.next_run_times:type_name -> google.protobuf.Timestamp
+ 245, // 105: mgmt.v1alpha1.JobNextRuns.next_run_times:type_name -> google.protobuf.Timestamp
98, // 106: mgmt.v1alpha1.GetJobNextRunsResponse.next_runs:type_name -> mgmt.v1alpha1.JobNextRuns
0, // 107: mgmt.v1alpha1.GetJobStatusResponse.status:type_name -> mgmt.v1alpha1.JobStatus
0, // 108: mgmt.v1alpha1.JobStatusRecord.status:type_name -> mgmt.v1alpha1.JobStatus
@@ -15134,24 +17177,24 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
1, // 110: mgmt.v1alpha1.PendingActivity.status:type_name -> mgmt.v1alpha1.ActivityStatus
106, // 111: mgmt.v1alpha1.PendingActivity.last_failure:type_name -> mgmt.v1alpha1.ActivityFailure
2, // 112: mgmt.v1alpha1.JobRun.status:type_name -> mgmt.v1alpha1.JobRunStatus
- 216, // 113: mgmt.v1alpha1.JobRun.started_at:type_name -> google.protobuf.Timestamp
- 216, // 114: mgmt.v1alpha1.JobRun.completed_at:type_name -> google.protobuf.Timestamp
+ 245, // 113: mgmt.v1alpha1.JobRun.started_at:type_name -> google.protobuf.Timestamp
+ 245, // 114: mgmt.v1alpha1.JobRun.completed_at:type_name -> google.protobuf.Timestamp
107, // 115: mgmt.v1alpha1.JobRun.pending_activities:type_name -> mgmt.v1alpha1.PendingActivity
- 216, // 116: mgmt.v1alpha1.JobRunEventTask.event_time:type_name -> google.protobuf.Timestamp
+ 245, // 116: mgmt.v1alpha1.JobRunEventTask.event_time:type_name -> google.protobuf.Timestamp
109, // 117: mgmt.v1alpha1.JobRunEventTask.error:type_name -> mgmt.v1alpha1.JobRunEventTaskError
111, // 118: mgmt.v1alpha1.JobRunEventMetadata.sync_metadata:type_name -> mgmt.v1alpha1.JobRunSyncMetadata
- 216, // 119: mgmt.v1alpha1.JobRunEvent.start_time:type_name -> google.protobuf.Timestamp
- 216, // 120: mgmt.v1alpha1.JobRunEvent.close_time:type_name -> google.protobuf.Timestamp
+ 245, // 119: mgmt.v1alpha1.JobRunEvent.start_time:type_name -> google.protobuf.Timestamp
+ 245, // 120: mgmt.v1alpha1.JobRunEvent.close_time:type_name -> google.protobuf.Timestamp
112, // 121: mgmt.v1alpha1.JobRunEvent.metadata:type_name -> mgmt.v1alpha1.JobRunEventMetadata
110, // 122: mgmt.v1alpha1.JobRunEvent.tasks:type_name -> mgmt.v1alpha1.JobRunEventTask
113, // 123: mgmt.v1alpha1.GetJobRunEventsResponse.events:type_name -> mgmt.v1alpha1.JobRunEvent
3, // 124: mgmt.v1alpha1.GetJobRunLogsStreamRequest.window:type_name -> mgmt.v1alpha1.LogWindow
4, // 125: mgmt.v1alpha1.GetJobRunLogsStreamRequest.log_levels:type_name -> mgmt.v1alpha1.LogLevel
- 216, // 126: mgmt.v1alpha1.GetJobRunLogsStreamResponse.timestamp:type_name -> google.protobuf.Timestamp
- 201, // 127: mgmt.v1alpha1.GetJobRunLogsStreamResponse.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry
+ 245, // 126: mgmt.v1alpha1.GetJobRunLogsStreamResponse.timestamp:type_name -> google.protobuf.Timestamp
+ 230, // 127: mgmt.v1alpha1.GetJobRunLogsStreamResponse.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry
3, // 128: mgmt.v1alpha1.GetJobRunLogsRequest.window:type_name -> mgmt.v1alpha1.LogWindow
4, // 129: mgmt.v1alpha1.GetJobRunLogsRequest.log_levels:type_name -> mgmt.v1alpha1.LogLevel
- 202, // 130: mgmt.v1alpha1.GetJobRunLogsResponse.log_lines:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine
+ 231, // 130: mgmt.v1alpha1.GetJobRunLogsResponse.log_lines:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine
55, // 131: mgmt.v1alpha1.SetJobWorkflowOptionsRequest.worfklow_options:type_name -> mgmt.v1alpha1.WorkflowOptions
94, // 132: mgmt.v1alpha1.SetJobWorkflowOptionsResponse.job:type_name -> mgmt.v1alpha1.Job
56, // 133: mgmt.v1alpha1.SetJobSyncOptionsRequest.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions
@@ -15159,27 +17202,27 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
60, // 135: mgmt.v1alpha1.ValidateJobMappingsRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping
137, // 136: mgmt.v1alpha1.ValidateJobMappingsRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint
13, // 137: mgmt.v1alpha1.ValidateJobMappingsRequest.job_source:type_name -> mgmt.v1alpha1.JobSource
- 204, // 138: mgmt.v1alpha1.ColumnError.error_reports:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorReport
- 205, // 139: mgmt.v1alpha1.ColumnWarning.warning_reports:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningReport
- 206, // 140: mgmt.v1alpha1.DatabaseError.error_reports:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorReport
- 207, // 141: mgmt.v1alpha1.TableError.error_reports:type_name -> mgmt.v1alpha1.TableError.TableErrorReport
+ 233, // 138: mgmt.v1alpha1.ColumnError.error_reports:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorReport
+ 234, // 139: mgmt.v1alpha1.ColumnWarning.warning_reports:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningReport
+ 235, // 140: mgmt.v1alpha1.DatabaseError.error_reports:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorReport
+ 236, // 141: mgmt.v1alpha1.TableError.error_reports:type_name -> mgmt.v1alpha1.TableError.TableErrorReport
129, // 142: mgmt.v1alpha1.ValidateJobMappingsResponse.column_errors:type_name -> mgmt.v1alpha1.ColumnError
131, // 143: mgmt.v1alpha1.ValidateJobMappingsResponse.database_errors:type_name -> mgmt.v1alpha1.DatabaseError
130, // 144: mgmt.v1alpha1.ValidateJobMappingsResponse.column_warnings:type_name -> mgmt.v1alpha1.ColumnWarning
132, // 145: mgmt.v1alpha1.ValidateJobMappingsResponse.table_errors:type_name -> mgmt.v1alpha1.TableError
60, // 146: mgmt.v1alpha1.ValidateSchemaRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping
- 217, // 147: mgmt.v1alpha1.ValidateSchemaResponse.missing_columns:type_name -> mgmt.v1alpha1.DatabaseColumn
- 217, // 148: mgmt.v1alpha1.ValidateSchemaResponse.extra_columns:type_name -> mgmt.v1alpha1.DatabaseColumn
- 208, // 149: mgmt.v1alpha1.ValidateSchemaResponse.missing_tables:type_name -> mgmt.v1alpha1.ValidateSchemaResponse.Table
+ 246, // 147: mgmt.v1alpha1.ValidateSchemaResponse.missing_columns:type_name -> mgmt.v1alpha1.DatabaseColumn
+ 246, // 148: mgmt.v1alpha1.ValidateSchemaResponse.extra_columns:type_name -> mgmt.v1alpha1.DatabaseColumn
+ 237, // 149: mgmt.v1alpha1.ValidateSchemaResponse.missing_tables:type_name -> mgmt.v1alpha1.ValidateSchemaResponse.Table
136, // 150: mgmt.v1alpha1.VirtualForeignConstraint.foreign_key:type_name -> mgmt.v1alpha1.VirtualForeignKey
138, // 151: mgmt.v1alpha1.GetRunContextRequest.id:type_name -> mgmt.v1alpha1.RunContextKey
138, // 152: mgmt.v1alpha1.SetRunContextRequest.id:type_name -> mgmt.v1alpha1.RunContextKey
138, // 153: mgmt.v1alpha1.SetRunContextsRequest.id:type_name -> mgmt.v1alpha1.RunContextKey
147, // 154: mgmt.v1alpha1.JobHook.config:type_name -> mgmt.v1alpha1.JobHookConfig
- 216, // 155: mgmt.v1alpha1.JobHook.created_at:type_name -> google.protobuf.Timestamp
- 216, // 156: mgmt.v1alpha1.JobHook.updated_at:type_name -> google.protobuf.Timestamp
+ 245, // 155: mgmt.v1alpha1.JobHook.created_at:type_name -> google.protobuf.Timestamp
+ 245, // 156: mgmt.v1alpha1.JobHook.updated_at:type_name -> google.protobuf.Timestamp
147, // 157: mgmt.v1alpha1.NewJobHook.config:type_name -> mgmt.v1alpha1.JobHookConfig
- 209, // 158: mgmt.v1alpha1.JobHookConfig.sql:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook
+ 238, // 158: mgmt.v1alpha1.JobHookConfig.sql:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook
145, // 159: mgmt.v1alpha1.GetJobHooksResponse.hooks:type_name -> mgmt.v1alpha1.JobHook
145, // 160: mgmt.v1alpha1.GetJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook
146, // 161: mgmt.v1alpha1.CreateJobHookRequest.hook:type_name -> mgmt.v1alpha1.NewJobHook
@@ -15190,7 +17233,7 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
10, // 166: mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.timing:type_name -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.Timing
145, // 167: mgmt.v1alpha1.GetActiveJobHooksByTimingResponse.hooks:type_name -> mgmt.v1alpha1.JobHook
168, // 168: mgmt.v1alpha1.GetPiiDetectionReportResponse.report:type_name -> mgmt.v1alpha1.PiiDetectionReport
- 211, // 169: mgmt.v1alpha1.PiiDetectionReport.tables:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport
+ 240, // 169: mgmt.v1alpha1.PiiDetectionReport.tables:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport
171, // 170: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.halt_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
172, // 171: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.auto_map:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap
173, // 172: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.passthrough:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
@@ -15205,112 +17248,147 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{
186, // 181: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob
187, // 182: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.halt_job:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob
188, // 183: mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.passthrough:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough
- 196, // 184: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.data_sampling:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling
- 197, // 185: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.table_scan_filter:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter
- 195, // 186: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.incremental:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental
- 198, // 187: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include_all:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll
- 199, // 188: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns
- 199, // 189: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.exclude:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns
- 200, // 190: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns.tables:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier
- 216, // 191: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.timestamp:type_name -> google.protobuf.Timestamp
- 203, // 192: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry
- 6, // 193: mgmt.v1alpha1.ColumnError.ColumnErrorReport.code:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorCode
- 7, // 194: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport.code:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningCode
- 8, // 195: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport.code:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorCode
- 9, // 196: mgmt.v1alpha1.TableError.TableErrorReport.code:type_name -> mgmt.v1alpha1.TableError.TableErrorCode
- 210, // 197: mgmt.v1alpha1.JobHookConfig.JobSqlHook.timing:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing
- 148, // 198: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.pre_sync:type_name -> mgmt.v1alpha1.JobHookTimingPreSync
- 149, // 199: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.post_sync:type_name -> mgmt.v1alpha1.JobHookTimingPostSync
- 212, // 200: mgmt.v1alpha1.PiiDetectionReport.TableReport.columns:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport
- 213, // 201: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.regex_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex
- 214, // 202: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.llm_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM
- 11, // 203: mgmt.v1alpha1.JobService.GetJobs:input_type -> mgmt.v1alpha1.GetJobsRequest
- 61, // 204: mgmt.v1alpha1.JobService.GetJob:input_type -> mgmt.v1alpha1.GetJobRequest
- 53, // 205: mgmt.v1alpha1.JobService.CreateJob:input_type -> mgmt.v1alpha1.CreateJobRequest
- 82, // 206: mgmt.v1alpha1.JobService.DeleteJob:input_type -> mgmt.v1alpha1.DeleteJobRequest
- 84, // 207: mgmt.v1alpha1.JobService.IsJobNameAvailable:input_type -> mgmt.v1alpha1.IsJobNameAvailableRequest
- 63, // 208: mgmt.v1alpha1.JobService.UpdateJobSchedule:input_type -> mgmt.v1alpha1.UpdateJobScheduleRequest
- 67, // 209: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:input_type -> mgmt.v1alpha1.UpdateJobSourceConnectionRequest
- 74, // 210: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:input_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest
- 76, // 211: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:input_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionRequest
- 78, // 212: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:input_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionRequest
- 80, // 213: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:input_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsRequest
- 65, // 214: mgmt.v1alpha1.JobService.PauseJob:input_type -> mgmt.v1alpha1.PauseJobRequest
- 96, // 215: mgmt.v1alpha1.JobService.GetJobRecentRuns:input_type -> mgmt.v1alpha1.GetJobRecentRunsRequest
- 99, // 216: mgmt.v1alpha1.JobService.GetJobNextRuns:input_type -> mgmt.v1alpha1.GetJobNextRunsRequest
- 101, // 217: mgmt.v1alpha1.JobService.GetJobStatus:input_type -> mgmt.v1alpha1.GetJobStatusRequest
- 104, // 218: mgmt.v1alpha1.JobService.GetJobStatuses:input_type -> mgmt.v1alpha1.GetJobStatusesRequest
- 86, // 219: mgmt.v1alpha1.JobService.GetJobRuns:input_type -> mgmt.v1alpha1.GetJobRunsRequest
- 114, // 220: mgmt.v1alpha1.JobService.GetJobRunEvents:input_type -> mgmt.v1alpha1.GetJobRunEventsRequest
- 88, // 221: mgmt.v1alpha1.JobService.GetJobRun:input_type -> mgmt.v1alpha1.GetJobRunRequest
- 116, // 222: mgmt.v1alpha1.JobService.DeleteJobRun:input_type -> mgmt.v1alpha1.DeleteJobRunRequest
- 90, // 223: mgmt.v1alpha1.JobService.CreateJobRun:input_type -> mgmt.v1alpha1.CreateJobRunRequest
- 92, // 224: mgmt.v1alpha1.JobService.CancelJobRun:input_type -> mgmt.v1alpha1.CancelJobRunRequest
- 118, // 225: mgmt.v1alpha1.JobService.TerminateJobRun:input_type -> mgmt.v1alpha1.TerminateJobRunRequest
- 120, // 226: mgmt.v1alpha1.JobService.GetJobRunLogsStream:input_type -> mgmt.v1alpha1.GetJobRunLogsStreamRequest
- 122, // 227: mgmt.v1alpha1.JobService.GetJobRunLogs:input_type -> mgmt.v1alpha1.GetJobRunLogsRequest
- 124, // 228: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:input_type -> mgmt.v1alpha1.SetJobWorkflowOptionsRequest
- 126, // 229: mgmt.v1alpha1.JobService.SetJobSyncOptions:input_type -> mgmt.v1alpha1.SetJobSyncOptionsRequest
- 128, // 230: mgmt.v1alpha1.JobService.ValidateJobMappings:input_type -> mgmt.v1alpha1.ValidateJobMappingsRequest
- 134, // 231: mgmt.v1alpha1.JobService.ValidateSchema:input_type -> mgmt.v1alpha1.ValidateSchemaRequest
- 139, // 232: mgmt.v1alpha1.JobService.GetRunContext:input_type -> mgmt.v1alpha1.GetRunContextRequest
- 141, // 233: mgmt.v1alpha1.JobService.SetRunContext:input_type -> mgmt.v1alpha1.SetRunContextRequest
- 143, // 234: mgmt.v1alpha1.JobService.SetRunContexts:input_type -> mgmt.v1alpha1.SetRunContextsRequest
- 150, // 235: mgmt.v1alpha1.JobService.GetJobHooks:input_type -> mgmt.v1alpha1.GetJobHooksRequest
- 152, // 236: mgmt.v1alpha1.JobService.GetJobHook:input_type -> mgmt.v1alpha1.GetJobHookRequest
- 154, // 237: mgmt.v1alpha1.JobService.CreateJobHook:input_type -> mgmt.v1alpha1.CreateJobHookRequest
- 156, // 238: mgmt.v1alpha1.JobService.DeleteJobHook:input_type -> mgmt.v1alpha1.DeleteJobHookRequest
- 158, // 239: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:input_type -> mgmt.v1alpha1.IsJobHookNameAvailableRequest
- 160, // 240: mgmt.v1alpha1.JobService.UpdateJobHook:input_type -> mgmt.v1alpha1.UpdateJobHookRequest
- 162, // 241: mgmt.v1alpha1.JobService.SetJobHookEnabled:input_type -> mgmt.v1alpha1.SetJobHookEnabledRequest
- 164, // 242: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:input_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest
- 166, // 243: mgmt.v1alpha1.JobService.GetPiiDetectionReport:input_type -> mgmt.v1alpha1.GetPiiDetectionReportRequest
- 12, // 244: mgmt.v1alpha1.JobService.GetJobs:output_type -> mgmt.v1alpha1.GetJobsResponse
- 62, // 245: mgmt.v1alpha1.JobService.GetJob:output_type -> mgmt.v1alpha1.GetJobResponse
- 58, // 246: mgmt.v1alpha1.JobService.CreateJob:output_type -> mgmt.v1alpha1.CreateJobResponse
- 83, // 247: mgmt.v1alpha1.JobService.DeleteJob:output_type -> mgmt.v1alpha1.DeleteJobResponse
- 85, // 248: mgmt.v1alpha1.JobService.IsJobNameAvailable:output_type -> mgmt.v1alpha1.IsJobNameAvailableResponse
- 64, // 249: mgmt.v1alpha1.JobService.UpdateJobSchedule:output_type -> mgmt.v1alpha1.UpdateJobScheduleResponse
- 68, // 250: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:output_type -> mgmt.v1alpha1.UpdateJobSourceConnectionResponse
- 75, // 251: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:output_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse
- 77, // 252: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:output_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionResponse
- 79, // 253: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:output_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionResponse
- 81, // 254: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:output_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsResponse
- 66, // 255: mgmt.v1alpha1.JobService.PauseJob:output_type -> mgmt.v1alpha1.PauseJobResponse
- 97, // 256: mgmt.v1alpha1.JobService.GetJobRecentRuns:output_type -> mgmt.v1alpha1.GetJobRecentRunsResponse
- 100, // 257: mgmt.v1alpha1.JobService.GetJobNextRuns:output_type -> mgmt.v1alpha1.GetJobNextRunsResponse
- 102, // 258: mgmt.v1alpha1.JobService.GetJobStatus:output_type -> mgmt.v1alpha1.GetJobStatusResponse
- 105, // 259: mgmt.v1alpha1.JobService.GetJobStatuses:output_type -> mgmt.v1alpha1.GetJobStatusesResponse
- 87, // 260: mgmt.v1alpha1.JobService.GetJobRuns:output_type -> mgmt.v1alpha1.GetJobRunsResponse
- 115, // 261: mgmt.v1alpha1.JobService.GetJobRunEvents:output_type -> mgmt.v1alpha1.GetJobRunEventsResponse
- 89, // 262: mgmt.v1alpha1.JobService.GetJobRun:output_type -> mgmt.v1alpha1.GetJobRunResponse
- 117, // 263: mgmt.v1alpha1.JobService.DeleteJobRun:output_type -> mgmt.v1alpha1.DeleteJobRunResponse
- 91, // 264: mgmt.v1alpha1.JobService.CreateJobRun:output_type -> mgmt.v1alpha1.CreateJobRunResponse
- 93, // 265: mgmt.v1alpha1.JobService.CancelJobRun:output_type -> mgmt.v1alpha1.CancelJobRunResponse
- 119, // 266: mgmt.v1alpha1.JobService.TerminateJobRun:output_type -> mgmt.v1alpha1.TerminateJobRunResponse
- 121, // 267: mgmt.v1alpha1.JobService.GetJobRunLogsStream:output_type -> mgmt.v1alpha1.GetJobRunLogsStreamResponse
- 123, // 268: mgmt.v1alpha1.JobService.GetJobRunLogs:output_type -> mgmt.v1alpha1.GetJobRunLogsResponse
- 125, // 269: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:output_type -> mgmt.v1alpha1.SetJobWorkflowOptionsResponse
- 127, // 270: mgmt.v1alpha1.JobService.SetJobSyncOptions:output_type -> mgmt.v1alpha1.SetJobSyncOptionsResponse
- 133, // 271: mgmt.v1alpha1.JobService.ValidateJobMappings:output_type -> mgmt.v1alpha1.ValidateJobMappingsResponse
- 135, // 272: mgmt.v1alpha1.JobService.ValidateSchema:output_type -> mgmt.v1alpha1.ValidateSchemaResponse
- 140, // 273: mgmt.v1alpha1.JobService.GetRunContext:output_type -> mgmt.v1alpha1.GetRunContextResponse
- 142, // 274: mgmt.v1alpha1.JobService.SetRunContext:output_type -> mgmt.v1alpha1.SetRunContextResponse
- 144, // 275: mgmt.v1alpha1.JobService.SetRunContexts:output_type -> mgmt.v1alpha1.SetRunContextsResponse
- 151, // 276: mgmt.v1alpha1.JobService.GetJobHooks:output_type -> mgmt.v1alpha1.GetJobHooksResponse
- 153, // 277: mgmt.v1alpha1.JobService.GetJobHook:output_type -> mgmt.v1alpha1.GetJobHookResponse
- 155, // 278: mgmt.v1alpha1.JobService.CreateJobHook:output_type -> mgmt.v1alpha1.CreateJobHookResponse
- 157, // 279: mgmt.v1alpha1.JobService.DeleteJobHook:output_type -> mgmt.v1alpha1.DeleteJobHookResponse
- 159, // 280: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:output_type -> mgmt.v1alpha1.IsJobHookNameAvailableResponse
- 161, // 281: mgmt.v1alpha1.JobService.UpdateJobHook:output_type -> mgmt.v1alpha1.UpdateJobHookResponse
- 163, // 282: mgmt.v1alpha1.JobService.SetJobHookEnabled:output_type -> mgmt.v1alpha1.SetJobHookEnabledResponse
- 165, // 283: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:output_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingResponse
- 167, // 284: mgmt.v1alpha1.JobService.GetPiiDetectionReport:output_type -> mgmt.v1alpha1.GetPiiDetectionReportResponse
- 244, // [244:285] is the sub-list for method output_type
- 203, // [203:244] is the sub-list for method input_type
- 203, // [203:203] is the sub-list for extension type_name
- 203, // [203:203] is the sub-list for extension extendee
- 0, // [0:203] is the sub-list for field type_name
+ 195, // 184: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.schema_change:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange
+ 199, // 185: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.schema_mappings:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping
+ 225, // 186: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.data_sampling:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling
+ 226, // 187: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.table_scan_filter:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter
+ 224, // 188: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.incremental:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental
+ 196, // 189: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange.schema_strategy:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy
+ 197, // 190: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange.table_strategy:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy
+ 198, // 191: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange.column_strategy:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ 200, // 192: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.map_all_schemas:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas
+ 201, // 193: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.map_defined_schemas:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas
+ 202, // 194: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.map_all_tables:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables
+ 203, // 195: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.map_defined_tables:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables
+ 204, // 196: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.map_all_columns:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns
+ 205, // 197: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.map_defined_columns:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns
+ 222, // 198: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.table_mappings:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping
+ 197, // 199: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.table_strategy:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy
+ 198, // 200: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.column_strategy:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ 206, // 201: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns.column_in_source_not_mapped:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy
+ 207, // 202: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns.column_mapped_not_in_source:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ 208, // 203: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns.column_in_source_mapped_not_in_destination:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ 209, // 204: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns.column_in_destination_no_longer_in_source:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy
+ 207, // 205: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns.column_mapped_not_in_source:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ 208, // 206: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns.column_in_source_mapped_not_in_destination:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ 210, // 207: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.passthrough:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough
+ 211, // 208: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.auto_map:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap
+ 212, // 209: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.halt:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt
+ 213, // 210: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.drop:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop
+ 214, // 211: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.continue:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue
+ 215, // 212: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.halt:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt
+ 216, // 213: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.continue:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue
+ 217, // 214: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.drop:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop
+ 218, // 215: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.halt:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt
+ 219, // 216: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.continue:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue
+ 220, // 217: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.halt:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt
+ 221, // 218: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.auto_map:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap
+ 223, // 219: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.column_mappings:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping
+ 198, // 220: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.column_strategy:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ 244, // 221: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping.transformer:type_name -> mgmt.v1alpha1.TransformerConfig
+ 227, // 222: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include_all:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll
+ 228, // 223: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns
+ 228, // 224: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.exclude:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns
+ 229, // 225: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns.tables:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier
+ 245, // 226: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.timestamp:type_name -> google.protobuf.Timestamp
+ 232, // 227: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry
+ 6, // 228: mgmt.v1alpha1.ColumnError.ColumnErrorReport.code:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorCode
+ 7, // 229: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport.code:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningCode
+ 8, // 230: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport.code:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorCode
+ 9, // 231: mgmt.v1alpha1.TableError.TableErrorReport.code:type_name -> mgmt.v1alpha1.TableError.TableErrorCode
+ 239, // 232: mgmt.v1alpha1.JobHookConfig.JobSqlHook.timing:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing
+ 148, // 233: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.pre_sync:type_name -> mgmt.v1alpha1.JobHookTimingPreSync
+ 149, // 234: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.post_sync:type_name -> mgmt.v1alpha1.JobHookTimingPostSync
+ 241, // 235: mgmt.v1alpha1.PiiDetectionReport.TableReport.columns:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport
+ 242, // 236: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.regex_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex
+ 243, // 237: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.llm_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM
+ 11, // 238: mgmt.v1alpha1.JobService.GetJobs:input_type -> mgmt.v1alpha1.GetJobsRequest
+ 61, // 239: mgmt.v1alpha1.JobService.GetJob:input_type -> mgmt.v1alpha1.GetJobRequest
+ 53, // 240: mgmt.v1alpha1.JobService.CreateJob:input_type -> mgmt.v1alpha1.CreateJobRequest
+ 82, // 241: mgmt.v1alpha1.JobService.DeleteJob:input_type -> mgmt.v1alpha1.DeleteJobRequest
+ 84, // 242: mgmt.v1alpha1.JobService.IsJobNameAvailable:input_type -> mgmt.v1alpha1.IsJobNameAvailableRequest
+ 63, // 243: mgmt.v1alpha1.JobService.UpdateJobSchedule:input_type -> mgmt.v1alpha1.UpdateJobScheduleRequest
+ 67, // 244: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:input_type -> mgmt.v1alpha1.UpdateJobSourceConnectionRequest
+ 74, // 245: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:input_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest
+ 76, // 246: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:input_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionRequest
+ 78, // 247: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:input_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionRequest
+ 80, // 248: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:input_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsRequest
+ 65, // 249: mgmt.v1alpha1.JobService.PauseJob:input_type -> mgmt.v1alpha1.PauseJobRequest
+ 96, // 250: mgmt.v1alpha1.JobService.GetJobRecentRuns:input_type -> mgmt.v1alpha1.GetJobRecentRunsRequest
+ 99, // 251: mgmt.v1alpha1.JobService.GetJobNextRuns:input_type -> mgmt.v1alpha1.GetJobNextRunsRequest
+ 101, // 252: mgmt.v1alpha1.JobService.GetJobStatus:input_type -> mgmt.v1alpha1.GetJobStatusRequest
+ 104, // 253: mgmt.v1alpha1.JobService.GetJobStatuses:input_type -> mgmt.v1alpha1.GetJobStatusesRequest
+ 86, // 254: mgmt.v1alpha1.JobService.GetJobRuns:input_type -> mgmt.v1alpha1.GetJobRunsRequest
+ 114, // 255: mgmt.v1alpha1.JobService.GetJobRunEvents:input_type -> mgmt.v1alpha1.GetJobRunEventsRequest
+ 88, // 256: mgmt.v1alpha1.JobService.GetJobRun:input_type -> mgmt.v1alpha1.GetJobRunRequest
+ 116, // 257: mgmt.v1alpha1.JobService.DeleteJobRun:input_type -> mgmt.v1alpha1.DeleteJobRunRequest
+ 90, // 258: mgmt.v1alpha1.JobService.CreateJobRun:input_type -> mgmt.v1alpha1.CreateJobRunRequest
+ 92, // 259: mgmt.v1alpha1.JobService.CancelJobRun:input_type -> mgmt.v1alpha1.CancelJobRunRequest
+ 118, // 260: mgmt.v1alpha1.JobService.TerminateJobRun:input_type -> mgmt.v1alpha1.TerminateJobRunRequest
+ 120, // 261: mgmt.v1alpha1.JobService.GetJobRunLogsStream:input_type -> mgmt.v1alpha1.GetJobRunLogsStreamRequest
+ 122, // 262: mgmt.v1alpha1.JobService.GetJobRunLogs:input_type -> mgmt.v1alpha1.GetJobRunLogsRequest
+ 124, // 263: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:input_type -> mgmt.v1alpha1.SetJobWorkflowOptionsRequest
+ 126, // 264: mgmt.v1alpha1.JobService.SetJobSyncOptions:input_type -> mgmt.v1alpha1.SetJobSyncOptionsRequest
+ 128, // 265: mgmt.v1alpha1.JobService.ValidateJobMappings:input_type -> mgmt.v1alpha1.ValidateJobMappingsRequest
+ 134, // 266: mgmt.v1alpha1.JobService.ValidateSchema:input_type -> mgmt.v1alpha1.ValidateSchemaRequest
+ 139, // 267: mgmt.v1alpha1.JobService.GetRunContext:input_type -> mgmt.v1alpha1.GetRunContextRequest
+ 141, // 268: mgmt.v1alpha1.JobService.SetRunContext:input_type -> mgmt.v1alpha1.SetRunContextRequest
+ 143, // 269: mgmt.v1alpha1.JobService.SetRunContexts:input_type -> mgmt.v1alpha1.SetRunContextsRequest
+ 150, // 270: mgmt.v1alpha1.JobService.GetJobHooks:input_type -> mgmt.v1alpha1.GetJobHooksRequest
+ 152, // 271: mgmt.v1alpha1.JobService.GetJobHook:input_type -> mgmt.v1alpha1.GetJobHookRequest
+ 154, // 272: mgmt.v1alpha1.JobService.CreateJobHook:input_type -> mgmt.v1alpha1.CreateJobHookRequest
+ 156, // 273: mgmt.v1alpha1.JobService.DeleteJobHook:input_type -> mgmt.v1alpha1.DeleteJobHookRequest
+ 158, // 274: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:input_type -> mgmt.v1alpha1.IsJobHookNameAvailableRequest
+ 160, // 275: mgmt.v1alpha1.JobService.UpdateJobHook:input_type -> mgmt.v1alpha1.UpdateJobHookRequest
+ 162, // 276: mgmt.v1alpha1.JobService.SetJobHookEnabled:input_type -> mgmt.v1alpha1.SetJobHookEnabledRequest
+ 164, // 277: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:input_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest
+ 166, // 278: mgmt.v1alpha1.JobService.GetPiiDetectionReport:input_type -> mgmt.v1alpha1.GetPiiDetectionReportRequest
+ 12, // 279: mgmt.v1alpha1.JobService.GetJobs:output_type -> mgmt.v1alpha1.GetJobsResponse
+ 62, // 280: mgmt.v1alpha1.JobService.GetJob:output_type -> mgmt.v1alpha1.GetJobResponse
+ 58, // 281: mgmt.v1alpha1.JobService.CreateJob:output_type -> mgmt.v1alpha1.CreateJobResponse
+ 83, // 282: mgmt.v1alpha1.JobService.DeleteJob:output_type -> mgmt.v1alpha1.DeleteJobResponse
+ 85, // 283: mgmt.v1alpha1.JobService.IsJobNameAvailable:output_type -> mgmt.v1alpha1.IsJobNameAvailableResponse
+ 64, // 284: mgmt.v1alpha1.JobService.UpdateJobSchedule:output_type -> mgmt.v1alpha1.UpdateJobScheduleResponse
+ 68, // 285: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:output_type -> mgmt.v1alpha1.UpdateJobSourceConnectionResponse
+ 75, // 286: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:output_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse
+ 77, // 287: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:output_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionResponse
+ 79, // 288: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:output_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionResponse
+ 81, // 289: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:output_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsResponse
+ 66, // 290: mgmt.v1alpha1.JobService.PauseJob:output_type -> mgmt.v1alpha1.PauseJobResponse
+ 97, // 291: mgmt.v1alpha1.JobService.GetJobRecentRuns:output_type -> mgmt.v1alpha1.GetJobRecentRunsResponse
+ 100, // 292: mgmt.v1alpha1.JobService.GetJobNextRuns:output_type -> mgmt.v1alpha1.GetJobNextRunsResponse
+ 102, // 293: mgmt.v1alpha1.JobService.GetJobStatus:output_type -> mgmt.v1alpha1.GetJobStatusResponse
+ 105, // 294: mgmt.v1alpha1.JobService.GetJobStatuses:output_type -> mgmt.v1alpha1.GetJobStatusesResponse
+ 87, // 295: mgmt.v1alpha1.JobService.GetJobRuns:output_type -> mgmt.v1alpha1.GetJobRunsResponse
+ 115, // 296: mgmt.v1alpha1.JobService.GetJobRunEvents:output_type -> mgmt.v1alpha1.GetJobRunEventsResponse
+ 89, // 297: mgmt.v1alpha1.JobService.GetJobRun:output_type -> mgmt.v1alpha1.GetJobRunResponse
+ 117, // 298: mgmt.v1alpha1.JobService.DeleteJobRun:output_type -> mgmt.v1alpha1.DeleteJobRunResponse
+ 91, // 299: mgmt.v1alpha1.JobService.CreateJobRun:output_type -> mgmt.v1alpha1.CreateJobRunResponse
+ 93, // 300: mgmt.v1alpha1.JobService.CancelJobRun:output_type -> mgmt.v1alpha1.CancelJobRunResponse
+ 119, // 301: mgmt.v1alpha1.JobService.TerminateJobRun:output_type -> mgmt.v1alpha1.TerminateJobRunResponse
+ 121, // 302: mgmt.v1alpha1.JobService.GetJobRunLogsStream:output_type -> mgmt.v1alpha1.GetJobRunLogsStreamResponse
+ 123, // 303: mgmt.v1alpha1.JobService.GetJobRunLogs:output_type -> mgmt.v1alpha1.GetJobRunLogsResponse
+ 125, // 304: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:output_type -> mgmt.v1alpha1.SetJobWorkflowOptionsResponse
+ 127, // 305: mgmt.v1alpha1.JobService.SetJobSyncOptions:output_type -> mgmt.v1alpha1.SetJobSyncOptionsResponse
+ 133, // 306: mgmt.v1alpha1.JobService.ValidateJobMappings:output_type -> mgmt.v1alpha1.ValidateJobMappingsResponse
+ 135, // 307: mgmt.v1alpha1.JobService.ValidateSchema:output_type -> mgmt.v1alpha1.ValidateSchemaResponse
+ 140, // 308: mgmt.v1alpha1.JobService.GetRunContext:output_type -> mgmt.v1alpha1.GetRunContextResponse
+ 142, // 309: mgmt.v1alpha1.JobService.SetRunContext:output_type -> mgmt.v1alpha1.SetRunContextResponse
+ 144, // 310: mgmt.v1alpha1.JobService.SetRunContexts:output_type -> mgmt.v1alpha1.SetRunContextsResponse
+ 151, // 311: mgmt.v1alpha1.JobService.GetJobHooks:output_type -> mgmt.v1alpha1.GetJobHooksResponse
+ 153, // 312: mgmt.v1alpha1.JobService.GetJobHook:output_type -> mgmt.v1alpha1.GetJobHookResponse
+ 155, // 313: mgmt.v1alpha1.JobService.CreateJobHook:output_type -> mgmt.v1alpha1.CreateJobHookResponse
+ 157, // 314: mgmt.v1alpha1.JobService.DeleteJobHook:output_type -> mgmt.v1alpha1.DeleteJobHookResponse
+ 159, // 315: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:output_type -> mgmt.v1alpha1.IsJobHookNameAvailableResponse
+ 161, // 316: mgmt.v1alpha1.JobService.UpdateJobHook:output_type -> mgmt.v1alpha1.UpdateJobHookResponse
+ 163, // 317: mgmt.v1alpha1.JobService.SetJobHookEnabled:output_type -> mgmt.v1alpha1.SetJobHookEnabledResponse
+ 165, // 318: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:output_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingResponse
+ 167, // 319: mgmt.v1alpha1.JobService.GetPiiDetectionReport:output_type -> mgmt.v1alpha1.GetPiiDetectionReportResponse
+ 279, // [279:320] is the sub-list for method output_type
+ 238, // [238:279] is the sub-list for method input_type
+ 238, // [238:238] is the sub-list for extension type_name
+ 238, // [238:238] is the sub-list for extension extendee
+ 0, // [0:238] is the sub-list for field type_name
}
func init() { file_mgmt_v1alpha1_job_proto_init() }
@@ -15417,25 +17495,64 @@ func file_mgmt_v1alpha1_job_proto_init() {
(*MssqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_)(nil),
(*MssqlSourceConnectionOptions_NewColumnAdditionStrategy_Passthrough_)(nil),
}
+ file_mgmt_v1alpha1_job_proto_msgTypes[182].OneofWrappers = []any{}
file_mgmt_v1alpha1_job_proto_msgTypes[183].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[184].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[185].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_)(nil),
+ (*JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas_)(nil),
+ }
file_mgmt_v1alpha1_job_proto_msgTypes[186].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_)(nil),
+ (*JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_)(nil),
+ }
+ file_mgmt_v1alpha1_job_proto_msgTypes[187].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns_)(nil),
+ }
+ file_mgmt_v1alpha1_job_proto_msgTypes[188].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[193].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[194].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[195].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_)(nil),
+ }
+ file_mgmt_v1alpha1_job_proto_msgTypes[196].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_)(nil),
+ }
+ file_mgmt_v1alpha1_job_proto_msgTypes[197].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_)(nil),
+ }
+ file_mgmt_v1alpha1_job_proto_msgTypes[198].OneofWrappers = []any{
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt_)(nil),
+ (*JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_)(nil),
+ }
+ file_mgmt_v1alpha1_job_proto_msgTypes[211].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[212].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[215].OneofWrappers = []any{
(*JobTypeConfig_JobTypePiiDetect_TableScanFilter_IncludeAll)(nil),
(*JobTypeConfig_JobTypePiiDetect_TableScanFilter_Include)(nil),
(*JobTypeConfig_JobTypePiiDetect_TableScanFilter_Exclude)(nil),
}
- file_mgmt_v1alpha1_job_proto_msgTypes[191].OneofWrappers = []any{}
- file_mgmt_v1alpha1_job_proto_msgTypes[199].OneofWrappers = []any{
+ file_mgmt_v1alpha1_job_proto_msgTypes[220].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[228].OneofWrappers = []any{
(*JobHookConfig_JobSqlHook_Timing_PreSync)(nil),
(*JobHookConfig_JobSqlHook_Timing_PostSync)(nil),
}
- file_mgmt_v1alpha1_job_proto_msgTypes[201].OneofWrappers = []any{}
+ file_mgmt_v1alpha1_job_proto_msgTypes[230].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_mgmt_v1alpha1_job_proto_rawDesc,
NumEnums: 11,
- NumMessages: 204,
+ NumMessages: 233,
NumExtensions: 0,
NumServices: 1,
},
diff --git a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.json.go b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.json.go
index bf45e041c3..ee45b919ac 100644
--- a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.json.go
+++ b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.json.go
@@ -697,6 +697,296 @@ func (msg *JobTypeConfig_JobTypeSync) UnmarshalJSON(b []byte) error {
return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
}
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaChange) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaChange) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_TableStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_TableStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaMapping) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaMapping) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
+// MarshalJSON implements json.Marshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) MarshalJSON() ([]byte, error) {
+ return protojson.MarshalOptions{}.Marshal(msg)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (msg *JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping) UnmarshalJSON(b []byte) error {
+ return protojson.UnmarshalOptions{}.Unmarshal(b, msg)
+}
+
// MarshalJSON implements json.Marshaler
func (msg *JobTypeConfig_JobTypePiiDetect) MarshalJSON() ([]byte, error) {
return protojson.MarshalOptions{}.Marshal(msg)
diff --git a/backend/protos/mgmt/v1alpha1/job.proto b/backend/protos/mgmt/v1alpha1/job.proto
index 40cd9c842b..6f381d9113 100644
--- a/backend/protos/mgmt/v1alpha1/job.proto
+++ b/backend/protos/mgmt/v1alpha1/job.proto
@@ -539,11 +539,6 @@ message BatchConfig {
}
message CreateJobRequest {
- option (buf.validate.message).cel = {
- id: "mappings_required_for_sync"
- message: "For sync jobs, at least one mapping is required"
- expression: "!has(this.job_type) || has(this.job_type.sync) ? size(this.mappings) >= 1 : true"
- };
option (buf.validate.message).cel = {
id: "destinations_required_for_sync"
message: "For sync jobs, at least one destination is required"
@@ -591,7 +586,200 @@ message JobTypeConfig {
}
// The configuration for a data sync job
- message JobTypeSync {}
+ message JobTypeSync {
+ // Specify job-wide schema change strategies that will be used to map data from the source to the destination.
+ // This acts as the default configuration for all schemas and tables unless overridden by a schema mapping at a lower level.
+ optional SchemaChange schema_change = 1;
+
+ // Specify schema mappings that will be used to map data from the source to the destination
+ // This replaces the mappings field and is used to configure column transformers as well as re-wire destination schemas and tables.
+ repeated SchemaMapping schema_mappings = 2;
+
+ // Configure how schemas, tables, and columns are handled during a job run.
+ // If anything is not defined, a system-defined fallback will be implemented. Further information can be found in the documentation.
+ message SchemaChange {
+ // Configure how schemas are handled during a job run
+ optional SchemaStrategy schema_strategy = 1;
+ // Configure how tables are handled during a job run
+ optional TableStrategy table_strategy = 2;
+ // Configure how columns are handled during a job run
+ optional ColumnStrategy column_strategy = 3;
+ }
+
+ // The strategy used to configure how schemas are handled during a job run
+ message SchemaStrategy {
+ oneof strategy {
+ option (buf.validate.oneof).required = false;
+ // When this strategy is configured, all schemas are mapped
+ MapAllSchemas map_all_schemas = 1;
+ // When this strategy is configured, only the schemas that are defined are mapped
+ MapDefinedSchemas map_defined_schemas = 2;
+ }
+
+ // When this strategy is configured, all schemas are mapped
+ message MapAllSchemas {}
+ // When this strategy is configured, only the schemas that are defined are mapped
+ message MapDefinedSchemas {}
+ }
+
+ // The strategy used to configure how tables are handled during a job run
+ message TableStrategy {
+ oneof strategy {
+ option (buf.validate.oneof).required = false;
+ // When this strategy is configured, all tables are mapped
+ MapAllTables map_all_tables = 1;
+ // When this strategy is configured, only the tables that are defined are mapped
+ MapDefinedTables map_defined_tables = 2;
+ }
+
+ // When this strategy is configured, all tables are mapped
+ message MapAllTables {}
+ // When this strategy is configured, only the tables that are defined are mapped
+ message MapDefinedTables {}
+ }
+
+ // The strategy used to configure how columns are handled during a job run
+ message ColumnStrategy {
+ oneof strategy {
+ // 1. Map all columns + user-defined sub-strategies for each mismatch scenario
+ MapAllColumns map_all_columns = 1;
+
+ // 2. Only map user-defined columns + sub-strategies for mismatch scenarios
+ MapDefinedColumns map_defined_columns = 2;
+ }
+
+ // -------------------------------------------------------------
+ // 1. MapAllColumns
+ // -------------------------------------------------------------
+ message MapAllColumns {
+ // When a column is present in source but not mapped
+ optional ColumnInSourceNotMappedStrategy column_in_source_not_mapped = 1;
+
+ // When a column is mapped but not in source
+ optional ColumnMappedNotInSourceStrategy column_mapped_not_in_source = 2;
+
+ // When a column is in source + mapped, but missing in destination
+ optional ColumnInSourceMappedNotInDestinationStrategy column_in_source_mapped_not_in_destination = 3;
+
+ // When a column is in the destination but not in source
+ optional ColumnInDestinationNotInSourceStrategy column_in_destination_no_longer_in_source = 4;
+ }
+
+ // -------------------------------------------------------------
+ // 2. MapDefinedColumns
+ // -------------------------------------------------------------
+ message MapDefinedColumns {
+ // Mapped but missing in source
+ optional ColumnMappedNotInSourceStrategy column_mapped_not_in_source = 1;
+
+ // In source + mapped, but missing in destination
+ optional ColumnInSourceMappedNotInDestinationStrategy column_in_source_mapped_not_in_destination = 2;
+ }
+
+ // -------------------------------------------------------------
+ // Sub-strategy definitions
+ // -------------------------------------------------------------
+
+ // a) Column present in source, not mapped
+ message ColumnInSourceNotMappedStrategy {
+ oneof strategy {
+ Passthrough passthrough = 1;
+ AutoMap auto_map = 2;
+ Halt halt = 3;
+ Drop drop = 4;
+ }
+ message Passthrough {}
+ message AutoMap {}
+ message Halt {}
+ message Drop {}
+ }
+
+ // b) Column mapped, but not in source
+ message ColumnMappedNotInSourceStrategy {
+ oneof strategy {
+ Continue continue = 1; // e.g. treat as NULL or skip
+ Halt halt = 2; // fail the job
+ }
+ message Continue {}
+ message Halt {}
+ }
+
+ // c) Column in source + mapped, but missing in destination
+ message ColumnInSourceMappedNotInDestinationStrategy {
+ oneof strategy {
+ // In your version, "Continue" = "if init_schema => create column, else skip"
+ Continue continue = 1;
+ Drop drop = 2;
+ Halt halt = 3;
+ }
+ message Continue {}
+ message Drop {}
+ message Halt {}
+ }
+
+ // d) Column in destination, but not in source
+ message ColumnInDestinationNotInSourceStrategy {
+ oneof strategy {
+ // "Continue" => "if init_schema => drop column, else leave it alone"
+ Continue continue = 1;
+ Halt halt = 2;
+ AutoMap auto_map = 3;
+ }
+ message Continue {}
+ message Halt {}
+ message AutoMap {}
+ }
+
+ // // e) In "MapDefinedColumns" mode: columns in source that aren't in the user mapping
+ // message UnknownSourceColumnStrategy {
+ // oneof strategy {
+ // Ignore ignore = 1;
+ // Halt halt = 2;
+ // }
+ // message Ignore {}
+ // message Halt {}
+ // }
+ }
+
+ // Configuration for a specific schema mapping
+ message SchemaMapping {
+ // The database schema this mapping belongs to
+ string schema = 1 [(buf.validate.field).string.min_len = 1];
+ // Optionally specify a destination schema that this mapping will go to
+ optional string destination_schema = 2;
+
+ // The list of table mappings that will be used to map data from the source to the destination
+ repeated TableMapping table_mappings = 3;
+
+ // Optionally specify a table strategy. This will override the global table strategy for this schema
+ optional TableStrategy table_strategy = 4;
+
+ // Optionally specify a column strategy. This will override the global column strategy for this schema
+ optional ColumnStrategy column_strategy = 5;
+
+ // Configuration for a specific table mapping in a schema
+ message TableMapping {
+ // The database table this mapping belongs to
+ string table = 1 [(buf.validate.field).string.min_len = 1];
+ // Optionally specify a destination table that this mapping will go to
+ optional string destination_table = 2;
+
+ // The list of column mappings that will be used to map data from the source to the destination
+ repeated ColumnMapping column_mappings = 3;
+
+ // Optionally specify a column strategy. This will override the global column strategy for this table
+ optional ColumnStrategy column_strategy = 4;
+
+ // Configuration for a specific column mapping in a table
+ message ColumnMapping {
+ // The column this mapping belongs to
+ string column = 1 [(buf.validate.field).string.min_len = 1];
+ // The transformer configuration that will be applied to each cell in the column
+ optional TransformerConfig transformer = 2;
+ }
+ }
+ }
+ }
message JobTypePiiDetect {
// The configuration for data sampling
diff --git a/docs/openapi/mgmt/v1alpha1/job.openapi.yaml b/docs/openapi/mgmt/v1alpha1/job.openapi.yaml
index 5c2f2bad8f..5f023ed0ea 100644
--- a/docs/openapi/mgmt/v1alpha1/job.openapi.yaml
+++ b/docs/openapi/mgmt/v1alpha1/job.openapi.yaml
@@ -754,11 +754,6 @@ components:
title: CreateJobRequest
additionalProperties: false
description: |+
- For sync jobs, at least one mapping is required:
- ```
- !has(this.job_type) || has(this.job_type.sync) ? size(this.mappings) >= 1 : true
- ```
-
For sync jobs, at least one destination is required:
```
!has(this.job_type) || has(this.job_type.sync) ? size(this.destinations) >= 1 : true
@@ -3176,9 +3171,687 @@ components:
description: Filter configuration for table scanning
mgmt.v1alpha1.JobTypeConfig.JobTypeSync:
type: object
+ allOf:
+ - anyOf:
+ - required:
+ - schemaChange
+ - not:
+ anyOf:
+ - required:
+ - schemaChange
+ anyOf:
+ - required:
+ - schemaChange
+ - not:
+ anyOf:
+ - required:
+ - schemaChange
+ properties:
+ schemaChange:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange'
+ title: schema_change
+ description: |-
+ Specify job-wide schema change strategies that will be used to map data from the source to the destination.
+ This acts as the default configuration for all schemas and tables unless overridden by a schema mapping at a lower level.
+ schemaMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping'
+ title: schema_mappings
+ description: |-
+ Specify schema mappings that will be used to map data from the source to the destination
+ This replaces the mappings field and is used to configure column transformers as well as re-wire destination schemas and tables.
title: JobTypeSync
additionalProperties: false
description: The configuration for a data sync job
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ - not:
+ anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ - not:
+ anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ properties:
+ mapAllColumns:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns'
+ title: map_all_columns
+ description: 1. Map all columns + user-defined sub-strategies for each mismatch scenario
+ mapDefinedColumns:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns'
+ title: map_defined_columns
+ description: 2. Only map user-defined columns + sub-strategies for mismatch scenarios
+ title: ColumnStrategy
+ additionalProperties: false
+ description: The strategy used to configure how columns are handled during a job run
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ properties:
+ continue:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue'
+ title: continue
+ description: '"Continue" => "if init_schema => drop column, else leave it alone"'
+ halt:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt'
+ title: halt
+ autoMap:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap'
+ title: auto_map
+ title: ColumnInDestinationNotInSourceStrategy
+ additionalProperties: false
+ description: d) Column in destination, but not in source
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap:
+ type: object
+ title: AutoMap
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue:
+ type: object
+ title: Continue
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ properties:
+ continue:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue'
+ title: continue
+ description: In your version, "Continue" = "if init_schema => create column, else skip"
+ drop:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop'
+ title: drop
+ halt:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt'
+ title: halt
+ title: ColumnInSourceMappedNotInDestinationStrategy
+ additionalProperties: false
+ description: c) Column in source + mapped, but missing in destination
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue:
+ type: object
+ title: Continue
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop:
+ type: object
+ title: Drop
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ properties:
+ passthrough:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough'
+ title: passthrough
+ autoMap:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap'
+ title: auto_map
+ halt:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt'
+ title: halt
+ drop:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop'
+ title: drop
+ title: ColumnInSourceNotMappedStrategy
+ additionalProperties: false
+ description: a) Column present in source, not mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap:
+ type: object
+ title: AutoMap
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop:
+ type: object
+ title: Drop
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough:
+ type: object
+ title: Passthrough
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ properties:
+ continue:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue'
+ title: continue
+ description: e.g. treat as NULL or skip
+ halt:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt'
+ title: halt
+ description: fail the job
+ title: ColumnMappedNotInSourceStrategy
+ additionalProperties: false
+ description: b) Column mapped, but not in source
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue:
+ type: object
+ title: Continue
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnInDestinationNoLongerInSource
+ - not:
+ anyOf:
+ - required:
+ - columnInDestinationNoLongerInSource
+ - anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - not:
+ anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - anyOf:
+ - required:
+ - columnInSourceNotMapped
+ - not:
+ anyOf:
+ - required:
+ - columnInSourceNotMapped
+ - anyOf:
+ - required:
+ - columnMappedNotInSource
+ - not:
+ anyOf:
+ - required:
+ - columnMappedNotInSource
+ properties:
+ columnInSourceNotMapped:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy'
+ title: column_in_source_not_mapped
+ description: When a column is present in source but not mapped
+ columnMappedNotInSource:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy'
+ title: column_mapped_not_in_source
+ description: When a column is mapped but not in source
+ columnInSourceMappedNotInDestination:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy'
+ title: column_in_source_mapped_not_in_destination
+ description: When a column is in source + mapped, but missing in destination
+ columnInDestinationNoLongerInSource:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy'
+ title: column_in_destination_no_longer_in_source
+ description: When a column is in the destination but not in source
+ title: MapAllColumns
+ additionalProperties: false
+ description: |-
+ -------------------------------------------------------------
+ 1. MapAllColumns
+ -------------------------------------------------------------
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - not:
+ anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - anyOf:
+ - required:
+ - columnMappedNotInSource
+ - not:
+ anyOf:
+ - required:
+ - columnMappedNotInSource
+ properties:
+ columnMappedNotInSource:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy'
+ title: column_mapped_not_in_source
+ description: Mapped but missing in source
+ columnInSourceMappedNotInDestination:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy'
+ title: column_in_source_mapped_not_in_destination
+ description: In source + mapped, but missing in destination
+ title: MapDefinedColumns
+ additionalProperties: false
+ description: |-
+ -------------------------------------------------------------
+ 2. MapDefinedColumns
+ -------------------------------------------------------------
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnStrategy
+ - not:
+ anyOf:
+ - required:
+ - columnStrategy
+ - anyOf:
+ - required:
+ - schemaStrategy
+ - not:
+ anyOf:
+ - required:
+ - schemaStrategy
+ - anyOf:
+ - required:
+ - tableStrategy
+ - not:
+ anyOf:
+ - required:
+ - tableStrategy
+ properties:
+ schemaStrategy:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy'
+ title: schema_strategy
+ description: Configure how schemas are handled during a job run
+ tableStrategy:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy'
+ title: table_strategy
+ description: Configure how tables are handled during a job run
+ columnStrategy:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy'
+ title: column_strategy
+ description: Configure how columns are handled during a job run
+ title: SchemaChange
+ additionalProperties: false
+ description: |-
+ Configure how schemas, tables, and columns are handled during a job run.
+ If anything is not defined, a system-defined fallback will be implemented. Further information can be found in the documentation.
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnStrategy
+ - not:
+ anyOf:
+ - required:
+ - columnStrategy
+ - anyOf:
+ - required:
+ - destinationSchema
+ - not:
+ anyOf:
+ - required:
+ - destinationSchema
+ - anyOf:
+ - required:
+ - tableStrategy
+ - not:
+ anyOf:
+ - required:
+ - tableStrategy
+ properties:
+ schema:
+ type: string
+ title: schema
+ minLength: 1
+ description: The database schema this mapping belongs to
+ destinationSchema:
+ type: string
+ title: destination_schema
+ description: Optionally specify a destination schema that this mapping will go to
+ tableMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping'
+ title: table_mappings
+ description: The list of table mappings that will be used to map data from the source to the destination
+ tableStrategy:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy'
+ title: table_strategy
+ description: Optionally specify a table strategy. This will override the global table strategy for this schema
+ columnStrategy:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy'
+ title: column_strategy
+ description: Optionally specify a column strategy. This will override the global column strategy for this schema
+ title: SchemaMapping
+ additionalProperties: false
+ description: Configuration for a specific schema mapping
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnStrategy
+ - not:
+ anyOf:
+ - required:
+ - columnStrategy
+ - anyOf:
+ - required:
+ - destinationTable
+ - not:
+ anyOf:
+ - required:
+ - destinationTable
+ properties:
+ table:
+ type: string
+ title: table
+ minLength: 1
+ description: The database table this mapping belongs to
+ destinationTable:
+ type: string
+ title: destination_table
+ description: Optionally specify a destination table that this mapping will go to
+ columnMappings:
+ type: array
+ items:
+ $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping'
+ title: column_mappings
+ description: The list of column mappings that will be used to map data from the source to the destination
+ columnStrategy:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy'
+ title: column_strategy
+ description: Optionally specify a column strategy. This will override the global column strategy for this table
+ title: TableMapping
+ additionalProperties: false
+ description: Configuration for a specific table mapping in a schema
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - transformer
+ - not:
+ anyOf:
+ - required:
+ - transformer
+ anyOf:
+ - required:
+ - transformer
+ - not:
+ anyOf:
+ - required:
+ - transformer
+ properties:
+ column:
+ type: string
+ title: column
+ minLength: 1
+ description: The column this mapping belongs to
+ transformer:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.TransformerConfig'
+ title: transformer
+ description: The transformer configuration that will be applied to each cell in the column
+ title: ColumnMapping
+ additionalProperties: false
+ description: Configuration for a specific column mapping in a table
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ - not:
+ anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ - not:
+ anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ properties:
+ mapAllSchemas:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas'
+ title: map_all_schemas
+ description: When this strategy is configured, all schemas are mapped
+ mapDefinedSchemas:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas'
+ title: map_defined_schemas
+ description: When this strategy is configured, only the schemas that are defined are mapped
+ title: SchemaStrategy
+ additionalProperties: false
+ description: The strategy used to configure how schemas are handled during a job run
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas:
+ type: object
+ title: MapAllSchemas
+ additionalProperties: false
+ description: When this strategy is configured, all schemas are mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas:
+ type: object
+ title: MapDefinedSchemas
+ additionalProperties: false
+ description: When this strategy is configured, only the schemas that are defined are mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ - not:
+ anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ - not:
+ anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ properties:
+ mapAllTables:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables'
+ title: map_all_tables
+ description: When this strategy is configured, all tables are mapped
+ mapDefinedTables:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables'
+ title: map_defined_tables
+ description: When this strategy is configured, only the tables that are defined are mapped
+ title: TableStrategy
+ additionalProperties: false
+ description: The strategy used to configure how tables are handled during a job run
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables:
+ type: object
+ title: MapAllTables
+ additionalProperties: false
+ description: When this strategy is configured, all tables are mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables:
+ type: object
+ title: MapDefinedTables
+ additionalProperties: false
+ description: When this strategy is configured, only the tables that are defined are mapped
mgmt.v1alpha1.MongoDBDestinationConnectionOptions:
type: object
title: MongoDBDestinationConnectionOptions
diff --git a/docs/openapi/neosync.mgmt.v1alpha1.yaml b/docs/openapi/neosync.mgmt.v1alpha1.yaml
index 4d7b31916c..5efba4680d 100644
--- a/docs/openapi/neosync.mgmt.v1alpha1.yaml
+++ b/docs/openapi/neosync.mgmt.v1alpha1.yaml
@@ -10980,16 +10980,6 @@ components:
title: CreateJobRequest
additionalProperties: false
description: >+
- For sync jobs, at least one mapping is required:
-
- ```
-
- !has(this.job_type) || has(this.job_type.sync) ? size(this.mappings) >=
- 1 : true
-
- ```
-
-
For sync jobs, at least one destination is required:
```
@@ -12951,9 +12941,749 @@ components:
description: Filter configuration for table scanning
mgmt.v1alpha1.JobTypeConfig.JobTypeSync:
type: object
+ allOf:
+ - anyOf:
+ - required:
+ - schemaChange
+ - not:
+ anyOf:
+ - required:
+ - schemaChange
+ anyOf:
+ - required:
+ - schemaChange
+ - not:
+ anyOf:
+ - required:
+ - schemaChange
+ properties:
+ schemaChange:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange
+ title: schema_change
+ description: >-
+ Specify job-wide schema change strategies that will be used to map
+ data from the source to the destination.
+ This acts as the default configuration for all schemas and tables unless overridden by a schema mapping at a lower level.
+ schemaMappings:
+ type: array
+ items:
+ $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping
+ title: schema_mappings
+ description: >-
+ Specify schema mappings that will be used to map data from the
+ source to the destination
+ This replaces the mappings field and is used to configure column transformers as well as re-wire destination schemas and tables.
title: JobTypeSync
additionalProperties: false
description: The configuration for a data sync job
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ - not:
+ anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ - not:
+ anyOf:
+ - required:
+ - mapAllColumns
+ - required:
+ - mapDefinedColumns
+ properties:
+ mapAllColumns:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns
+ title: map_all_columns
+ description: >-
+ 1. Map all columns + user-defined sub-strategies for each mismatch
+ scenario
+ mapDefinedColumns:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns
+ title: map_defined_columns
+ description: >-
+ 2. Only map user-defined columns + sub-strategies for mismatch
+ scenarios
+ title: ColumnStrategy
+ additionalProperties: false
+ description: The strategy used to configure how columns are handled during a job run
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - continue
+ - required:
+ - halt
+ properties:
+ continue:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue
+ title: continue
+ description: '"Continue" => "if init_schema => drop column, else leave it alone"'
+ halt:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt
+ title: halt
+ autoMap:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap
+ title: auto_map
+ title: ColumnInDestinationNotInSourceStrategy
+ additionalProperties: false
+ description: d) Column in destination, but not in source
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap:
+ type: object
+ title: AutoMap
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue:
+ type: object
+ title: Continue
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - drop
+ - required:
+ - halt
+ properties:
+ continue:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue
+ title: continue
+ description: >-
+ In your version, "Continue" = "if init_schema => create column, else
+ skip"
+ drop:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop
+ title: drop
+ halt:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt
+ title: halt
+ title: ColumnInSourceMappedNotInDestinationStrategy
+ additionalProperties: false
+ description: c) Column in source + mapped, but missing in destination
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue:
+ type: object
+ title: Continue
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop:
+ type: object
+ title: Drop
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ - not:
+ anyOf:
+ - required:
+ - autoMap
+ - required:
+ - drop
+ - required:
+ - halt
+ - required:
+ - passthrough
+ properties:
+ passthrough:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough
+ title: passthrough
+ autoMap:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap
+ title: auto_map
+ halt:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt
+ title: halt
+ drop:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop
+ title: drop
+ title: ColumnInSourceNotMappedStrategy
+ additionalProperties: false
+ description: a) Column present in source, not mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap:
+ type: object
+ title: AutoMap
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop:
+ type: object
+ title: Drop
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough:
+ type: object
+ title: Passthrough
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ - not:
+ anyOf:
+ - required:
+ - continue
+ - required:
+ - halt
+ properties:
+ continue:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue
+ title: continue
+ description: e.g. treat as NULL or skip
+ halt:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt
+ title: halt
+ description: fail the job
+ title: ColumnMappedNotInSourceStrategy
+ additionalProperties: false
+ description: b) Column mapped, but not in source
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue:
+ type: object
+ title: Continue
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt:
+ type: object
+ title: Halt
+ additionalProperties: false
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnInDestinationNoLongerInSource
+ - not:
+ anyOf:
+ - required:
+ - columnInDestinationNoLongerInSource
+ - anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - not:
+ anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - anyOf:
+ - required:
+ - columnInSourceNotMapped
+ - not:
+ anyOf:
+ - required:
+ - columnInSourceNotMapped
+ - anyOf:
+ - required:
+ - columnMappedNotInSource
+ - not:
+ anyOf:
+ - required:
+ - columnMappedNotInSource
+ properties:
+ columnInSourceNotMapped:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy
+ title: column_in_source_not_mapped
+ description: When a column is present in source but not mapped
+ columnMappedNotInSource:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ title: column_mapped_not_in_source
+ description: When a column is mapped but not in source
+ columnInSourceMappedNotInDestination:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ title: column_in_source_mapped_not_in_destination
+ description: When a column is in source + mapped, but missing in destination
+ columnInDestinationNoLongerInSource:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy
+ title: column_in_destination_no_longer_in_source
+ description: When a column is in the destination but not in source
+ title: MapAllColumns
+ additionalProperties: false
+ description: |-
+ -------------------------------------------------------------
+ 1. MapAllColumns
+ -------------------------------------------------------------
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - not:
+ anyOf:
+ - required:
+ - columnInSourceMappedNotInDestination
+ - anyOf:
+ - required:
+ - columnMappedNotInSource
+ - not:
+ anyOf:
+ - required:
+ - columnMappedNotInSource
+ properties:
+ columnMappedNotInSource:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ title: column_mapped_not_in_source
+ description: Mapped but missing in source
+ columnInSourceMappedNotInDestination:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ title: column_in_source_mapped_not_in_destination
+ description: In source + mapped, but missing in destination
+ title: MapDefinedColumns
+ additionalProperties: false
+ description: |-
+ -------------------------------------------------------------
+ 2. MapDefinedColumns
+ -------------------------------------------------------------
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnStrategy
+ - not:
+ anyOf:
+ - required:
+ - columnStrategy
+ - anyOf:
+ - required:
+ - schemaStrategy
+ - not:
+ anyOf:
+ - required:
+ - schemaStrategy
+ - anyOf:
+ - required:
+ - tableStrategy
+ - not:
+ anyOf:
+ - required:
+ - tableStrategy
+ properties:
+ schemaStrategy:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy
+ title: schema_strategy
+ description: Configure how schemas are handled during a job run
+ tableStrategy:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy
+ title: table_strategy
+ description: Configure how tables are handled during a job run
+ columnStrategy:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ title: column_strategy
+ description: Configure how columns are handled during a job run
+ title: SchemaChange
+ additionalProperties: false
+ description: |-
+ Configure how schemas, tables, and columns are handled during a job run.
+ If anything is not defined, a system-defined fallback will be implemented. Further information can be found in the documentation.
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnStrategy
+ - not:
+ anyOf:
+ - required:
+ - columnStrategy
+ - anyOf:
+ - required:
+ - destinationSchema
+ - not:
+ anyOf:
+ - required:
+ - destinationSchema
+ - anyOf:
+ - required:
+ - tableStrategy
+ - not:
+ anyOf:
+ - required:
+ - tableStrategy
+ properties:
+ schema:
+ type: string
+ title: schema
+ minLength: 1
+ description: The database schema this mapping belongs to
+ destinationSchema:
+ type: string
+ title: destination_schema
+ description: Optionally specify a destination schema that this mapping will go to
+ tableMappings:
+ type: array
+ items:
+ $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping
+ title: table_mappings
+ description: >-
+ The list of table mappings that will be used to map data from the
+ source to the destination
+ tableStrategy:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy
+ title: table_strategy
+ description: >-
+ Optionally specify a table strategy. This will override the global
+ table strategy for this schema
+ columnStrategy:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ title: column_strategy
+ description: >-
+ Optionally specify a column strategy. This will override the global
+ column strategy for this schema
+ title: SchemaMapping
+ additionalProperties: false
+ description: Configuration for a specific schema mapping
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - columnStrategy
+ - not:
+ anyOf:
+ - required:
+ - columnStrategy
+ - anyOf:
+ - required:
+ - destinationTable
+ - not:
+ anyOf:
+ - required:
+ - destinationTable
+ properties:
+ table:
+ type: string
+ title: table
+ minLength: 1
+ description: The database table this mapping belongs to
+ destinationTable:
+ type: string
+ title: destination_table
+ description: Optionally specify a destination table that this mapping will go to
+ columnMappings:
+ type: array
+ items:
+ $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping
+ title: column_mappings
+ description: >-
+ The list of column mappings that will be used to map data from the
+ source to the destination
+ columnStrategy:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ title: column_strategy
+ description: >-
+ Optionally specify a column strategy. This will override the global
+ column strategy for this table
+ title: TableMapping
+ additionalProperties: false
+ description: Configuration for a specific table mapping in a schema
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - transformer
+ - not:
+ anyOf:
+ - required:
+ - transformer
+ anyOf:
+ - required:
+ - transformer
+ - not:
+ anyOf:
+ - required:
+ - transformer
+ properties:
+ column:
+ type: string
+ title: column
+ minLength: 1
+ description: The column this mapping belongs to
+ transformer:
+ allOf:
+ - $ref: '#/components/schemas/mgmt.v1alpha1.TransformerConfig'
+ title: transformer
+ description: >-
+ The transformer configuration that will be applied to each cell in
+ the column
+ title: ColumnMapping
+ additionalProperties: false
+ description: Configuration for a specific column mapping in a table
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ - not:
+ anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ - not:
+ anyOf:
+ - required:
+ - mapAllSchemas
+ - required:
+ - mapDefinedSchemas
+ properties:
+ mapAllSchemas:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas
+ title: map_all_schemas
+ description: When this strategy is configured, all schemas are mapped
+ mapDefinedSchemas:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas
+ title: map_defined_schemas
+ description: >-
+ When this strategy is configured, only the schemas that are defined
+ are mapped
+ title: SchemaStrategy
+ additionalProperties: false
+ description: The strategy used to configure how schemas are handled during a job run
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas:
+ type: object
+ title: MapAllSchemas
+ additionalProperties: false
+ description: When this strategy is configured, all schemas are mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas:
+ type: object
+ title: MapDefinedSchemas
+ additionalProperties: false
+ description: >-
+ When this strategy is configured, only the schemas that are defined are
+ mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy:
+ type: object
+ allOf:
+ - anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ - not:
+ anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ - not:
+ anyOf:
+ - required:
+ - mapAllTables
+ - required:
+ - mapDefinedTables
+ properties:
+ mapAllTables:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables
+ title: map_all_tables
+ description: When this strategy is configured, all tables are mapped
+ mapDefinedTables:
+ allOf:
+ - $ref: >-
+ #/components/schemas/mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables
+ title: map_defined_tables
+ description: >-
+ When this strategy is configured, only the tables that are defined
+ are mapped
+ title: TableStrategy
+ additionalProperties: false
+ description: The strategy used to configure how tables are handled during a job run
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables:
+ type: object
+ title: MapAllTables
+ additionalProperties: false
+ description: When this strategy is configured, all tables are mapped
+ mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables:
+ type: object
+ title: MapDefinedTables
+ additionalProperties: false
+ description: >-
+ When this strategy is configured, only the tables that are defined are
+ mapped
mgmt.v1alpha1.MongoDBDestinationConnectionOptions:
type: object
title: MongoDBDestinationConnectionOptions
diff --git a/docs/protos/mgmt/v1alpha1/job.proto.mdx b/docs/protos/mgmt/v1alpha1/job.proto.mdx
index fc01acd917..65fa74fef5 100644
--- a/docs/protos/mgmt/v1alpha1/job.proto.mdx
+++ b/docs/protos/mgmt/v1alpha1/job.proto.mdx
@@ -470,367 +470,483 @@ _**package** mgmt.v1alpha1_
### `JobTypeConfig.JobTypeSync`
-
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy`
+ \"if init_schema => drop column, else leave it alone\"","label":"","type":"Continue","longType":"JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue","fullType":"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue","ismap":false,"isoneof":true,"oneofdecl":"strategy","defaultValue":"","typeLink":"/api/mgmt/v1alpha1/job.proto#jobtypeconfigjobtypesynccolumnstrategycolumnindestinationnotinsourcestrategycontinue"},{"name":"halt","description":"","label":"","type":"Halt","longType":"JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt","fullType":"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt","ismap":false,"isoneof":true,"oneofdecl":"strategy","defaultValue":"","typeLink":"/api/mgmt/v1alpha1/job.proto#jobtypeconfigjobtypesynccolumnstrategycolumnindestinationnotinsourcestrategyhalt"},{"name":"auto_map","description":"","label":"","type":"AutoMap","longType":"JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap","fullType":"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap","ismap":false,"isoneof":true,"oneofdecl":"strategy","defaultValue":"","typeLink":"/api/mgmt/v1alpha1/job.proto#jobtypeconfigjobtypesynccolumnstrategycolumnindestinationnotinsourcestrategyautomap"}]}} />
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy`
+ create column, else skip\"","label":"","type":"Continue","longType":"JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue","fullType":"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue","ismap":false,"isoneof":true,"oneofdecl":"strategy","defaultValue":"","typeLink":"/api/mgmt/v1alpha1/job.proto#jobtypeconfigjobtypesynccolumnstrategycolumninsourcemappednotindestinationstrategycontinue"},{"name":"drop","description":"","label":"","type":"Drop","longType":"JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop","fullType":"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop","ismap":false,"isoneof":true,"oneofdecl":"strategy","defaultValue":"","typeLink":"/api/mgmt/v1alpha1/job.proto#jobtypeconfigjobtypesynccolumnstrategycolumninsourcemappednotindestinationstrategydrop"},{"name":"halt","description":"","label":"","type":"Halt","longType":"JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt","fullType":"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt","ismap":false,"isoneof":true,"oneofdecl":"strategy","defaultValue":"","typeLink":"/api/mgmt/v1alpha1/job.proto#jobtypeconfigjobtypesynccolumnstrategycolumninsourcemappednotindestinationstrategyhalt"}]}} />
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns`
+
+
+
+### `JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaChange`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaMapping`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaStrategy`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas`
+
+
+
+### `JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas`
+
+
+
+### `JobTypeConfig.JobTypeSync.TableStrategy`
+
+
+
+### `JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables`
+
+
+
+### `JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables`
+
### `MongoDBDestinationConnectionOptions`
-
+
### `MongoDBSourceConnectionOptions`
-
+
### `MssqlDestinationConnectionOptions`
-
+
### `MssqlOnConflictConfig`
-
+
### `MssqlSourceConnectionOptions`
-
+
### `MssqlSourceConnectionOptions.ColumnRemovalStrategy`
-
+
### `MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob`
-
+
### `MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob`
-
+
### `MssqlSourceConnectionOptions.NewColumnAdditionStrategy`
-
+
### `MssqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob`
-
+
### `MssqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough`
-
+
### `MssqlSourceSchemaOption`
-
+
### `MssqlSourceSchemaSubset`
-
+
### `MssqlSourceTableOption`
-
+
### `MssqlTruncateTableConfig`
-
+
### `MysqlDestinationConnectionOptions`
-
+
### `MysqlOnConflictConfig`
-
+
### `MysqlOnConflictConfig.MysqlOnConflictDoNothing`
-
+
### `MysqlOnConflictConfig.MysqlOnConflictUpdate`
-
+
### `MysqlSourceConnectionOptions`
-
+
### `MysqlSourceConnectionOptions.ColumnRemovalStrategy`
-
+
### `MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob`
-
+
### `MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob`
-
+
### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy`
-
+
### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap`
-
+
### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob`
-
+
### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough`
-
+
### `MysqlSourceSchemaOption`
-
+
### `MysqlSourceSchemaSubset`
-
+
### `MysqlSourceTableOption`
-
+
### `MysqlTruncateTableConfig`
-
+
### `NewJobHook`
-
+
### `PauseJobRequest`
-
+
### `PauseJobResponse`
-
+
### `PendingActivity`
-
+
### `PiiDetectionReport`
-
+
### `PiiDetectionReport.TableReport`
-
+
### `PiiDetectionReport.TableReport.ColumnReport`
-
+
### `PiiDetectionReport.TableReport.ColumnReport.LLM`
-
+
### `PiiDetectionReport.TableReport.ColumnReport.Regex`
-
+
### `PostgresDestinationConnectionOptions`
-
+
### `PostgresOnConflictConfig`
-
+
### `PostgresOnConflictConfig.PostgresOnConflictDoNothing`
-
+
### `PostgresOnConflictConfig.PostgresOnConflictUpdate`
-
+
### `PostgresSourceConnectionOptions`
-
+
### `PostgresSourceConnectionOptions.ColumnRemovalStrategy`
-
+
### `PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob`
-
+
### `PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJob`
-
+
### `PostgresSourceConnectionOptions.NewColumnAdditionStrategy`
-
+
### `PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap`
-
+
### `PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob`
-
+
### `PostgresSourceConnectionOptions.NewColumnAdditionStrategy.Passthrough`
-
+
### `PostgresSourceSchemaOption`
-
+
### `PostgresSourceSchemaSubset`
-
+
### `PostgresSourceTableOption`
-
+
### `PostgresTruncateTableConfig`
-
+
### `RetryPolicy`
-
+
### `RunContextKey`
-
+
### `SetJobHookEnabledRequest`
-
+
### `SetJobHookEnabledResponse`
-
+
### `SetJobSourceSqlConnectionSubsetsRequest`
-
+
### `SetJobSourceSqlConnectionSubsetsResponse`
-
+
### `SetJobSyncOptionsRequest`
-
+
### `SetJobSyncOptionsResponse`
-
+
### `SetJobWorkflowOptionsRequest`
-
+
### `SetJobWorkflowOptionsResponse`
-
+
### `SetRunContextRequest`
-
+
### `SetRunContextResponse`
-
+
### `SetRunContextsRequest`
-
+
### `SetRunContextsResponse`
-
+
### `TableError`
-
+
### `TableError.TableErrorReport`
-
+
### `TerminateJobRunRequest`
-
+
### `TerminateJobRunResponse`
-
+
### `UpdateJobDestinationConnectionRequest`
-
+
### `UpdateJobDestinationConnectionResponse`
-
+
### `UpdateJobHookRequest`
-
+
### `UpdateJobHookResponse`
-
+
### `UpdateJobScheduleRequest`
-
+
### `UpdateJobScheduleResponse`
-
+
### `UpdateJobSourceConnectionRequest`
-
+
### `UpdateJobSourceConnectionResponse`
-
+
### `ValidateJobMappingsRequest`
-
+
### `ValidateJobMappingsResponse`
-
+
### `ValidateSchemaRequest`
-
+
### `ValidateSchemaResponse`
-
+
### `ValidateSchemaResponse.Table`
-
+
### `VirtualForeignConstraint`
-
+
### `VirtualForeignKey`
-
+
### `WorkflowOptions`
-
+
---
## Enums
diff --git a/docs/protos/proto_docs.json b/docs/protos/proto_docs.json
index b1cea762ee..0a4010827c 100644
--- a/docs/protos/proto_docs.json
+++ b/docs/protos/proto_docs.json
@@ -15003,6 +15003,819 @@
"fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync",
"description": "The configuration for a data sync job",
"hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "schema_change",
+ "description": "Specify job-wide schema change strategies that will be used to map data from the source to the destination.\nThis acts as the default configuration for all schemas and tables unless overridden by a schema mapping at a lower level.",
+ "label": "optional",
+ "type": "SchemaChange",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaChange",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_schema_change",
+ "defaultValue": ""
+ },
+ {
+ "name": "schema_mappings",
+ "description": "Specify schema mappings that will be used to map data from the source to the destination\nThis replaces the mappings field and is used to configure column transformers as well as re-wire destination schemas and tables.",
+ "label": "repeated",
+ "type": "SchemaMapping",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaMapping",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping",
+ "ismap": false,
+ "isoneof": false,
+ "oneofdecl": "",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "ColumnStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "description": "The strategy used to configure how columns are handled during a job run",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "map_all_columns",
+ "description": "1. Map all columns + user-defined sub-strategies for each mismatch scenario",
+ "label": "",
+ "type": "MapAllColumns",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "map_defined_columns",
+ "description": "2. Only map user-defined columns + sub-strategies for mismatch scenarios",
+ "label": "",
+ "type": "MapDefinedColumns",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "ColumnInDestinationNotInSourceStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy",
+ "description": "d) Column in destination, but not in source",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "continue",
+ "description": "\"Continue\" =\u003e \"if init_schema =\u003e drop column, else leave it alone\"",
+ "label": "",
+ "type": "Continue",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "halt",
+ "description": "",
+ "label": "",
+ "type": "Halt",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "auto_map",
+ "description": "",
+ "label": "",
+ "type": "AutoMap",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "AutoMap",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Continue",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Halt",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "ColumnInSourceMappedNotInDestinationStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy",
+ "description": "c) Column in source + mapped, but missing in destination",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "continue",
+ "description": "In your version, \"Continue\" = \"if init_schema =\u003e create column, else skip\"",
+ "label": "",
+ "type": "Continue",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "drop",
+ "description": "",
+ "label": "",
+ "type": "Drop",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "halt",
+ "description": "",
+ "label": "",
+ "type": "Halt",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "Continue",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Drop",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Halt",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "ColumnInSourceNotMappedStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy",
+ "description": "a) Column present in source, not mapped",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "passthrough",
+ "description": "",
+ "label": "",
+ "type": "Passthrough",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "auto_map",
+ "description": "",
+ "label": "",
+ "type": "AutoMap",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "halt",
+ "description": "",
+ "label": "",
+ "type": "Halt",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "drop",
+ "description": "",
+ "label": "",
+ "type": "Drop",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "AutoMap",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Drop",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Halt",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Passthrough",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "ColumnMappedNotInSourceStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy",
+ "description": "b) Column mapped, but not in source",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "continue",
+ "description": "e.g. treat as NULL or skip",
+ "label": "",
+ "type": "Continue",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "halt",
+ "description": "fail the job",
+ "label": "",
+ "type": "Halt",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "Continue",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "Halt",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt",
+ "description": "",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "MapAllColumns",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns",
+ "description": "-------------------------------------------------------------\n1. MapAllColumns\n-------------------------------------------------------------",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "column_in_source_not_mapped",
+ "description": "When a column is present in source but not mapped",
+ "label": "optional",
+ "type": "ColumnInSourceNotMappedStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_in_source_not_mapped",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_mapped_not_in_source",
+ "description": "When a column is mapped but not in source",
+ "label": "optional",
+ "type": "ColumnMappedNotInSourceStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_mapped_not_in_source",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_in_source_mapped_not_in_destination",
+ "description": "When a column is in source + mapped, but missing in destination",
+ "label": "optional",
+ "type": "ColumnInSourceMappedNotInDestinationStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_in_source_mapped_not_in_destination",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_in_destination_no_longer_in_source",
+ "description": "When a column is in the destination but not in source",
+ "label": "optional",
+ "type": "ColumnInDestinationNotInSourceStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_in_destination_no_longer_in_source",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "MapDefinedColumns",
+ "longName": "JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns",
+ "description": "-------------------------------------------------------------\n2. MapDefinedColumns\n-------------------------------------------------------------",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "column_mapped_not_in_source",
+ "description": "Mapped but missing in source",
+ "label": "optional",
+ "type": "ColumnMappedNotInSourceStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_mapped_not_in_source",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_in_source_mapped_not_in_destination",
+ "description": "In source + mapped, but missing in destination",
+ "label": "optional",
+ "type": "ColumnInSourceMappedNotInDestinationStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_in_source_mapped_not_in_destination",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "SchemaChange",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaChange",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange",
+ "description": "Configure how schemas, tables, and columns are handled during a job run.\nIf anything is not defined, a system-defined fallback will be implemented. Further information can be found in the documentation.",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "schema_strategy",
+ "description": "Configure how schemas are handled during a job run",
+ "label": "optional",
+ "type": "SchemaStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_schema_strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "table_strategy",
+ "description": "Configure how tables are handled during a job run",
+ "label": "optional",
+ "type": "TableStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.TableStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_table_strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_strategy",
+ "description": "Configure how columns are handled during a job run",
+ "label": "optional",
+ "type": "ColumnStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "SchemaMapping",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaMapping",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping",
+ "description": "Configuration for a specific schema mapping",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "schema",
+ "description": "The database schema this mapping belongs to",
+ "label": "",
+ "type": "string",
+ "longType": "string",
+ "fullType": "string",
+ "ismap": false,
+ "isoneof": false,
+ "oneofdecl": "",
+ "defaultValue": ""
+ },
+ {
+ "name": "destination_schema",
+ "description": "Optionally specify a destination schema that this mapping will go to",
+ "label": "optional",
+ "type": "string",
+ "longType": "string",
+ "fullType": "string",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_destination_schema",
+ "defaultValue": ""
+ },
+ {
+ "name": "table_mappings",
+ "description": "The list of table mappings that will be used to map data from the source to the destination",
+ "label": "repeated",
+ "type": "TableMapping",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping",
+ "ismap": false,
+ "isoneof": false,
+ "oneofdecl": "",
+ "defaultValue": ""
+ },
+ {
+ "name": "table_strategy",
+ "description": "Optionally specify a table strategy. This will override the global table strategy for this schema",
+ "label": "optional",
+ "type": "TableStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.TableStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_table_strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_strategy",
+ "description": "Optionally specify a column strategy. This will override the global column strategy for this schema",
+ "label": "optional",
+ "type": "ColumnStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "TableMapping",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping",
+ "description": "Configuration for a specific table mapping in a schema",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "table",
+ "description": "The database table this mapping belongs to",
+ "label": "",
+ "type": "string",
+ "longType": "string",
+ "fullType": "string",
+ "ismap": false,
+ "isoneof": false,
+ "oneofdecl": "",
+ "defaultValue": ""
+ },
+ {
+ "name": "destination_table",
+ "description": "Optionally specify a destination table that this mapping will go to",
+ "label": "optional",
+ "type": "string",
+ "longType": "string",
+ "fullType": "string",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_destination_table",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_mappings",
+ "description": "The list of column mappings that will be used to map data from the source to the destination",
+ "label": "repeated",
+ "type": "ColumnMapping",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping",
+ "ismap": false,
+ "isoneof": false,
+ "oneofdecl": "",
+ "defaultValue": ""
+ },
+ {
+ "name": "column_strategy",
+ "description": "Optionally specify a column strategy. This will override the global column strategy for this table",
+ "label": "optional",
+ "type": "ColumnStrategy",
+ "longType": "JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_column_strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "ColumnMapping",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping",
+ "description": "Configuration for a specific column mapping in a table",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "column",
+ "description": "The column this mapping belongs to",
+ "label": "",
+ "type": "string",
+ "longType": "string",
+ "fullType": "string",
+ "ismap": false,
+ "isoneof": false,
+ "oneofdecl": "",
+ "defaultValue": ""
+ },
+ {
+ "name": "transformer",
+ "description": "The transformer configuration that will be applied to each cell in the column",
+ "label": "optional",
+ "type": "TransformerConfig",
+ "longType": "TransformerConfig",
+ "fullType": "mgmt.v1alpha1.TransformerConfig",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "_transformer",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "SchemaStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy",
+ "description": "The strategy used to configure how schemas are handled during a job run",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "map_all_schemas",
+ "description": "When this strategy is configured, all schemas are mapped",
+ "label": "",
+ "type": "MapAllSchemas",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "map_defined_schemas",
+ "description": "When this strategy is configured, only the schemas that are defined are mapped",
+ "label": "",
+ "type": "MapDefinedSchemas",
+ "longType": "JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "MapAllSchemas",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas",
+ "description": "When this strategy is configured, all schemas are mapped",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "MapDefinedSchemas",
+ "longName": "JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas",
+ "description": "When this strategy is configured, only the schemas that are defined are mapped",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "TableStrategy",
+ "longName": "JobTypeConfig.JobTypeSync.TableStrategy",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy",
+ "description": "The strategy used to configure how tables are handled during a job run",
+ "hasExtensions": false,
+ "hasFields": true,
+ "hasOneofs": true,
+ "extensions": [],
+ "fields": [
+ {
+ "name": "map_all_tables",
+ "description": "When this strategy is configured, all tables are mapped",
+ "label": "",
+ "type": "MapAllTables",
+ "longType": "JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ },
+ {
+ "name": "map_defined_tables",
+ "description": "When this strategy is configured, only the tables that are defined are mapped",
+ "label": "",
+ "type": "MapDefinedTables",
+ "longType": "JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables",
+ "fullType": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables",
+ "ismap": false,
+ "isoneof": true,
+ "oneofdecl": "strategy",
+ "defaultValue": ""
+ }
+ ]
+ },
+ {
+ "name": "MapAllTables",
+ "longName": "JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables",
+ "description": "When this strategy is configured, all tables are mapped",
+ "hasExtensions": false,
+ "hasFields": false,
+ "hasOneofs": false,
+ "extensions": [],
+ "fields": []
+ },
+ {
+ "name": "MapDefinedTables",
+ "longName": "JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables",
+ "fullName": "mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables",
+ "description": "When this strategy is configured, only the tables that are defined are mapped",
+ "hasExtensions": false,
"hasFields": false,
"hasOneofs": false,
"extensions": [],
diff --git a/frontend/packages/sdk/src/client/mgmt/v1alpha1/job_pb.ts b/frontend/packages/sdk/src/client/mgmt/v1alpha1/job_pb.ts
index 3e5d0eb791..fcd29e23c8 100644
--- a/frontend/packages/sdk/src/client/mgmt/v1alpha1/job_pb.ts
+++ b/frontend/packages/sdk/src/client/mgmt/v1alpha1/job_pb.ts
@@ -17,7 +17,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file mgmt/v1alpha1/job.proto.
*/
export const file_mgmt_v1alpha1_job: GenFile = /*@__PURE__*/
- fileDesc("ChdtZ210L3YxYWxwaGExL2pvYi5wcm90bxINbWdtdC52MWFscGhhMSIuCg5HZXRKb2JzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASIzCg9HZXRKb2JzUmVzcG9uc2USIAoEam9icxgBIAMoCzISLm1nbXQudjFhbHBoYTEuSm9iIkUKCUpvYlNvdXJjZRI4CgdvcHRpb25zGAEgASgLMh8ubWdtdC52MWFscGhhMS5Kb2JTb3VyY2VPcHRpb25zQga6SAPIAQEioQQKEEpvYlNvdXJjZU9wdGlvbnMSQgoIcG9zdGdyZXMYASABKAsyLi5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABI9CgZhd3NfczMYAiABKAsyKy5tZ210LnYxYWxwaGExLkF3c1MzU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABI8CgVteXNxbBgDIAEoCzIrLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9uc0gAEjgKCGdlbmVyYXRlGAQgASgLMiQubWdtdC52MWFscGhhMS5HZW5lcmF0ZVNvdXJjZU9wdGlvbnNIABI9CgthaV9nZW5lcmF0ZRgFIAEoCzImLm1nbXQudjFhbHBoYTEuQWlHZW5lcmF0ZVNvdXJjZU9wdGlvbnNIABJACgdtb25nb2RiGAYgASgLMi0ubWdtdC52MWFscGhhMS5Nb25nb0RCU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABJCCghkeW5hbW9kYhgHIAEoCzIuLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VDb25uZWN0aW9uT3B0aW9uc0gAEjwKBW1zc3FsGAggASgLMisubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zSABCDwoGY29uZmlnEgW6SAIIASJuChRDcmVhdGVKb2JEZXN0aW5hdGlvbhIfCg1jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABARI1CgdvcHRpb25zGAIgASgLMiQubWdtdC52MWFscGhhMS5Kb2JEZXN0aW5hdGlvbk9wdGlvbnMidAoOSm9iRGVzdGluYXRpb24SHwoNY29ubmVjdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESNQoHb3B0aW9ucxgCIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iRGVzdGluYXRpb25PcHRpb25zEgoKAmlkGAMgASgJIt0CChdBaUdlbmVyYXRlU291cmNlT3B0aW9ucxIiChBhaV9jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABARJGCgdzY2hlbWFzGAIgAygLMisubWdtdC52MWFscGhhMS5BaUdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uQgi6SAWSAQIIARIuChdma19zb3VyY2VfY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQFIAIgBARIbCgptb2RlbF9uYW1lGAQgASgJQge6SARyAhABEhgKC3VzZXJfcHJvbXB0GAUgASgJSAGIAQESKwoTZ2VuZXJhdGVfYmF0Y2hfc2l6ZRgGIAEoA0IJukgGIgQYZCgBSAKIAQFCGgoYX2ZrX3NvdXJjZV9jb25uZWN0aW9uX2lkQg4KDF91c2VyX3Byb21wdEIWChRfZ2VuZXJhdGVfYmF0Y2hfc2l6ZSJ9ChxBaUdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARJECgZ0YWJsZXMYAiADKAsyKi5tZ210LnYxYWxwaGExLkFpR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiVAobQWlHZW5lcmF0ZVNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEh0KCXJvd19jb3VudBgCIAEoA0IKukgHIgUY6AcoASKvAQoVR2VuZXJhdGVTb3VyY2VPcHRpb25zEkQKB3NjaGVtYXMYASADKAsyKS5tZ210LnYxYWxwaGExLkdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uQgi6SAWSAQIIARIuChdma19zb3VyY2VfY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQFIAIgBAUIaChhfZmtfc291cmNlX2Nvbm5lY3Rpb25faWRKBAgCEAMieQoaR2VuZXJhdGVTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEkIKBnRhYmxlcxgCIAMoCzIoLm1nbXQudjFhbHBoYTEuR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiTwoZR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIaCglyb3dfY291bnQYAiABKANCB7pIBCICKAEiQQoeTW9uZ29EQlNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEh8KDWNvbm5lY3Rpb25faWQYASABKAlCCLpIBXIDsAEBIu8BCh9EeW5hbW9EQlNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEh8KDWNvbm5lY3Rpb25faWQYASABKAlCCLpIBXIDsAEBEjgKBnRhYmxlcxgCIAMoCzIoLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VUYWJsZU9wdGlvbhJRChN1bm1hcHBlZF90cmFuc2Zvcm1zGAMgASgLMjQubWdtdC52MWFscGhhMS5EeW5hbW9EQlNvdXJjZVVubWFwcGVkVHJhbnNmb3JtQ29uZmlnEh4KFmVuYWJsZV9jb25zaXN0ZW50X3JlYWQYBCABKAgi/QEKJUR5bmFtb0RCU291cmNlVW5tYXBwZWRUcmFuc2Zvcm1Db25maWcSLwoBYhgBIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVyEjUKB2Jvb2xlYW4YAiABKAsyJC5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmdUcmFuc2Zvcm1lchIvCgFuGAQgASgLMiQubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nVHJhbnNmb3JtZXISLwoBcxgGIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVySgQIAxAESgQIBRAGIl8KGUR5bmFtb0RCU291cmNlVGFibGVPcHRpb24SFgoFdGFibGUYASABKAlCB7pIBHICEAESGQoMd2hlcmVfY2xhdXNlGAIgASgJSACIAQFCDwoNX3doZXJlX2NsYXVzZSKaCAofUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxI6CgdzY2hlbWFzGAIgAygLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSbgocbmV3X2NvbHVtbl9hZGRpdGlvbl9zdHJhdGVneRgFIAEoCzJILm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5EmUKF2NvbHVtbl9yZW1vdmFsX3N0cmF0ZWd5GAYgASgLMkQubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneRqFAwoZTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRJkCghoYWx0X2pvYhgBIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkhhbHRKb2JIABJkCghhdXRvX21hcBgCIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkF1dG9NYXBIABJrCgtwYXNzdGhyb3VnaBgDIAEoCzJULm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LlBhc3N0aHJvdWdoSAAaCQoHSGFsdEpvYhoJCgdBdXRvTWFwGg0KC1Bhc3N0aHJvdWdoQgoKCHN0cmF0ZWd5GokCChVDb2x1bW5SZW1vdmFsU3RyYXRlZ3kSYAoIaGFsdF9qb2IYASABKAsyTC5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkhhbHRKb2JIABJoCgxjb250aW51ZV9qb2IYAiABKAsyUC5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkNvbnRpbnVlSm9iSAAaCQoHSGFsdEpvYhoNCgtDb250aW51ZUpvYkIKCghzdHJhdGVneUoECAEQAiJ5ChpQb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbhIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESQgoGdGFibGVzGAIgAygLMigubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVRhYmxlT3B0aW9uQgi6SAWSAQIIASJfChlQb3N0Z3Jlc1NvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEhkKDHdoZXJlX2NsYXVzZRgCIAEoCUgAiAEBQg8KDV93aGVyZV9jbGF1c2UioggKHE15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMSJwobaGFsdF9vbl9uZXdfY29sdW1uX2FkZGl0aW9uGAEgASgIQgIYARI3CgdzY2hlbWFzGAIgAygLMiYubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSYgoXY29sdW1uX3JlbW92YWxfc3RyYXRlZ3kYBSABKAsyQS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5EmsKHG5ld19jb2x1bW5fYWRkaXRpb25fc3RyYXRlZ3kYBiABKAsyRS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRqDAgoVQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5El0KCGhhbHRfam9iGAEgASgLMkkubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5IYWx0Sm9iSAASZQoMY29udGludWVfam9iGAIgASgLMk0ubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5Db250aW51ZUpvYkgAGgkKB0hhbHRKb2IaDQoLQ29udGludWVKb2JCCgoIc3RyYXRlZ3ka/AIKGU5ld0NvbHVtbkFkZGl0aW9uU3RyYXRlZ3kSYQoIaGFsdF9qb2IYASABKAsyTS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5IYWx0Sm9iSAASYQoIYXV0b19tYXAYAiABKAsyTS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5BdXRvTWFwSAASaAoLcGFzc3Rocm91Z2gYAyABKAsyUS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5QYXNzdGhyb3VnaEgAGgkKB0hhbHRKb2IaCQoHQXV0b01hcBoNCgtQYXNzdGhyb3VnaEIKCghzdHJhdGVneSJzChdNeXNxbFNvdXJjZVNjaGVtYU9wdGlvbhIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESPwoGdGFibGVzGAIgAygLMiUubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVRhYmxlT3B0aW9uQgi6SAWSAQIIASJcChZNeXNxbFNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEhkKDHdoZXJlX2NsYXVzZRgCIAEoCUgAiAEBQg8KDV93aGVyZV9jbGF1c2UitAcKHE1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMSJwobaGFsdF9vbl9uZXdfY29sdW1uX2FkZGl0aW9uGAEgASgIQgIYARI3CgdzY2hlbWFzGAIgAygLMiYubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSYgoXY29sdW1uX3JlbW92YWxfc3RyYXRlZ3kYBSABKAsyQS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5EmsKHG5ld19jb2x1bW5fYWRkaXRpb25fc3RyYXRlZ3kYBiABKAsyRS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRqDAgoVQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5El0KCGhhbHRfam9iGAEgASgLMkkubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5IYWx0Sm9iSAASZQoMY29udGludWVfam9iGAIgASgLMk0ubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5Db250aW51ZUpvYkgAGgkKB0hhbHRKb2IaDQoLQ29udGludWVKb2JCCgoIc3RyYXRlZ3kajgIKGU5ld0NvbHVtbkFkZGl0aW9uU3RyYXRlZ3kSYQoIaGFsdF9qb2IYASABKAsyTS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5IYWx0Sm9iSAASaAoLcGFzc3Rocm91Z2gYAiABKAsyUS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5QYXNzdGhyb3VnaEgAGgkKB0hhbHRKb2IaDQoLUGFzc3Rocm91Z2hCCgoIc3RyYXRlZ3kicwoXTXNzcWxTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEj8KBnRhYmxlcxgCIAMoCzIlLm1nbXQudjFhbHBoYTEuTXNzcWxTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiXAoWTXNzcWxTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIZCgx3aGVyZV9jbGF1c2UYAiABKAlIAIgBAUIPCg1fd2hlcmVfY2xhdXNlIj8KHEF3c1MzU291cmNlQ29ubmVjdGlvbk9wdGlvbnMSHwoNY29ubmVjdGlvbl9pZBgBIAEoCUIIukgFcgOwAQEi2wQKFUpvYkRlc3RpbmF0aW9uT3B0aW9ucxJPChBwb3N0Z3Jlc19vcHRpb25zGAEgASgLMjMubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnNIABJKCg5hd3NfczNfb3B0aW9ucxgCIAEoCzIwLm1nbXQudjFhbHBoYTEuQXdzUzNEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASSQoNbXlzcWxfb3B0aW9ucxgDIAEoCzIwLm1nbXQudjFhbHBoYTEuTXlzcWxEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASTQoPbW9uZ29kYl9vcHRpb25zGAQgASgLMjIubWdtdC52MWFscGhhMS5Nb25nb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEl4KGGdjcF9jbG91ZHN0b3JhZ2Vfb3B0aW9ucxgFIAEoCzI6Lm1nbXQudjFhbHBoYTEuR2NwQ2xvdWRTdG9yYWdlRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEk8KEGR5bmFtb2RiX29wdGlvbnMYBiABKAsyMy5tZ210LnYxYWxwaGExLkR5bmFtb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEkkKDW1zc3FsX29wdGlvbnMYByABKAsyMC5tZ210LnYxYWxwaGExLk1zc3FsRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAQg8KBmNvbmZpZxIFukgCCAEiJQojTW9uZ29EQkRlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMiLQorR2NwQ2xvdWRTdG9yYWdlRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucyJuCiREeW5hbW9EQkRlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSRgoOdGFibGVfbWFwcGluZ3MYASADKAsyLi5tZ210LnYxYWxwaGExLkR5bmFtb0RCRGVzdGluYXRpb25UYWJsZU1hcHBpbmciUgofRHluYW1vREJEZXN0aW5hdGlvblRhYmxlTWFwcGluZxIUCgxzb3VyY2VfdGFibGUYASABKAkSGQoRZGVzdGluYXRpb25fdGFibGUYAiABKAkiygIKJFBvc3RncmVzRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxJCCg50cnVuY2F0ZV90YWJsZRgBIAEoCzIqLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNUcnVuY2F0ZVRhYmxlQ29uZmlnEhkKEWluaXRfdGFibGVfc2NoZW1hGAIgASgIEjwKC29uX2NvbmZsaWN0GAMgASgLMicubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc09uQ29uZmxpY3RDb25maWcSIwobc2tpcF9mb3JlaWduX2tleV92aW9sYXRpb25zGAQgASgIEikKBWJhdGNoGAUgASgLMhoubWdtdC52MWFscGhhMS5CYXRjaENvbmZpZxIjCg1tYXhfaW5fZmxpZ2h0GAYgASgNQge6SAQqAigBSACIAQFCEAoOX21heF9pbl9mbGlnaHQirAIKGFBvc3RncmVzT25Db25mbGljdENvbmZpZxIWCgpkb19ub3RoaW5nGAEgASgIQgIYARJWCgdub3RoaW5nGAIgASgLMkMubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc09uQ29uZmxpY3RDb25maWcuUG9zdGdyZXNPbkNvbmZsaWN0RG9Ob3RoaW5nSAASUgoGdXBkYXRlGAMgASgLMkAubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc09uQ29uZmxpY3RDb25maWcuUG9zdGdyZXNPbkNvbmZsaWN0VXBkYXRlSAAaHQobUG9zdGdyZXNPbkNvbmZsaWN0RG9Ob3RoaW5nGhoKGFBvc3RncmVzT25Db25mbGljdFVwZGF0ZUIRCghzdHJhdGVneRIFukgCCAAiTgobUG9zdGdyZXNUcnVuY2F0ZVRhYmxlQ29uZmlnEh4KFnRydW5jYXRlX2JlZm9yZV9pbnNlcnQYASABKAgSDwoHY2FzY2FkZRgCIAEoCCLBAgohTXlzcWxEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zEj8KDnRydW5jYXRlX3RhYmxlGAEgASgLMicubWdtdC52MWFscGhhMS5NeXNxbFRydW5jYXRlVGFibGVDb25maWcSGQoRaW5pdF90YWJsZV9zY2hlbWEYAiABKAgSOQoLb25fY29uZmxpY3QYAyABKAsyJC5tZ210LnYxYWxwaGExLk15c3FsT25Db25mbGljdENvbmZpZxIjChtza2lwX2ZvcmVpZ25fa2V5X3Zpb2xhdGlvbnMYBCABKAgSKQoFYmF0Y2gYBSABKAsyGi5tZ210LnYxYWxwaGExLkJhdGNoQ29uZmlnEiMKDW1heF9pbl9mbGlnaHQYBiABKA1CB7pIBCoCKAFIAIgBAUIQCg5fbWF4X2luX2ZsaWdodCI6ChhNeXNxbFRydW5jYXRlVGFibGVDb25maWcSHgoWdHJ1bmNhdGVfYmVmb3JlX2luc2VydBgBIAEoCCKTAgoVTXlzcWxPbkNvbmZsaWN0Q29uZmlnEhIKCmRvX25vdGhpbmcYASABKAgSUAoHbm90aGluZxgCIAEoCzI9Lm1nbXQudjFhbHBoYTEuTXlzcWxPbkNvbmZsaWN0Q29uZmlnLk15c3FsT25Db25mbGljdERvTm90aGluZ0gAEkwKBnVwZGF0ZRgDIAEoCzI6Lm1nbXQudjFhbHBoYTEuTXlzcWxPbkNvbmZsaWN0Q29uZmlnLk15c3FsT25Db25mbGljdFVwZGF0ZUgAGhoKGE15c3FsT25Db25mbGljdERvTm90aGluZxoXChVNeXNxbE9uQ29uZmxpY3RVcGRhdGVCEQoIc3RyYXRlZ3kSBbpIAggAIsECCiFNc3NxbERlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSPwoOdHJ1bmNhdGVfdGFibGUYASABKAsyJy5tZ210LnYxYWxwaGExLk1zc3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIZChFpbml0X3RhYmxlX3NjaGVtYRgCIAEoCBI5Cgtvbl9jb25mbGljdBgDIAEoCzIkLm1nbXQudjFhbHBoYTEuTXNzcWxPbkNvbmZsaWN0Q29uZmlnEiMKG3NraXBfZm9yZWlnbl9rZXlfdmlvbGF0aW9ucxgEIAEoCBIpCgViYXRjaBgFIAEoCzIaLm1nbXQudjFhbHBoYTEuQmF0Y2hDb25maWcSIwoNbWF4X2luX2ZsaWdodBgGIAEoDUIHukgEKgIoAUgAiAEBQhAKDl9tYXhfaW5fZmxpZ2h0IjoKGE1zc3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIeChZ0cnVuY2F0ZV9iZWZvcmVfaW5zZXJ0GAEgASgIIisKFU1zc3FsT25Db25mbGljdENvbmZpZxISCgpkb19ub3RoaW5nGAEgASgIIo4ECiFBd3NTM0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSVAoNc3RvcmFnZV9jbGFzcxgBIAEoDjI9Lm1nbXQudjFhbHBoYTEuQXdzUzNEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zLlN0b3JhZ2VDbGFzcxIjCg1tYXhfaW5fZmxpZ2h0GAIgASgNQge6SAQqAigBSACIAQESFAoHdGltZW91dBgDIAEoCUgBiAEBEikKBWJhdGNoGAQgASgLMhoubWdtdC52MWFscGhhMS5CYXRjaENvbmZpZyKOAgoMU3RvcmFnZUNsYXNzEh0KGVNUT1JBR0VfQ0xBU1NfVU5TUEVDSUZJRUQQABIaChZTVE9SQUdFX0NMQVNTX1NUQU5EQVJEEAESJAogU1RPUkFHRV9DTEFTU19SRURVQ0VEX1JFRFVOREFOQ1kQAhIZChVTVE9SQUdFX0NMQVNTX0dMQUNJRVIQAxIdChlTVE9SQUdFX0NMQVNTX1NUQU5EQVJEX0lBEAQSHAoYU1RPUkFHRV9DTEFTU19PTkVaT05FX0lBEAUSJQohU1RPUkFHRV9DTEFTU19JTlRFTExJR0VOVF9USUVSSU5HEAYSHgoaU1RPUkFHRV9DTEFTU19ERUVQX0FSQ0hJVkUQB0IQCg5fbWF4X2luX2ZsaWdodEIKCghfdGltZW91dCJLCgtCYXRjaENvbmZpZxISCgVjb3VudBgBIAEoDUgAiAEBEhMKBnBlcmlvZBgCIAEoCUgBiAEBQggKBl9jb3VudEIJCgdfcGVyaW9kIocHChBDcmVhdGVKb2JSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEisKCGpvYl9uYW1lGAIgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEhoKDWNyb25fc2NoZWR1bGUYAyABKAlIAIgBARIrCghtYXBwaW5ncxgEIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxIoCgZzb3VyY2UYBSABKAsyGC5tZ210LnYxYWxwaGExLkpvYlNvdXJjZRI5CgxkZXN0aW5hdGlvbnMYBiADKAsyIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uEhgKEGluaXRpYXRlX2pvYl9ydW4YByABKAgSOAoQd29ya2Zsb3dfb3B0aW9ucxgIIAEoCzIeLm1nbXQudjFhbHBoYTEuV29ya2Zsb3dPcHRpb25zEjQKDHN5bmNfb3B0aW9ucxgJIAEoCzIeLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlPcHRpb25zEkUKFHZpcnR1YWxfZm9yZWlnbl9rZXlzGAogAygLMicubWdtdC52MWFscGhhMS5WaXJ0dWFsRm9yZWlnbkNvbnN0cmFpbnQSMwoIam9iX3R5cGUYCyABKAsyHC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWdIAYgBATrUArpI0AIanwEKGm1hcHBpbmdzX3JlcXVpcmVkX2Zvcl9zeW5jEi9Gb3Igc3luYyBqb2JzLCBhdCBsZWFzdCBvbmUgbWFwcGluZyBpcyByZXF1aXJlZBpQIWhhcyh0aGlzLmpvYl90eXBlKSB8fCBoYXModGhpcy5qb2JfdHlwZS5zeW5jKSA/IHNpemUodGhpcy5tYXBwaW5ncykgPj0gMSA6IHRydWUaqwEKHmRlc3RpbmF0aW9uc19yZXF1aXJlZF9mb3Jfc3luYxIzRm9yIHN5bmMgam9icywgYXQgbGVhc3Qgb25lIGRlc3RpbmF0aW9uIGlzIHJlcXVpcmVkGlQhaGFzKHRoaXMuam9iX3R5cGUpIHx8IGhhcyh0aGlzLmpvYl90eXBlLnN5bmMpID8gc2l6ZSh0aGlzLmRlc3RpbmF0aW9ucykgPj0gMSA6IHRydWVCEAoOX2Nyb25fc2NoZWR1bGVCCwoJX2pvYl90eXBlIp8ICg1Kb2JUeXBlQ29uZmlnEjgKBHN5bmMYASABKAsyKC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmNIABJDCgpwaWlfZGV0ZWN0GAIgASgLMi0ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3RIABoNCgtKb2JUeXBlU3luYxrsBgoQSm9iVHlwZVBpaURldGVjdBJRCg1kYXRhX3NhbXBsaW5nGAEgASgLMjoubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuRGF0YVNhbXBsaW5nElgKEXRhYmxlX3NjYW5fZmlsdGVyGAIgASgLMj0ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuVGFibGVTY2FuRmlsdGVyEhgKC3VzZXJfcHJvbXB0GAMgASgJSACIAQESUwoLaW5jcmVtZW50YWwYBCABKAsyOS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5JbmNyZW1lbnRhbEgBiAEBGiEKC0luY3JlbWVudGFsEhIKCmlzX2VuYWJsZWQYASABKAgaIgoMRGF0YVNhbXBsaW5nEhIKCmlzX2VuYWJsZWQYASABKAgakQIKD1RhYmxlU2NhbkZpbHRlchJPCgtpbmNsdWRlX2FsbBgBIAEoCzI4Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlUGlpRGV0ZWN0LkluY2x1ZGVBbGxIABJOCgdpbmNsdWRlGAIgASgLMjsubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuVGFibGVQYXR0ZXJuc0gAEk4KB2V4Y2x1ZGUYAyABKAsyOy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZVBhdHRlcm5zSABCDQoEbW9kZRIFukgCCAEaDAoKSW5jbHVkZUFsbBpvCg1UYWJsZVBhdHRlcm5zEg8KB3NjaGVtYXMYASADKAkSTQoGdGFibGVzGAIgAygLMj0ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuVGFibGVJZGVudGlmaWVyGkIKD1RhYmxlSWRlbnRpZmllchIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESFgoFdGFibGUYAiABKAlCB7pIBHICEAFCDgoMX3VzZXJfcHJvbXB0Qg4KDF9pbmNyZW1lbnRhbEIRCghqb2JfdHlwZRIFukgCCAAiZQoPV29ya2Zsb3dPcHRpb25zEhgKC3J1bl90aW1lb3V0GAggASgDSACIAQFCDgoMX3J1bl90aW1lb3V0SgQIARACSgQIAhADSgQIAxAESgQIBBAFSgQIBRAGSgQIBhAHSgQIBxAIItsBCg9BY3Rpdml0eU9wdGlvbnMSLwoZc2NoZWR1bGVfdG9fY2xvc2VfdGltZW91dBgBIAEoA0IHukgEIgIoAUgAiAEBEiwKFnN0YXJ0X3RvX2Nsb3NlX3RpbWVvdXQYAiABKANCB7pIBCICKAFIAYgBARIwCgxyZXRyeV9wb2xpY3kYAyABKAsyGi5tZ210LnYxYWxwaGExLlJldHJ5UG9saWN5QhwKGl9zY2hlZHVsZV90b19jbG9zZV90aW1lb3V0QhkKF19zdGFydF90b19jbG9zZV90aW1lb3V0IkoKC1JldHJ5UG9saWN5EiYKEG1heGltdW1fYXR0ZW1wdHMYASABKAVCB7pIBBoCKABIAIgBAUITChFfbWF4aW11bV9hdHRlbXB0cyI0ChFDcmVhdGVKb2JSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJPChVKb2JNYXBwaW5nVHJhbnNmb3JtZXISMAoGY29uZmlnGAMgASgLMiAubWdtdC52MWFscGhhMS5UcmFuc2Zvcm1lckNvbmZpZ0oECAEQAiKRAQoKSm9iTWFwcGluZxIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESFgoFdGFibGUYAiABKAlCB7pIBHICEAESFwoGY29sdW1uGAMgASgJQge6SARyAhABEjkKC3RyYW5zZm9ybWVyGAUgASgLMiQubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nVHJhbnNmb3JtZXIiJQoNR2V0Sm9iUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQEiMQoOR2V0Sm9iUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IiXgoYVXBkYXRlSm9iU2NoZWR1bGVSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABARIaCg1jcm9uX3NjaGVkdWxlGAIgASgJSACIAQFCEAoOX2Nyb25fc2NoZWR1bGUiPAoZVXBkYXRlSm9iU2NoZWR1bGVSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJSCg9QYXVzZUpvYlJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEg0KBXBhdXNlGAIgASgIEhEKBG5vdGUYAyABKAlIAIgBAUIHCgVfbm90ZSIzChBQYXVzZUpvYlJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIoYCCiBVcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESKAoGc291cmNlGAIgASgLMhgubWdtdC52MWFscGhhMS5Kb2JTb3VyY2USKwoIbWFwcGluZ3MYAyADKAsyGS5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmcSRQoUdmlydHVhbF9mb3JlaWduX2tleXMYBCADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIuCghqb2JfdHlwZRgFIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZyJECiFVcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IiYQoaUG9zdGdyZXNTb3VyY2VTY2hlbWFTdWJzZXQSQwoQcG9zdGdyZXNfc2NoZW1hcxgBIAMoCzIpLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VTY2hlbWFPcHRpb24iWAoXTXlzcWxTb3VyY2VTY2hlbWFTdWJzZXQSPQoNbXlzcWxfc2NoZW1hcxgBIAMoCzImLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VTY2hlbWFPcHRpb24iVgoaRHluYW1vREJTb3VyY2VTY2hlbWFTdWJzZXQSOAoGdGFibGVzGAEgAygLMigubWdtdC52MWFscGhhMS5EeW5hbW9EQlNvdXJjZVRhYmxlT3B0aW9uIlgKF01zc3FsU291cmNlU2NoZW1hU3Vic2V0Ej0KDW1zc3FsX3NjaGVtYXMYASADKAsyJi5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlU2NoZW1hT3B0aW9uIr4CChhKb2JTb3VyY2VTcWxTdWJldFNjaGVtYXMSRAoPcG9zdGdyZXNfc3Vic2V0GAIgASgLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYVN1YnNldEgAEj4KDG15c3FsX3N1YnNldBgDIAEoCzImLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VTY2hlbWFTdWJzZXRIABJECg9keW5hbW9kYl9zdWJzZXQYBCABKAsyKS5tZ210LnYxYWxwaGExLkR5bmFtb0RCU291cmNlU2NoZW1hU3Vic2V0SAASPgoMbXNzcWxfc3Vic2V0GAUgASgLMiYubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVNjaGVtYVN1YnNldEgAQhAKB3NjaGVtYXMSBbpIAggBSgQIARACIqQBCidTZXRKb2JTb3VyY2VTcWxDb25uZWN0aW9uU3Vic2V0c1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEjgKB3NjaGVtYXMYAiABKAsyJy5tZ210LnYxYWxwaGExLkpvYlNvdXJjZVNxbFN1YmV0U2NoZW1hcxIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYAyABKAgiSwooU2V0Sm9iU291cmNlU3FsQ29ubmVjdGlvblN1YnNldHNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiKxAQolVXBkYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEh8KDWNvbm5lY3Rpb25faWQYAiABKAlCCLpIBXIDsAEBEjUKB29wdGlvbnMYAyABKAsyJC5tZ210LnYxYWxwaGExLkpvYkRlc3RpbmF0aW9uT3B0aW9ucxIWCg5kZXN0aW5hdGlvbl9pZBgEIAEoCSJJCiZVcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJJCiVEZWxldGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXF1ZXN0EiAKDmRlc3RpbmF0aW9uX2lkGAEgASgJQgi6SAVyA7ABASIoCiZEZWxldGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXNwb25zZSKHAQomQ3JlYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uc1JlcXVlc3QSGAoGam9iX2lkGAEgASgJQgi6SAVyA7ABARJDCgxkZXN0aW5hdGlvbnMYAiADKAsyIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uQgi6SAWSAQIIASJKCidDcmVhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25zUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IiKAoQRGVsZXRlSm9iUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQEiEwoRRGVsZXRlSm9iUmVzcG9uc2UiYgoZSXNKb2JOYW1lQXZhaWxhYmxlUmVxdWVzdBInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBIjIKGklzSm9iTmFtZUF2YWlsYWJsZVJlc3BvbnNlEhQKDGlzX2F2YWlsYWJsZRgBIAEoCCJVChFHZXRKb2JSdW5zUmVxdWVzdBIaCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBSAASHgoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQFIAEIECgJpZCI9ChJHZXRKb2JSdW5zUmVzcG9uc2USJwoIam9iX3J1bnMYASADKAsyFS5tZ210LnYxYWxwaGExLkpvYlJ1biJEChBHZXRKb2JSdW5SZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiOwoRR2V0Sm9iUnVuUmVzcG9uc2USJgoHam9iX3J1bhgBIAEoCzIVLm1nbXQudjFhbHBoYTEuSm9iUnVuIi8KE0NyZWF0ZUpvYlJ1blJlcXVlc3QSGAoGam9iX2lkGAEgASgJQgi6SAVyA7ABASIWChRDcmVhdGVKb2JSdW5SZXNwb25zZSJHChNDYW5jZWxKb2JSdW5SZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiFgoUQ2FuY2VsSm9iUnVuUmVzcG9uc2Ui7AQKA0pvYhIKCgJpZBgBIAEoCRIaChJjcmVhdGVkX2J5X3VzZXJfaWQYAiABKAkSLgoKY3JlYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXBkYXRlZF9ieV91c2VyX2lkGAQgASgJEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBiABKAkSKAoGc291cmNlGAcgASgLMhgubWdtdC52MWFscGhhMS5Kb2JTb3VyY2USMwoMZGVzdGluYXRpb25zGAggAygLMh0ubWdtdC52MWFscGhhMS5Kb2JEZXN0aW5hdGlvbhIrCghtYXBwaW5ncxgJIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxIaCg1jcm9uX3NjaGVkdWxlGAogASgJSACIAQESEgoKYWNjb3VudF9pZBgLIAEoCRI0CgxzeW5jX29wdGlvbnMYDCABKAsyHi5tZ210LnYxYWxwaGExLkFjdGl2aXR5T3B0aW9ucxI4ChB3b3JrZmxvd19vcHRpb25zGA0gASgLMh4ubWdtdC52MWFscGhhMS5Xb3JrZmxvd09wdGlvbnMSRQoUdmlydHVhbF9mb3JlaWduX2tleXMYDiADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIuCghqb2JfdHlwZRgPIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZ0IQCg5fY3Jvbl9zY2hlZHVsZSJSCgxKb2JSZWNlbnRSdW4SLgoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKam9iX3J1bl9pZBgCIAEoCSIzChdHZXRKb2JSZWNlbnRSdW5zUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIkwKGEdldEpvYlJlY2VudFJ1bnNSZXNwb25zZRIwCgtyZWNlbnRfcnVucxgBIAMoCzIbLm1nbXQudjFhbHBoYTEuSm9iUmVjZW50UnVuIkEKC0pvYk5leHRSdW5zEjIKDm5leHRfcnVuX3RpbWVzGAEgAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIxChVHZXRKb2JOZXh0UnVuc1JlcXVlc3QSGAoGam9iX2lkGAEgASgJQgi6SAVyA7ABASJHChZHZXRKb2JOZXh0UnVuc1Jlc3BvbnNlEi0KCW5leHRfcnVucxgBIAEoCzIaLm1nbXQudjFhbHBoYTEuSm9iTmV4dFJ1bnMiLwoTR2V0Sm9iU3RhdHVzUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIkAKFEdldEpvYlN0YXR1c1Jlc3BvbnNlEigKBnN0YXR1cxgBIAEoDjIYLm1nbXQudjFhbHBoYTEuSm9iU3RhdHVzIlUKD0pvYlN0YXR1c1JlY29yZBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEigKBnN0YXR1cxgCIAEoDjIYLm1nbXQudjFhbHBoYTEuSm9iU3RhdHVzIjUKFUdldEpvYlN0YXR1c2VzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASJKChZHZXRKb2JTdGF0dXNlc1Jlc3BvbnNlEjAKCHN0YXR1c2VzGAEgAygLMh4ubWdtdC52MWFscGhhMS5Kb2JTdGF0dXNSZWNvcmQiIgoPQWN0aXZpdHlGYWlsdXJlEg8KB21lc3NhZ2UYASABKAkiowEKD1BlbmRpbmdBY3Rpdml0eRItCgZzdGF0dXMYASABKA4yHS5tZ210LnYxYWxwaGExLkFjdGl2aXR5U3RhdHVzEhUKDWFjdGl2aXR5X25hbWUYAiABKAkSOQoMbGFzdF9mYWlsdXJlGAMgASgLMh4ubWdtdC52MWFscGhhMS5BY3Rpdml0eUZhaWx1cmVIAIgBAUIPCg1fbGFzdF9mYWlsdXJlIpkCCgZKb2JSdW4SCgoCaWQYASABKAkSDgoGam9iX2lkGAIgASgJEgwKBG5hbWUYAyABKAkSKwoGc3RhdHVzGAQgASgOMhsubWdtdC52MWFscGhhMS5Kb2JSdW5TdGF0dXMSLgoKc3RhcnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMY29tcGxldGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjoKEnBlbmRpbmdfYWN0aXZpdGllcxgIIAMoCzIeLm1nbXQudjFhbHBoYTEuUGVuZGluZ0FjdGl2aXR5Qg8KDV9jb21wbGV0ZWRfYXRKBAgFEAYiPAoUSm9iUnVuRXZlbnRUYXNrRXJyb3ISDwoHbWVzc2FnZRgBIAEoCRITCgtyZXRyeV9zdGF0ZRgCIAEoCSKPAQoPSm9iUnVuRXZlbnRUYXNrEgoKAmlkGAEgASgDEgwKBHR5cGUYAiABKAkSLgoKZXZlbnRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoFZXJyb3IYBCABKAsyIy5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50VGFza0Vycm9yIjMKEkpvYlJ1blN5bmNNZXRhZGF0YRIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkiZAoTSm9iUnVuRXZlbnRNZXRhZGF0YRI6Cg1zeW5jX21ldGFkYXRhGAEgASgLMiEubWdtdC52MWFscGhhMS5Kb2JSdW5TeW5jTWV0YWRhdGFIAEIRCghtZXRhZGF0YRIFukgCCAEi7AEKC0pvYlJ1bkV2ZW50EgoKAmlkGAEgASgDEgwKBHR5cGUYAiABKAkSLgoKc3RhcnRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY2xvc2VfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoIbWV0YWRhdGEYBSABKAsyIi5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50TWV0YWRhdGESLQoFdGFza3MYBiADKAsyHi5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50VGFzayJKChZHZXRKb2JSdW5FdmVudHNSZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiXgoXR2V0Sm9iUnVuRXZlbnRzUmVzcG9uc2USKgoGZXZlbnRzGAEgAygLMhoubWdtdC52MWFscGhhMS5Kb2JSdW5FdmVudBIXCg9pc19ydW5fY29tcGxldGUYAiABKAgiRwoTRGVsZXRlSm9iUnVuUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBIhYKFERlbGV0ZUpvYlJ1blJlc3BvbnNlIkoKFlRlcm1pbmF0ZUpvYlJ1blJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASIZChdUZXJtaW5hdGVKb2JSdW5SZXNwb25zZSLxAQoaR2V0Sm9iUnVuTG9nc1N0cmVhbVJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABARIoCgZ3aW5kb3cYAyABKA4yGC5tZ210LnYxYWxwaGExLkxvZ1dpbmRvdxITCgtzaG91bGRfdGFpbBgEIAEoCBIjCg1tYXhfbG9nX2xpbmVzGAUgASgDQge6SAQiAigBSACIAQESKwoKbG9nX2xldmVscxgGIAMoDjIXLm1nbXQudjFhbHBoYTEuTG9nTGV2ZWxCEAoOX21heF9sb2dfbGluZXMi6AEKG0dldEpvYlJ1bkxvZ3NTdHJlYW1SZXNwb25zZRIQCghsb2dfbGluZRgBIAEoCRIyCgl0aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESRgoGbGFiZWxzGAMgAygLMjYubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzU3RyZWFtUmVzcG9uc2UuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdGltZXN0YW1wItYBChRHZXRKb2JSdW5Mb2dzUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBEigKBndpbmRvdxgDIAEoDjIYLm1nbXQudjFhbHBoYTEuTG9nV2luZG93EiMKDW1heF9sb2dfbGluZXMYBCABKANCB7pIBCICKAFIAIgBARIrCgpsb2dfbGV2ZWxzGAUgAygOMhcubWdtdC52MWFscGhhMS5Mb2dMZXZlbEIQCg5fbWF4X2xvZ19saW5lcyKxAgoVR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlEj8KCWxvZ19saW5lcxgBIAMoCzIsLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlLkxvZ0xpbmUa1gEKB0xvZ0xpbmUSEAoIbG9nX2xpbmUYASABKAkSMgoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkgKBmxhYmVscxgDIAMoCzI4Lm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlLkxvZ0xpbmUuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdGltZXN0YW1wIm4KHFNldEpvYldvcmtmbG93T3B0aW9uc1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEjgKEHdvcmZrbG93X29wdGlvbnMYAiABKAsyHi5tZ210LnYxYWxwaGExLldvcmtmbG93T3B0aW9ucyJACh1TZXRKb2JXb3JrZmxvd09wdGlvbnNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJmChhTZXRKb2JTeW5jT3B0aW9uc1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEjQKDHN5bmNfb3B0aW9ucxgCIAEoCzIeLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlPcHRpb25zIjwKGVNldEpvYlN5bmNPcHRpb25zUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IikQIKGlZhbGlkYXRlSm9iTWFwcGluZ3NSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEisKCG1hcHBpbmdzGAIgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEh8KDWNvbm5lY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBEkUKFHZpcnR1YWxfZm9yZWlnbl9rZXlzGAQgAygLMicubWdtdC52MWFscGhhMS5WaXJ0dWFsRm9yZWlnbkNvbnN0cmFpbnQSMQoKam9iX3NvdXJjZRgFIAEoCzIYLm1nbXQudjFhbHBoYTEuSm9iU291cmNlSACIAQFCDQoLX2pvYl9zb3VyY2UiqwcKC0NvbHVtbkVycm9yEg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCRIOCgZjb2x1bW4YAyABKAkSEgoGZXJyb3JzGAQgAygJQgIYARJDCg1lcnJvcl9yZXBvcnRzGAUgAygLMiwubWdtdC52MWFscGhhMS5Db2x1bW5FcnJvci5Db2x1bW5FcnJvclJlcG9ydBpeChFDb2x1bW5FcnJvclJlcG9ydBI4CgRjb2RlGAEgASgOMioubWdtdC52MWFscGhhMS5Db2x1bW5FcnJvci5Db2x1bW5FcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCSKzBQoPQ29sdW1uRXJyb3JDb2RlEiEKHUNPTFVNTl9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASKQolQ09MVU1OX0VSUk9SX0NPREVfTk9UX0ZPVU5EX0lOX1NPVVJDRRABEioKJkNPTFVNTl9FUlJPUl9DT0RFX05PVF9GT1VORF9JTl9NQVBQSU5HEAISOgo2Q09MVU1OX0VSUk9SX0NPREVfUkVRVUlSRURfQ09MVU1OX05PVF9GT1VORF9JTl9NQVBQSU5HEAMSPwo7Q09MVU1OX0VSUk9SX0NPREVfUkVRVUlSRURfRk9SRUlHTl9LRVlfTk9UX0ZPVU5EX0lOX01BUFBJTkcQBBJLCkdDT0xVTU5fRVJST1JfQ09ERV9VTlNVUFBPUlRFRF9DSVJDVUxBUl9ERVBFTkRFTkNZX0FUX0xFQVNUX09ORV9OVUxMQUJMRRAFEjwKOENPTFVNTl9FUlJPUl9DT0RFX1ZGS19TT1VSQ0VfQ09MVU1OX05PVF9GT1VORF9JTl9NQVBQSU5HEAYSOwo3Q09MVU1OX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9DT0xVTU5fTk9UX0ZPVU5EX0lOX1NPVVJDRRAHEjwKOENPTFVNTl9FUlJPUl9DT0RFX1ZGS19UQVJHRVRfQ09MVU1OX05PVF9GT1VORF9JTl9NQVBQSU5HEAgSOwo3Q09MVU1OX0VSUk9SX0NPREVfVkZLX1RBUkdFVF9DT0xVTU5fTk9UX0ZPVU5EX0lOX1NPVVJDRRAJEjIKLkNPTFVNTl9FUlJPUl9DT0RFX1ZGS19DT0xVTU5fREFUQVRZUEVfTUlTTUFUQ0gQChIyCi5DT0xVTU5fRVJST1JfQ09ERV9WRktfU09VUkNFX0NPTFVNTl9OT1RfVU5JUVVFEAsimwMKDUNvbHVtbldhcm5pbmcSDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEg4KBmNvbHVtbhgDIAEoCRIUCgh3YXJuaW5ncxgFIAMoCUICGAESSQoPd2FybmluZ19yZXBvcnRzGAYgAygLMjAubWdtdC52MWFscGhhMS5Db2x1bW5XYXJuaW5nLkNvbHVtbldhcm5pbmdSZXBvcnQaZAoTQ29sdW1uV2FybmluZ1JlcG9ydBI8CgRjb2RlGAEgASgOMi4ubWdtdC52MWFscGhhMS5Db2x1bW5XYXJuaW5nLkNvbHVtbldhcm5pbmdDb2RlEg8KB21lc3NhZ2UYAiABKAkikwEKEUNvbHVtbldhcm5pbmdDb2RlEiMKH0NPTFVNTl9XQVJOSU5HX0NPREVfVU5TUEVDSUZJRUQQABIrCidDT0xVTU5fV0FSTklOR19DT0RFX05PVF9GT1VORF9JTl9TT1VSQ0UQARIsCihDT0xVTU5fV0FSTklOR19DT0RFX05PVF9GT1VORF9JTl9NQVBQSU5HEAIiiQMKDURhdGFiYXNlRXJyb3ISEgoGZXJyb3JzGAEgAygJQgIYARJHCg1lcnJvcl9yZXBvcnRzGAIgAygLMjAubWdtdC52MWFscGhhMS5EYXRhYmFzZUVycm9yLkRhdGFiYXNlRXJyb3JSZXBvcnQaZAoTRGF0YWJhc2VFcnJvclJlcG9ydBI8CgRjb2RlGAEgASgOMi4ubWdtdC52MWFscGhhMS5EYXRhYmFzZUVycm9yLkRhdGFiYXNlRXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkitAEKEURhdGFiYXNlRXJyb3JDb2RlEiMKH0RBVEFCQVNFX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABJNCklEQVRBQkFTRV9FUlJPUl9DT0RFX1VOU1VQUE9SVEVEX0NJUkNVTEFSX0RFUEVOREVOQ1lfQVRfTEVBU1RfT05FX05VTExBQkxFEAESKwonREFUQUJBU0VfRVJST1JfQ09ERV9WRktfQ09MVU1OX01JU01BVENIEAIingQKClRhYmxlRXJyb3ISDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEkEKDWVycm9yX3JlcG9ydHMYAyADKAsyKi5tZ210LnYxYWxwaGExLlRhYmxlRXJyb3IuVGFibGVFcnJvclJlcG9ydBpbChBUYWJsZUVycm9yUmVwb3J0EjYKBGNvZGUYASABKA4yKC5tZ210LnYxYWxwaGExLlRhYmxlRXJyb3IuVGFibGVFcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCSLQAgoOVGFibGVFcnJvckNvZGUSIAocVEFCTEVfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEi4KKlRBQkxFX0VSUk9SX0NPREVfVEFCTEVfTk9UX0ZPVU5EX0lOX1NPVVJDRRABEjoKNlRBQkxFX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9UQUJMRV9OT1RfRk9VTkRfSU5fTUFQUElORxACEjkKNVRBQkxFX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9UQUJMRV9OT1RfRk9VTkRfSU5fU09VUkNFEAMSOgo2VEFCTEVfRVJST1JfQ09ERV9WRktfVEFSR0VUX1RBQkxFX05PVF9GT1VORF9JTl9NQVBQSU5HEAQSOQo1VEFCTEVfRVJST1JfQ09ERV9WRktfVEFSR0VUX1RBQkxFX05PVF9GT1VORF9JTl9TT1VSQ0UQBSLvAQobVmFsaWRhdGVKb2JNYXBwaW5nc1Jlc3BvbnNlEjEKDWNvbHVtbl9lcnJvcnMYASADKAsyGi5tZ210LnYxYWxwaGExLkNvbHVtbkVycm9yEjUKD2RhdGFiYXNlX2Vycm9ycxgCIAEoCzIcLm1nbXQudjFhbHBoYTEuRGF0YWJhc2VFcnJvchI1Cg9jb2x1bW5fd2FybmluZ3MYAyADKAsyHC5tZ210LnYxYWxwaGExLkNvbHVtbldhcm5pbmcSLwoMdGFibGVfZXJyb3JzGAQgAygLMhkubWdtdC52MWFscGhhMS5UYWJsZUVycm9yImUKFVZhbGlkYXRlU2NoZW1hUmVxdWVzdBIrCghtYXBwaW5ncxgBIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxIfCg1jb25uZWN0aW9uX2lkGAIgASgJQgi6SAVyA7ABASKMAgoWVmFsaWRhdGVTY2hlbWFSZXNwb25zZRI2Cg9taXNzaW5nX2NvbHVtbnMYASADKAsyHS5tZ210LnYxYWxwaGExLkRhdGFiYXNlQ29sdW1uEjQKDWV4dHJhX2NvbHVtbnMYAiADKAsyHS5tZ210LnYxYWxwaGExLkRhdGFiYXNlQ29sdW1uEkMKDm1pc3NpbmdfdGFibGVzGAMgAygLMisubWdtdC52MWFscGhhMS5WYWxpZGF0ZVNjaGVtYVJlc3BvbnNlLlRhYmxlEhcKD21pc3Npbmdfc2NoZW1hcxgEIAMoCRomCgVUYWJsZRIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkiQwoRVmlydHVhbEZvcmVpZ25LZXkSDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEg8KB2NvbHVtbnMYAyADKAkigQEKGFZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSDwoHY29sdW1ucxgDIAMoCRI1Cgtmb3JlaWduX2tleRgEIAEoCzIgLm1nbXQudjFhbHBoYTEuVmlydHVhbEZvcmVpZ25LZXkiZwoNUnVuQ29udGV4dEtleRIbCgpqb2JfcnVuX2lkGAEgASgJQge6SARyAhABEhwKC2V4dGVybmFsX2lkGAIgASgJQge6SARyAhABEhsKCmFjY291bnRfaWQYAyABKAlCB7pIBHICEAEiQAoUR2V0UnVuQ29udGV4dFJlcXVlc3QSKAoCaWQYASABKAsyHC5tZ210LnYxYWxwaGExLlJ1bkNvbnRleHRLZXkiJgoVR2V0UnVuQ29udGV4dFJlc3BvbnNlEg0KBXZhbHVlGAEgASgMIk8KFFNldFJ1bkNvbnRleHRSZXF1ZXN0EigKAmlkGAEgASgLMhwubWdtdC52MWFscGhhMS5SdW5Db250ZXh0S2V5Eg0KBXZhbHVlGAIgASgMIhcKFVNldFJ1bkNvbnRleHRSZXNwb25zZSJQChVTZXRSdW5Db250ZXh0c1JlcXVlc3QSKAoCaWQYASABKAsyHC5tZ210LnYxYWxwaGExLlJ1bkNvbnRleHRLZXkSDQoFdmFsdWUYAiABKAwiGAoWU2V0UnVuQ29udGV4dHNSZXNwb25zZSK8AgoHSm9iSG9vaxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg4KBmpvYl9pZBgEIAEoCRIsCgZjb25maWcYBSABKAsyHC5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcSGgoSY3JlYXRlZF9ieV91c2VyX2lkGAYgASgJEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhoKEnVwZGF0ZWRfYnlfdXNlcl9pZBgIIAEoCRIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdlbmFibGVkGAogASgIEhsKCHByaW9yaXR5GAsgASgNQgm6SAYqBBhkKAAirwEKCk5ld0pvYkhvb2sSJwoEbmFtZRgBIAEoCUIZukgWchQyEl5bYS16MC05LV17MywxMDB9JBIcCgtkZXNjcmlwdGlvbhgCIAEoCUIHukgEcgIQARIsCgZjb25maWcYAyABKAsyHC5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcSDwoHZW5hYmxlZBgEIAEoCBIbCghwcmlvcml0eRgFIAEoDUIJukgGKgQYZCgAIogDCg1Kb2JIb29rQ29uZmlnEjYKA3NxbBgFIAEoCzInLm1nbXQudjFhbHBoYTEuSm9iSG9va0NvbmZpZy5Kb2JTcWxIb29rSAAalQIKCkpvYlNxbEhvb2sSFgoFcXVlcnkYASABKAlCB7pIBHICEAESHwoNY29ubmVjdGlvbl9pZBgCIAEoCUIIukgFcgOwAQESPgoGdGltaW5nGAMgASgLMi4ubWdtdC52MWFscGhhMS5Kb2JIb29rQ29uZmlnLkpvYlNxbEhvb2suVGltaW5nGo0BCgZUaW1pbmcSNwoIcHJlX3N5bmMYAyABKAsyIy5tZ210LnYxYWxwaGExLkpvYkhvb2tUaW1pbmdQcmVTeW5jSAASOQoJcG9zdF9zeW5jGAQgASgLMiQubWdtdC52MWFscGhhMS5Kb2JIb29rVGltaW5nUG9zdFN5bmNIAEIPCgZ0aW1pbmcSBbpIAggBQg8KBmNvbmZpZxIFukgCCAFKBAgBEAJKBAgCEANKBAgDEARKBAgEEAUiFgoUSm9iSG9va1RpbWluZ1ByZVN5bmMiFwoVSm9iSG9va1RpbWluZ1Bvc3RTeW5jIi4KEkdldEpvYkhvb2tzUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIjwKE0dldEpvYkhvb2tzUmVzcG9uc2USJQoFaG9va3MYASADKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2siKQoRR2V0Sm9iSG9va1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIjoKEkdldEpvYkhvb2tSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIk8KFENyZWF0ZUpvYkhvb2tSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRInCgRob29rGAIgASgLMhkubWdtdC52MWFscGhhMS5OZXdKb2JIb29rIj0KFUNyZWF0ZUpvYkhvb2tSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIiwKFERlbGV0ZUpvYkhvb2tSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASIXChVEZWxldGVKb2JIb29rUmVzcG9uc2UiPQodSXNKb2JIb29rTmFtZUF2YWlsYWJsZVJlcXVlc3QSDgoGam9iX2lkGAEgASgJEgwKBG5hbWUYAiABKAkiNgoeSXNKb2JIb29rTmFtZUF2YWlsYWJsZVJlc3BvbnNlEhQKDGlzX2F2YWlsYWJsZRgBIAEoCCLPAQoUVXBkYXRlSm9iSG9va1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEicKBG5hbWUYAiABKAlCGbpIFnIUMhJeW2EtejAtOS1dezMsMTAwfSQSHAoLZGVzY3JpcHRpb24YAyABKAlCB7pIBHICEAESLAoGY29uZmlnGAQgASgLMhwubWdtdC52MWFscGhhMS5Kb2JIb29rQ29uZmlnEg8KB2VuYWJsZWQYBSABKAgSGwoIcHJpb3JpdHkYBiABKA1CCbpIBioEGGQoACI9ChVVcGRhdGVKb2JIb29rUmVzcG9uc2USJAoEaG9vaxgBIAEoCzIWLm1nbXQudjFhbHBoYTEuSm9iSG9vayJBChhTZXRKb2JIb29rRW5hYmxlZFJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEg8KB2VuYWJsZWQYAiABKAgiQQoZU2V0Sm9iSG9va0VuYWJsZWRSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIs8BCiBHZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEkYKBnRpbWluZxgCIAEoDjI2Lm1nbXQudjFhbHBoYTEuR2V0QWN0aXZlSm9iSG9va3NCeVRpbWluZ1JlcXVlc3QuVGltaW5nIkkKBlRpbWluZxIWChJUSU1JTkdfVU5TUEVDSUZJRUQQABISCg5USU1JTkdfUFJFU1lOQxABEhMKD1RJTUlOR19QT1NUU1lOQxACIkoKIUdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmdSZXNwb25zZRIlCgVob29rcxgBIAMoCzIWLm1nbXQudjFhbHBoYTEuSm9iSG9vayJZChxHZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXF1ZXN0EhsKCmpvYl9ydW5faWQYASABKAlCB7pIBHICEAESHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiUgodR2V0UGlpRGV0ZWN0aW9uUmVwb3J0UmVzcG9uc2USMQoGcmVwb3J0GAEgASgLMiEubWdtdC52MWFscGhhMS5QaWlEZXRlY3Rpb25SZXBvcnQijgQKElBpaURldGVjdGlvblJlcG9ydBI9CgZ0YWJsZXMYASADKAsyLS5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydC5UYWJsZVJlcG9ydBq4AwoLVGFibGVSZXBvcnQSDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEksKB2NvbHVtbnMYAyADKAsyOi5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydC5UYWJsZVJlcG9ydC5Db2x1bW5SZXBvcnQavAIKDENvbHVtblJlcG9ydBIOCgZjb2x1bW4YASABKAkSWwoMcmVnZXhfcmVwb3J0GAIgASgLMkAubWdtdC52MWFscGhhMS5QaWlEZXRlY3Rpb25SZXBvcnQuVGFibGVSZXBvcnQuQ29sdW1uUmVwb3J0LlJlZ2V4SACIAQESVwoKbGxtX3JlcG9ydBgDIAEoCzI+Lm1nbXQudjFhbHBoYTEuUGlpRGV0ZWN0aW9uUmVwb3J0LlRhYmxlUmVwb3J0LkNvbHVtblJlcG9ydC5MTE1IAYgBARoZCgVSZWdleBIQCghjYXRlZ29yeRgBIAEoCRorCgNMTE0SEAoIY2F0ZWdvcnkYASABKAkSEgoKY29uZmlkZW5jZRgCIAEoAkIPCg1fcmVnZXhfcmVwb3J0Qg0KC19sbG1fcmVwb3J0Km8KCUpvYlN0YXR1cxIaChZKT0JfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFgoSSk9CX1NUQVRVU19FTkFCTEVEEAESFQoRSk9CX1NUQVRVU19QQVVTRUQQAxIXChNKT0JfU1RBVFVTX0RJU0FCTEVEEAQqpwEKDkFjdGl2aXR5U3RhdHVzEh8KG0FDVElWSVRZX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUFDVElWSVRZX1NUQVRVU19TQ0hFRFVMRUQQARIbChdBQ1RJVklUWV9TVEFUVVNfU1RBUlRFRBACEhwKGEFDVElWSVRZX1NUQVRVU19DQU5DRUxFRBADEhoKFkFDVElWSVRZX1NUQVRVU19GQUlMRUQQBCqSAgoMSm9iUnVuU3RhdHVzEh4KGkpPQl9SVU5fU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWSk9CX1JVTl9TVEFUVVNfUEVORElORxABEhoKFkpPQl9SVU5fU1RBVFVTX1JVTk5JTkcQAhIbChdKT0JfUlVOX1NUQVRVU19DT01QTEVURRADEhgKFEpPQl9SVU5fU1RBVFVTX0VSUk9SEAQSGwoXSk9CX1JVTl9TVEFUVVNfQ0FOQ0VMRUQQBRIdChlKT0JfUlVOX1NUQVRVU19URVJNSU5BVEVEEAYSGQoVSk9CX1JVTl9TVEFUVVNfRkFJTEVEEAcSHAoYSk9CX1JVTl9TVEFUVVNfVElNRURfT1VUEAgqfAoJTG9nV2luZG93EiIKHkxPR19XSU5ET1dfTk9fVElNRV9VTlNQRUNJRklFRBAAEhoKFkxPR19XSU5ET1dfRklGVEVFTl9NSU4QARIXChNMT0dfV0lORE9XX09ORV9IT1VSEAISFgoSTE9HX1dJTkRPV19PTkVfREFZEAMqdwoITG9nTGV2ZWwSGQoVTE9HX0xFVkVMX1VOU1BFQ0lGSUVEEAASEwoPTE9HX0xFVkVMX0RFQlVHEAESEgoOTE9HX0xFVkVMX0lORk8QAhISCg5MT0dfTEVWRUxfV0FSThADEhMKD0xPR19MRVZFTF9FUlJPUhAEMrAhCgpKb2JTZXJ2aWNlEk0KB0dldEpvYnMSHS5tZ210LnYxYWxwaGExLkdldEpvYnNSZXF1ZXN0Gh4ubWdtdC52MWFscGhhMS5HZXRKb2JzUmVzcG9uc2UiA5ACARJKCgZHZXRKb2ISHC5tZ210LnYxYWxwaGExLkdldEpvYlJlcXVlc3QaHS5tZ210LnYxYWxwaGExLkdldEpvYlJlc3BvbnNlIgOQAgESUAoJQ3JlYXRlSm9iEh8ubWdtdC52MWFscGhhMS5DcmVhdGVKb2JSZXF1ZXN0GiAubWdtdC52MWFscGhhMS5DcmVhdGVKb2JSZXNwb25zZSIAElAKCURlbGV0ZUpvYhIfLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUmVxdWVzdBogLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUmVzcG9uc2UiABJuChJJc0pvYk5hbWVBdmFpbGFibGUSKC5tZ210LnYxYWxwaGExLklzSm9iTmFtZUF2YWlsYWJsZVJlcXVlc3QaKS5tZ210LnYxYWxwaGExLklzSm9iTmFtZUF2YWlsYWJsZVJlc3BvbnNlIgOQAgESaAoRVXBkYXRlSm9iU2NoZWR1bGUSJy5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYlNjaGVkdWxlUmVxdWVzdBooLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iU2NoZWR1bGVSZXNwb25zZSIAEoABChlVcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uEi8ubWdtdC52MWFscGhhMS5VcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVxdWVzdBowLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iU291cmNlQ29ubmVjdGlvblJlc3BvbnNlIgASlQEKIFNldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzEjYubWdtdC52MWFscGhhMS5TZXRKb2JTb3VyY2VTcWxDb25uZWN0aW9uU3Vic2V0c1JlcXVlc3QaNy5tZ210LnYxYWxwaGExLlNldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzUmVzcG9uc2UiABKPAQoeVXBkYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uEjQubWdtdC52MWFscGhhMS5VcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXF1ZXN0GjUubWdtdC52MWFscGhhMS5VcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXNwb25zZSIAEo8BCh5EZWxldGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb24SNC5tZ210LnYxYWxwaGExLkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlcXVlc3QaNS5tZ210LnYxYWxwaGExLkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlIgASkgEKH0NyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnMSNS5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnNSZXF1ZXN0GjYubWdtdC52MWFscGhhMS5DcmVhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25zUmVzcG9uc2UiABJNCghQYXVzZUpvYhIeLm1nbXQudjFhbHBoYTEuUGF1c2VKb2JSZXF1ZXN0Gh8ubWdtdC52MWFscGhhMS5QYXVzZUpvYlJlc3BvbnNlIgASaAoQR2V0Sm9iUmVjZW50UnVucxImLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVjZW50UnVuc1JlcXVlc3QaJy5tZ210LnYxYWxwaGExLkdldEpvYlJlY2VudFJ1bnNSZXNwb25zZSIDkAIBEmIKDkdldEpvYk5leHRSdW5zEiQubWdtdC52MWFscGhhMS5HZXRKb2JOZXh0UnVuc1JlcXVlc3QaJS5tZ210LnYxYWxwaGExLkdldEpvYk5leHRSdW5zUmVzcG9uc2UiA5ACARJcCgxHZXRKb2JTdGF0dXMSIi5tZ210LnYxYWxwaGExLkdldEpvYlN0YXR1c1JlcXVlc3QaIy5tZ210LnYxYWxwaGExLkdldEpvYlN0YXR1c1Jlc3BvbnNlIgOQAgESYgoOR2V0Sm9iU3RhdHVzZXMSJC5tZ210LnYxYWxwaGExLkdldEpvYlN0YXR1c2VzUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzZXNSZXNwb25zZSIDkAIBElYKCkdldEpvYlJ1bnMSIC5tZ210LnYxYWxwaGExLkdldEpvYlJ1bnNSZXF1ZXN0GiEubWdtdC52MWFscGhhMS5HZXRKb2JSdW5zUmVzcG9uc2UiA5ACARJlCg9HZXRKb2JSdW5FdmVudHMSJS5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkV2ZW50c1JlcXVlc3QaJi5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkV2ZW50c1Jlc3BvbnNlIgOQAgESUwoJR2V0Sm9iUnVuEh8ubWdtdC52MWFscGhhMS5HZXRKb2JSdW5SZXF1ZXN0GiAubWdtdC52MWFscGhhMS5HZXRKb2JSdW5SZXNwb25zZSIDkAIBElkKDERlbGV0ZUpvYlJ1bhIiLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUnVuUmVxdWVzdBojLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUnVuUmVzcG9uc2UiABJZCgxDcmVhdGVKb2JSdW4SIi5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJ1blJlcXVlc3QaIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJ1blJlc3BvbnNlIgASWQoMQ2FuY2VsSm9iUnVuEiIubWdtdC52MWFscGhhMS5DYW5jZWxKb2JSdW5SZXF1ZXN0GiMubWdtdC52MWFscGhhMS5DYW5jZWxKb2JSdW5SZXNwb25zZSIAEmIKD1Rlcm1pbmF0ZUpvYlJ1bhIlLm1nbXQudjFhbHBoYTEuVGVybWluYXRlSm9iUnVuUmVxdWVzdBomLm1nbXQudjFhbHBoYTEuVGVybWluYXRlSm9iUnVuUmVzcG9uc2UiABJwChNHZXRKb2JSdW5Mb2dzU3RyZWFtEikubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzU3RyZWFtUmVxdWVzdBoqLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1N0cmVhbVJlc3BvbnNlIgAwARJcCg1HZXRKb2JSdW5Mb2dzEiMubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlIgASdAoVU2V0Sm9iV29ya2Zsb3dPcHRpb25zEisubWdtdC52MWFscGhhMS5TZXRKb2JXb3JrZmxvd09wdGlvbnNSZXF1ZXN0GiwubWdtdC52MWFscGhhMS5TZXRKb2JXb3JrZmxvd09wdGlvbnNSZXNwb25zZSIAEmgKEVNldEpvYlN5bmNPcHRpb25zEicubWdtdC52MWFscGhhMS5TZXRKb2JTeW5jT3B0aW9uc1JlcXVlc3QaKC5tZ210LnYxYWxwaGExLlNldEpvYlN5bmNPcHRpb25zUmVzcG9uc2UiABJuChNWYWxpZGF0ZUpvYk1hcHBpbmdzEikubWdtdC52MWFscGhhMS5WYWxpZGF0ZUpvYk1hcHBpbmdzUmVxdWVzdBoqLm1nbXQudjFhbHBoYTEuVmFsaWRhdGVKb2JNYXBwaW5nc1Jlc3BvbnNlIgASXwoOVmFsaWRhdGVTY2hlbWESJC5tZ210LnYxYWxwaGExLlZhbGlkYXRlU2NoZW1hUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuVmFsaWRhdGVTY2hlbWFSZXNwb25zZSIAElwKDUdldFJ1bkNvbnRleHQSIy5tZ210LnYxYWxwaGExLkdldFJ1bkNvbnRleHRSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5HZXRSdW5Db250ZXh0UmVzcG9uc2UiABJcCg1TZXRSdW5Db250ZXh0EiMubWdtdC52MWFscGhhMS5TZXRSdW5Db250ZXh0UmVxdWVzdBokLm1nbXQudjFhbHBoYTEuU2V0UnVuQ29udGV4dFJlc3BvbnNlIgASYQoOU2V0UnVuQ29udGV4dHMSJC5tZ210LnYxYWxwaGExLlNldFJ1bkNvbnRleHRzUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuU2V0UnVuQ29udGV4dHNSZXNwb25zZSIAKAESWQoLR2V0Sm9iSG9va3MSIS5tZ210LnYxYWxwaGExLkdldEpvYkhvb2tzUmVxdWVzdBoiLm1nbXQudjFhbHBoYTEuR2V0Sm9iSG9va3NSZXNwb25zZSIDkAIBElYKCkdldEpvYkhvb2sSIC5tZ210LnYxYWxwaGExLkdldEpvYkhvb2tSZXF1ZXN0GiEubWdtdC52MWFscGhhMS5HZXRKb2JIb29rUmVzcG9uc2UiA5ACARJcCg1DcmVhdGVKb2JIb29rEiMubWdtdC52MWFscGhhMS5DcmVhdGVKb2JIb29rUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iSG9va1Jlc3BvbnNlIgASXAoNRGVsZXRlSm9iSG9vaxIjLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iSG9va1JlcXVlc3QaJC5tZ210LnYxYWxwaGExLkRlbGV0ZUpvYkhvb2tSZXNwb25zZSIAEncKFklzSm9iSG9va05hbWVBdmFpbGFibGUSLC5tZ210LnYxYWxwaGExLklzSm9iSG9va05hbWVBdmFpbGFibGVSZXF1ZXN0Gi0ubWdtdC52MWFscGhhMS5Jc0pvYkhvb2tOYW1lQXZhaWxhYmxlUmVzcG9uc2UiABJcCg1VcGRhdGVKb2JIb29rEiMubWdtdC52MWFscGhhMS5VcGRhdGVKb2JIb29rUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iSG9va1Jlc3BvbnNlIgASaAoRU2V0Sm9iSG9va0VuYWJsZWQSJy5tZ210LnYxYWxwaGExLlNldEpvYkhvb2tFbmFibGVkUmVxdWVzdBooLm1nbXQudjFhbHBoYTEuU2V0Sm9iSG9va0VuYWJsZWRSZXNwb25zZSIAEoMBChlHZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nEi8ubWdtdC52MWFscGhhMS5HZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVxdWVzdBowLm1nbXQudjFhbHBoYTEuR2V0QWN0aXZlSm9iSG9va3NCeVRpbWluZ1Jlc3BvbnNlIgOQAgESdwoVR2V0UGlpRGV0ZWN0aW9uUmVwb3J0EisubWdtdC52MWFscGhhMS5HZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXF1ZXN0GiwubWdtdC52MWFscGhhMS5HZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXNwb25zZSIDkAIBQsQBChFjb20ubWdtdC52MWFscGhhMUIISm9iUHJvdG9QAVpQZ2l0aHViLmNvbS9udWNsZXVzY2xvdWQvbmVvc3luYy9iYWNrZW5kL2dlbi9nby9wcm90b3MvbWdtdC92MWFscGhhMTttZ210djFhbHBoYTGiAgNNWFiqAg1NZ210LlYxYWxwaGExygINTWdtdFxWMWFscGhhMeICGU1nbXRcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAg5NZ210OjpWMWFscGhhMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_mgmt_v1alpha1_connection_data, file_mgmt_v1alpha1_transformer]);
+ fileDesc("ChdtZ210L3YxYWxwaGExL2pvYi5wcm90bxINbWdtdC52MWFscGhhMSIuCg5HZXRKb2JzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASIzCg9HZXRKb2JzUmVzcG9uc2USIAoEam9icxgBIAMoCzISLm1nbXQudjFhbHBoYTEuSm9iIkUKCUpvYlNvdXJjZRI4CgdvcHRpb25zGAEgASgLMh8ubWdtdC52MWFscGhhMS5Kb2JTb3VyY2VPcHRpb25zQga6SAPIAQEioQQKEEpvYlNvdXJjZU9wdGlvbnMSQgoIcG9zdGdyZXMYASABKAsyLi5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABI9CgZhd3NfczMYAiABKAsyKy5tZ210LnYxYWxwaGExLkF3c1MzU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABI8CgVteXNxbBgDIAEoCzIrLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9uc0gAEjgKCGdlbmVyYXRlGAQgASgLMiQubWdtdC52MWFscGhhMS5HZW5lcmF0ZVNvdXJjZU9wdGlvbnNIABI9CgthaV9nZW5lcmF0ZRgFIAEoCzImLm1nbXQudjFhbHBoYTEuQWlHZW5lcmF0ZVNvdXJjZU9wdGlvbnNIABJACgdtb25nb2RiGAYgASgLMi0ubWdtdC52MWFscGhhMS5Nb25nb0RCU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABJCCghkeW5hbW9kYhgHIAEoCzIuLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VDb25uZWN0aW9uT3B0aW9uc0gAEjwKBW1zc3FsGAggASgLMisubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zSABCDwoGY29uZmlnEgW6SAIIASJuChRDcmVhdGVKb2JEZXN0aW5hdGlvbhIfCg1jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABARI1CgdvcHRpb25zGAIgASgLMiQubWdtdC52MWFscGhhMS5Kb2JEZXN0aW5hdGlvbk9wdGlvbnMidAoOSm9iRGVzdGluYXRpb24SHwoNY29ubmVjdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESNQoHb3B0aW9ucxgCIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iRGVzdGluYXRpb25PcHRpb25zEgoKAmlkGAMgASgJIt0CChdBaUdlbmVyYXRlU291cmNlT3B0aW9ucxIiChBhaV9jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABARJGCgdzY2hlbWFzGAIgAygLMisubWdtdC52MWFscGhhMS5BaUdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uQgi6SAWSAQIIARIuChdma19zb3VyY2VfY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQFIAIgBARIbCgptb2RlbF9uYW1lGAQgASgJQge6SARyAhABEhgKC3VzZXJfcHJvbXB0GAUgASgJSAGIAQESKwoTZ2VuZXJhdGVfYmF0Y2hfc2l6ZRgGIAEoA0IJukgGIgQYZCgBSAKIAQFCGgoYX2ZrX3NvdXJjZV9jb25uZWN0aW9uX2lkQg4KDF91c2VyX3Byb21wdEIWChRfZ2VuZXJhdGVfYmF0Y2hfc2l6ZSJ9ChxBaUdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARJECgZ0YWJsZXMYAiADKAsyKi5tZ210LnYxYWxwaGExLkFpR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiVAobQWlHZW5lcmF0ZVNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEh0KCXJvd19jb3VudBgCIAEoA0IKukgHIgUY6AcoASKvAQoVR2VuZXJhdGVTb3VyY2VPcHRpb25zEkQKB3NjaGVtYXMYASADKAsyKS5tZ210LnYxYWxwaGExLkdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uQgi6SAWSAQIIARIuChdma19zb3VyY2VfY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQFIAIgBAUIaChhfZmtfc291cmNlX2Nvbm5lY3Rpb25faWRKBAgCEAMieQoaR2VuZXJhdGVTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEkIKBnRhYmxlcxgCIAMoCzIoLm1nbXQudjFhbHBoYTEuR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiTwoZR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIaCglyb3dfY291bnQYAiABKANCB7pIBCICKAEiQQoeTW9uZ29EQlNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEh8KDWNvbm5lY3Rpb25faWQYASABKAlCCLpIBXIDsAEBIu8BCh9EeW5hbW9EQlNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEh8KDWNvbm5lY3Rpb25faWQYASABKAlCCLpIBXIDsAEBEjgKBnRhYmxlcxgCIAMoCzIoLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VUYWJsZU9wdGlvbhJRChN1bm1hcHBlZF90cmFuc2Zvcm1zGAMgASgLMjQubWdtdC52MWFscGhhMS5EeW5hbW9EQlNvdXJjZVVubWFwcGVkVHJhbnNmb3JtQ29uZmlnEh4KFmVuYWJsZV9jb25zaXN0ZW50X3JlYWQYBCABKAgi/QEKJUR5bmFtb0RCU291cmNlVW5tYXBwZWRUcmFuc2Zvcm1Db25maWcSLwoBYhgBIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVyEjUKB2Jvb2xlYW4YAiABKAsyJC5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmdUcmFuc2Zvcm1lchIvCgFuGAQgASgLMiQubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nVHJhbnNmb3JtZXISLwoBcxgGIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVySgQIAxAESgQIBRAGIl8KGUR5bmFtb0RCU291cmNlVGFibGVPcHRpb24SFgoFdGFibGUYASABKAlCB7pIBHICEAESGQoMd2hlcmVfY2xhdXNlGAIgASgJSACIAQFCDwoNX3doZXJlX2NsYXVzZSKaCAofUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxI6CgdzY2hlbWFzGAIgAygLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSbgocbmV3X2NvbHVtbl9hZGRpdGlvbl9zdHJhdGVneRgFIAEoCzJILm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5EmUKF2NvbHVtbl9yZW1vdmFsX3N0cmF0ZWd5GAYgASgLMkQubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneRqFAwoZTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRJkCghoYWx0X2pvYhgBIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkhhbHRKb2JIABJkCghhdXRvX21hcBgCIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkF1dG9NYXBIABJrCgtwYXNzdGhyb3VnaBgDIAEoCzJULm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LlBhc3N0aHJvdWdoSAAaCQoHSGFsdEpvYhoJCgdBdXRvTWFwGg0KC1Bhc3N0aHJvdWdoQgoKCHN0cmF0ZWd5GokCChVDb2x1bW5SZW1vdmFsU3RyYXRlZ3kSYAoIaGFsdF9qb2IYASABKAsyTC5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkhhbHRKb2JIABJoCgxjb250aW51ZV9qb2IYAiABKAsyUC5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkNvbnRpbnVlSm9iSAAaCQoHSGFsdEpvYhoNCgtDb250aW51ZUpvYkIKCghzdHJhdGVneUoECAEQAiJ5ChpQb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbhIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESQgoGdGFibGVzGAIgAygLMigubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVRhYmxlT3B0aW9uQgi6SAWSAQIIASJfChlQb3N0Z3Jlc1NvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEhkKDHdoZXJlX2NsYXVzZRgCIAEoCUgAiAEBQg8KDV93aGVyZV9jbGF1c2UioggKHE15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMSJwobaGFsdF9vbl9uZXdfY29sdW1uX2FkZGl0aW9uGAEgASgIQgIYARI3CgdzY2hlbWFzGAIgAygLMiYubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSYgoXY29sdW1uX3JlbW92YWxfc3RyYXRlZ3kYBSABKAsyQS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5EmsKHG5ld19jb2x1bW5fYWRkaXRpb25fc3RyYXRlZ3kYBiABKAsyRS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRqDAgoVQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5El0KCGhhbHRfam9iGAEgASgLMkkubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5IYWx0Sm9iSAASZQoMY29udGludWVfam9iGAIgASgLMk0ubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5Db250aW51ZUpvYkgAGgkKB0hhbHRKb2IaDQoLQ29udGludWVKb2JCCgoIc3RyYXRlZ3ka/AIKGU5ld0NvbHVtbkFkZGl0aW9uU3RyYXRlZ3kSYQoIaGFsdF9qb2IYASABKAsyTS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5IYWx0Sm9iSAASYQoIYXV0b19tYXAYAiABKAsyTS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5BdXRvTWFwSAASaAoLcGFzc3Rocm91Z2gYAyABKAsyUS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5QYXNzdGhyb3VnaEgAGgkKB0hhbHRKb2IaCQoHQXV0b01hcBoNCgtQYXNzdGhyb3VnaEIKCghzdHJhdGVneSJzChdNeXNxbFNvdXJjZVNjaGVtYU9wdGlvbhIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESPwoGdGFibGVzGAIgAygLMiUubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVRhYmxlT3B0aW9uQgi6SAWSAQIIASJcChZNeXNxbFNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEhkKDHdoZXJlX2NsYXVzZRgCIAEoCUgAiAEBQg8KDV93aGVyZV9jbGF1c2UitAcKHE1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMSJwobaGFsdF9vbl9uZXdfY29sdW1uX2FkZGl0aW9uGAEgASgIQgIYARI3CgdzY2hlbWFzGAIgAygLMiYubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSYgoXY29sdW1uX3JlbW92YWxfc3RyYXRlZ3kYBSABKAsyQS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5EmsKHG5ld19jb2x1bW5fYWRkaXRpb25fc3RyYXRlZ3kYBiABKAsyRS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRqDAgoVQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5El0KCGhhbHRfam9iGAEgASgLMkkubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5IYWx0Sm9iSAASZQoMY29udGludWVfam9iGAIgASgLMk0ubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5Db250aW51ZUpvYkgAGgkKB0hhbHRKb2IaDQoLQ29udGludWVKb2JCCgoIc3RyYXRlZ3kajgIKGU5ld0NvbHVtbkFkZGl0aW9uU3RyYXRlZ3kSYQoIaGFsdF9qb2IYASABKAsyTS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5IYWx0Sm9iSAASaAoLcGFzc3Rocm91Z2gYAiABKAsyUS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneS5QYXNzdGhyb3VnaEgAGgkKB0hhbHRKb2IaDQoLUGFzc3Rocm91Z2hCCgoIc3RyYXRlZ3kicwoXTXNzcWxTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEj8KBnRhYmxlcxgCIAMoCzIlLm1nbXQudjFhbHBoYTEuTXNzcWxTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiXAoWTXNzcWxTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIZCgx3aGVyZV9jbGF1c2UYAiABKAlIAIgBAUIPCg1fd2hlcmVfY2xhdXNlIj8KHEF3c1MzU291cmNlQ29ubmVjdGlvbk9wdGlvbnMSHwoNY29ubmVjdGlvbl9pZBgBIAEoCUIIukgFcgOwAQEi2wQKFUpvYkRlc3RpbmF0aW9uT3B0aW9ucxJPChBwb3N0Z3Jlc19vcHRpb25zGAEgASgLMjMubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnNIABJKCg5hd3NfczNfb3B0aW9ucxgCIAEoCzIwLm1nbXQudjFhbHBoYTEuQXdzUzNEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASSQoNbXlzcWxfb3B0aW9ucxgDIAEoCzIwLm1nbXQudjFhbHBoYTEuTXlzcWxEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASTQoPbW9uZ29kYl9vcHRpb25zGAQgASgLMjIubWdtdC52MWFscGhhMS5Nb25nb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEl4KGGdjcF9jbG91ZHN0b3JhZ2Vfb3B0aW9ucxgFIAEoCzI6Lm1nbXQudjFhbHBoYTEuR2NwQ2xvdWRTdG9yYWdlRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEk8KEGR5bmFtb2RiX29wdGlvbnMYBiABKAsyMy5tZ210LnYxYWxwaGExLkR5bmFtb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEkkKDW1zc3FsX29wdGlvbnMYByABKAsyMC5tZ210LnYxYWxwaGExLk1zc3FsRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAQg8KBmNvbmZpZxIFukgCCAEiJQojTW9uZ29EQkRlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMiLQorR2NwQ2xvdWRTdG9yYWdlRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucyJuCiREeW5hbW9EQkRlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSRgoOdGFibGVfbWFwcGluZ3MYASADKAsyLi5tZ210LnYxYWxwaGExLkR5bmFtb0RCRGVzdGluYXRpb25UYWJsZU1hcHBpbmciUgofRHluYW1vREJEZXN0aW5hdGlvblRhYmxlTWFwcGluZxIUCgxzb3VyY2VfdGFibGUYASABKAkSGQoRZGVzdGluYXRpb25fdGFibGUYAiABKAkiygIKJFBvc3RncmVzRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxJCCg50cnVuY2F0ZV90YWJsZRgBIAEoCzIqLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNUcnVuY2F0ZVRhYmxlQ29uZmlnEhkKEWluaXRfdGFibGVfc2NoZW1hGAIgASgIEjwKC29uX2NvbmZsaWN0GAMgASgLMicubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc09uQ29uZmxpY3RDb25maWcSIwobc2tpcF9mb3JlaWduX2tleV92aW9sYXRpb25zGAQgASgIEikKBWJhdGNoGAUgASgLMhoubWdtdC52MWFscGhhMS5CYXRjaENvbmZpZxIjCg1tYXhfaW5fZmxpZ2h0GAYgASgNQge6SAQqAigBSACIAQFCEAoOX21heF9pbl9mbGlnaHQirAIKGFBvc3RncmVzT25Db25mbGljdENvbmZpZxIWCgpkb19ub3RoaW5nGAEgASgIQgIYARJWCgdub3RoaW5nGAIgASgLMkMubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc09uQ29uZmxpY3RDb25maWcuUG9zdGdyZXNPbkNvbmZsaWN0RG9Ob3RoaW5nSAASUgoGdXBkYXRlGAMgASgLMkAubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc09uQ29uZmxpY3RDb25maWcuUG9zdGdyZXNPbkNvbmZsaWN0VXBkYXRlSAAaHQobUG9zdGdyZXNPbkNvbmZsaWN0RG9Ob3RoaW5nGhoKGFBvc3RncmVzT25Db25mbGljdFVwZGF0ZUIRCghzdHJhdGVneRIFukgCCAAiTgobUG9zdGdyZXNUcnVuY2F0ZVRhYmxlQ29uZmlnEh4KFnRydW5jYXRlX2JlZm9yZV9pbnNlcnQYASABKAgSDwoHY2FzY2FkZRgCIAEoCCLBAgohTXlzcWxEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zEj8KDnRydW5jYXRlX3RhYmxlGAEgASgLMicubWdtdC52MWFscGhhMS5NeXNxbFRydW5jYXRlVGFibGVDb25maWcSGQoRaW5pdF90YWJsZV9zY2hlbWEYAiABKAgSOQoLb25fY29uZmxpY3QYAyABKAsyJC5tZ210LnYxYWxwaGExLk15c3FsT25Db25mbGljdENvbmZpZxIjChtza2lwX2ZvcmVpZ25fa2V5X3Zpb2xhdGlvbnMYBCABKAgSKQoFYmF0Y2gYBSABKAsyGi5tZ210LnYxYWxwaGExLkJhdGNoQ29uZmlnEiMKDW1heF9pbl9mbGlnaHQYBiABKA1CB7pIBCoCKAFIAIgBAUIQCg5fbWF4X2luX2ZsaWdodCI6ChhNeXNxbFRydW5jYXRlVGFibGVDb25maWcSHgoWdHJ1bmNhdGVfYmVmb3JlX2luc2VydBgBIAEoCCKTAgoVTXlzcWxPbkNvbmZsaWN0Q29uZmlnEhIKCmRvX25vdGhpbmcYASABKAgSUAoHbm90aGluZxgCIAEoCzI9Lm1nbXQudjFhbHBoYTEuTXlzcWxPbkNvbmZsaWN0Q29uZmlnLk15c3FsT25Db25mbGljdERvTm90aGluZ0gAEkwKBnVwZGF0ZRgDIAEoCzI6Lm1nbXQudjFhbHBoYTEuTXlzcWxPbkNvbmZsaWN0Q29uZmlnLk15c3FsT25Db25mbGljdFVwZGF0ZUgAGhoKGE15c3FsT25Db25mbGljdERvTm90aGluZxoXChVNeXNxbE9uQ29uZmxpY3RVcGRhdGVCEQoIc3RyYXRlZ3kSBbpIAggAIsECCiFNc3NxbERlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSPwoOdHJ1bmNhdGVfdGFibGUYASABKAsyJy5tZ210LnYxYWxwaGExLk1zc3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIZChFpbml0X3RhYmxlX3NjaGVtYRgCIAEoCBI5Cgtvbl9jb25mbGljdBgDIAEoCzIkLm1nbXQudjFhbHBoYTEuTXNzcWxPbkNvbmZsaWN0Q29uZmlnEiMKG3NraXBfZm9yZWlnbl9rZXlfdmlvbGF0aW9ucxgEIAEoCBIpCgViYXRjaBgFIAEoCzIaLm1nbXQudjFhbHBoYTEuQmF0Y2hDb25maWcSIwoNbWF4X2luX2ZsaWdodBgGIAEoDUIHukgEKgIoAUgAiAEBQhAKDl9tYXhfaW5fZmxpZ2h0IjoKGE1zc3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIeChZ0cnVuY2F0ZV9iZWZvcmVfaW5zZXJ0GAEgASgIIisKFU1zc3FsT25Db25mbGljdENvbmZpZxISCgpkb19ub3RoaW5nGAEgASgIIo4ECiFBd3NTM0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSVAoNc3RvcmFnZV9jbGFzcxgBIAEoDjI9Lm1nbXQudjFhbHBoYTEuQXdzUzNEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zLlN0b3JhZ2VDbGFzcxIjCg1tYXhfaW5fZmxpZ2h0GAIgASgNQge6SAQqAigBSACIAQESFAoHdGltZW91dBgDIAEoCUgBiAEBEikKBWJhdGNoGAQgASgLMhoubWdtdC52MWFscGhhMS5CYXRjaENvbmZpZyKOAgoMU3RvcmFnZUNsYXNzEh0KGVNUT1JBR0VfQ0xBU1NfVU5TUEVDSUZJRUQQABIaChZTVE9SQUdFX0NMQVNTX1NUQU5EQVJEEAESJAogU1RPUkFHRV9DTEFTU19SRURVQ0VEX1JFRFVOREFOQ1kQAhIZChVTVE9SQUdFX0NMQVNTX0dMQUNJRVIQAxIdChlTVE9SQUdFX0NMQVNTX1NUQU5EQVJEX0lBEAQSHAoYU1RPUkFHRV9DTEFTU19PTkVaT05FX0lBEAUSJQohU1RPUkFHRV9DTEFTU19JTlRFTExJR0VOVF9USUVSSU5HEAYSHgoaU1RPUkFHRV9DTEFTU19ERUVQX0FSQ0hJVkUQB0IQCg5fbWF4X2luX2ZsaWdodEIKCghfdGltZW91dCJLCgtCYXRjaENvbmZpZxISCgVjb3VudBgBIAEoDUgAiAEBEhMKBnBlcmlvZBgCIAEoCUgBiAEBQggKBl9jb3VudEIJCgdfcGVyaW9kIuUFChBDcmVhdGVKb2JSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEisKCGpvYl9uYW1lGAIgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEhoKDWNyb25fc2NoZWR1bGUYAyABKAlIAIgBARIrCghtYXBwaW5ncxgEIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxIoCgZzb3VyY2UYBSABKAsyGC5tZ210LnYxYWxwaGExLkpvYlNvdXJjZRI5CgxkZXN0aW5hdGlvbnMYBiADKAsyIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uEhgKEGluaXRpYXRlX2pvYl9ydW4YByABKAgSOAoQd29ya2Zsb3dfb3B0aW9ucxgIIAEoCzIeLm1nbXQudjFhbHBoYTEuV29ya2Zsb3dPcHRpb25zEjQKDHN5bmNfb3B0aW9ucxgJIAEoCzIeLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlPcHRpb25zEkUKFHZpcnR1YWxfZm9yZWlnbl9rZXlzGAogAygLMicubWdtdC52MWFscGhhMS5WaXJ0dWFsRm9yZWlnbkNvbnN0cmFpbnQSMwoIam9iX3R5cGUYCyABKAsyHC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWdIAYgBATqyAbpIrgEaqwEKHmRlc3RpbmF0aW9uc19yZXF1aXJlZF9mb3Jfc3luYxIzRm9yIHN5bmMgam9icywgYXQgbGVhc3Qgb25lIGRlc3RpbmF0aW9uIGlzIHJlcXVpcmVkGlQhaGFzKHRoaXMuam9iX3R5cGUpIHx8IGhhcyh0aGlzLmpvYl90eXBlLnN5bmMpID8gc2l6ZSh0aGlzLmRlc3RpbmF0aW9ucykgPj0gMSA6IHRydWVCEAoOX2Nyb25fc2NoZWR1bGVCCwoJX2pvYl90eXBlItUvCg1Kb2JUeXBlQ29uZmlnEjgKBHN5bmMYASABKAsyKC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmNIABJDCgpwaWlfZGV0ZWN0GAIgASgLMi0ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3RIABrCJwoLSm9iVHlwZVN5bmMSUQoNc2NoZW1hX2NoYW5nZRgBIAEoCzI1Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5TY2hlbWFDaGFuZ2VIAIgBARJPCg9zY2hlbWFfbWFwcGluZ3MYAiADKAsyNi5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuU2NoZW1hTWFwcGluZxrMAgoMU2NoZW1hQ2hhbmdlElUKD3NjaGVtYV9zdHJhdGVneRgBIAEoCzI3Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5TY2hlbWFTdHJhdGVneUgAiAEBElMKDnRhYmxlX3N0cmF0ZWd5GAIgASgLMjYubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVTeW5jLlRhYmxlU3RyYXRlZ3lIAYgBARJVCg9jb2x1bW5fc3RyYXRlZ3kYAyABKAsyNy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3lIAogBAUISChBfc2NoZW1hX3N0cmF0ZWd5QhEKD190YWJsZV9zdHJhdGVneUISChBfY29sdW1uX3N0cmF0ZWd5GpUCCg5TY2hlbWFTdHJhdGVneRJgCg9tYXBfYWxsX3NjaGVtYXMYASABKAsyRS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuU2NoZW1hU3RyYXRlZ3kuTWFwQWxsU2NoZW1hc0gAEmgKE21hcF9kZWZpbmVkX3NjaGVtYXMYAiABKAsySS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuU2NoZW1hU3RyYXRlZ3kuTWFwRGVmaW5lZFNjaGVtYXNIABoPCg1NYXBBbGxTY2hlbWFzGhMKEU1hcERlZmluZWRTY2hlbWFzQhEKCHN0cmF0ZWd5EgW6SAIIABqMAgoNVGFibGVTdHJhdGVneRJdCg5tYXBfYWxsX3RhYmxlcxgBIAEoCzJDLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5UYWJsZVN0cmF0ZWd5Lk1hcEFsbFRhYmxlc0gAEmUKEm1hcF9kZWZpbmVkX3RhYmxlcxgCIAEoCzJHLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5UYWJsZVN0cmF0ZWd5Lk1hcERlZmluZWRUYWJsZXNIABoOCgxNYXBBbGxUYWJsZXMaEgoQTWFwRGVmaW5lZFRhYmxlc0IRCghzdHJhdGVneRIFukgCCAAaxxgKDkNvbHVtblN0cmF0ZWd5EmAKD21hcF9hbGxfY29sdW1ucxgBIAEoCzJFLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneS5NYXBBbGxDb2x1bW5zSAASaAoTbWFwX2RlZmluZWRfY29sdW1ucxgCIAEoCzJJLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneS5NYXBEZWZpbmVkQ29sdW1uc0gAGu0FCg1NYXBBbGxDb2x1bW5zEoEBChtjb2x1bW5faW5fc291cmNlX25vdF9tYXBwZWQYASABKAsyVy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5Tb3VyY2VOb3RNYXBwZWRTdHJhdGVneUgAiAEBEoEBChtjb2x1bW5fbWFwcGVkX25vdF9pbl9zb3VyY2UYAiABKAsyVy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uTWFwcGVkTm90SW5Tb3VyY2VTdHJhdGVneUgBiAEBEp0BCipjb2x1bW5faW5fc291cmNlX21hcHBlZF9ub3RfaW5fZGVzdGluYXRpb24YAyABKAsyZC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5Tb3VyY2VNYXBwZWROb3RJbkRlc3RpbmF0aW9uU3RyYXRlZ3lIAogBARKWAQopY29sdW1uX2luX2Rlc3RpbmF0aW9uX25vX2xvbmdlcl9pbl9zb3VyY2UYBCABKAsyXi5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5EZXN0aW5hdGlvbk5vdEluU291cmNlU3RyYXRlZ3lIA4gBAUIeChxfY29sdW1uX2luX3NvdXJjZV9ub3RfbWFwcGVkQh4KHF9jb2x1bW5fbWFwcGVkX25vdF9pbl9zb3VyY2VCLQorX2NvbHVtbl9pbl9zb3VyY2VfbWFwcGVkX25vdF9pbl9kZXN0aW5hdGlvbkIsCipfY29sdW1uX2luX2Rlc3RpbmF0aW9uX25vX2xvbmdlcl9pbl9zb3VyY2UahgMKEU1hcERlZmluZWRDb2x1bW5zEoEBChtjb2x1bW5fbWFwcGVkX25vdF9pbl9zb3VyY2UYASABKAsyVy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uTWFwcGVkTm90SW5Tb3VyY2VTdHJhdGVneUgAiAEBEp0BCipjb2x1bW5faW5fc291cmNlX21hcHBlZF9ub3RfaW5fZGVzdGluYXRpb24YAiABKAsyZC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5Tb3VyY2VNYXBwZWROb3RJbkRlc3RpbmF0aW9uU3RyYXRlZ3lIAYgBAUIeChxfY29sdW1uX21hcHBlZF9ub3RfaW5fc291cmNlQi0KK19jb2x1bW5faW5fc291cmNlX21hcHBlZF9ub3RfaW5fZGVzdGluYXRpb24apAQKH0NvbHVtbkluU291cmNlTm90TWFwcGVkU3RyYXRlZ3kSegoLcGFzc3Rocm91Z2gYASABKAsyYy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5Tb3VyY2VOb3RNYXBwZWRTdHJhdGVneS5QYXNzdGhyb3VnaEgAEnMKCGF1dG9fbWFwGAIgASgLMl8ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVTeW5jLkNvbHVtblN0cmF0ZWd5LkNvbHVtbkluU291cmNlTm90TWFwcGVkU3RyYXRlZ3kuQXV0b01hcEgAEmwKBGhhbHQYAyABKAsyXC5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5Tb3VyY2VOb3RNYXBwZWRTdHJhdGVneS5IYWx0SAASbAoEZHJvcBgEIAEoCzJcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneS5Db2x1bW5JblNvdXJjZU5vdE1hcHBlZFN0cmF0ZWd5LkRyb3BIABoNCgtQYXNzdGhyb3VnaBoJCgdBdXRvTWFwGgYKBEhhbHQaBgoERHJvcEIKCghzdHJhdGVneRqlAgofQ29sdW1uTWFwcGVkTm90SW5Tb3VyY2VTdHJhdGVneRJ0Cghjb250aW51ZRgBIAEoCzJgLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneS5Db2x1bW5NYXBwZWROb3RJblNvdXJjZVN0cmF0ZWd5LkNvbnRpbnVlSAASbAoEaGFsdBgCIAEoCzJcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneS5Db2x1bW5NYXBwZWROb3RJblNvdXJjZVN0cmF0ZWd5LkhhbHRIABoKCghDb250aW51ZRoGCgRIYWx0QgoKCHN0cmF0ZWd5GtADCixDb2x1bW5JblNvdXJjZU1hcHBlZE5vdEluRGVzdGluYXRpb25TdHJhdGVneRKBAQoIY29udGludWUYASABKAsybS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5Tb3VyY2VNYXBwZWROb3RJbkRlc3RpbmF0aW9uU3RyYXRlZ3kuQ29udGludWVIABJ5CgRkcm9wGAIgASgLMmkubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVTeW5jLkNvbHVtblN0cmF0ZWd5LkNvbHVtbkluU291cmNlTWFwcGVkTm90SW5EZXN0aW5hdGlvblN0cmF0ZWd5LkRyb3BIABJ5CgRoYWx0GAMgASgLMmkubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVTeW5jLkNvbHVtblN0cmF0ZWd5LkNvbHVtbkluU291cmNlTWFwcGVkTm90SW5EZXN0aW5hdGlvblN0cmF0ZWd5LkhhbHRIABoKCghDb250aW51ZRoGCgREcm9wGgYKBEhhbHRCCgoIc3RyYXRlZ3kawQMKJkNvbHVtbkluRGVzdGluYXRpb25Ob3RJblNvdXJjZVN0cmF0ZWd5EnsKCGNvbnRpbnVlGAEgASgLMmcubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVTeW5jLkNvbHVtblN0cmF0ZWd5LkNvbHVtbkluRGVzdGluYXRpb25Ob3RJblNvdXJjZVN0cmF0ZWd5LkNvbnRpbnVlSAAScwoEaGFsdBgCIAEoCzJjLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneS5Db2x1bW5JbkRlc3RpbmF0aW9uTm90SW5Tb3VyY2VTdHJhdGVneS5IYWx0SAASegoIYXV0b19tYXAYAyABKAsyZi5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3kuQ29sdW1uSW5EZXN0aW5hdGlvbk5vdEluU291cmNlU3RyYXRlZ3kuQXV0b01hcEgAGgoKCENvbnRpbnVlGgYKBEhhbHQaCQoHQXV0b01hcEIKCghzdHJhdGVneUIKCghzdHJhdGVneRq8BgoNU2NoZW1hTWFwcGluZxIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESHwoSZGVzdGluYXRpb25fc2NoZW1hGAIgASgJSACIAQESWwoOdGFibGVfbWFwcGluZ3MYAyADKAsyQy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuU2NoZW1hTWFwcGluZy5UYWJsZU1hcHBpbmcSUwoOdGFibGVfc3RyYXRlZ3kYBCABKAsyNi5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuVGFibGVTdHJhdGVneUgBiAEBElUKD2NvbHVtbl9zdHJhdGVneRgFIAEoCzI3Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luYy5Db2x1bW5TdHJhdGVneUgCiAEBGqkDCgxUYWJsZU1hcHBpbmcSFgoFdGFibGUYASABKAlCB7pIBHICEAESHgoRZGVzdGluYXRpb25fdGFibGUYAiABKAlIAIgBARJqCg9jb2x1bW5fbWFwcGluZ3MYAyADKAsyUS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuU2NoZW1hTWFwcGluZy5UYWJsZU1hcHBpbmcuQ29sdW1uTWFwcGluZxJVCg9jb2x1bW5fc3RyYXRlZ3kYBCABKAsyNy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVN5bmMuQ29sdW1uU3RyYXRlZ3lIAYgBARp0Cg1Db2x1bW5NYXBwaW5nEhcKBmNvbHVtbhgBIAEoCUIHukgEcgIQARI6Cgt0cmFuc2Zvcm1lchgCIAEoCzIgLm1nbXQudjFhbHBoYTEuVHJhbnNmb3JtZXJDb25maWdIAIgBAUIOCgxfdHJhbnNmb3JtZXJCFAoSX2Rlc3RpbmF0aW9uX3RhYmxlQhIKEF9jb2x1bW5fc3RyYXRlZ3lCFQoTX2Rlc3RpbmF0aW9uX3NjaGVtYUIRCg9fdGFibGVfc3RyYXRlZ3lCEgoQX2NvbHVtbl9zdHJhdGVneUIQCg5fc2NoZW1hX2NoYW5nZRrsBgoQSm9iVHlwZVBpaURldGVjdBJRCg1kYXRhX3NhbXBsaW5nGAEgASgLMjoubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuRGF0YVNhbXBsaW5nElgKEXRhYmxlX3NjYW5fZmlsdGVyGAIgASgLMj0ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuVGFibGVTY2FuRmlsdGVyEhgKC3VzZXJfcHJvbXB0GAMgASgJSACIAQESUwoLaW5jcmVtZW50YWwYBCABKAsyOS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5JbmNyZW1lbnRhbEgBiAEBGiEKC0luY3JlbWVudGFsEhIKCmlzX2VuYWJsZWQYASABKAgaIgoMRGF0YVNhbXBsaW5nEhIKCmlzX2VuYWJsZWQYASABKAgakQIKD1RhYmxlU2NhbkZpbHRlchJPCgtpbmNsdWRlX2FsbBgBIAEoCzI4Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlUGlpRGV0ZWN0LkluY2x1ZGVBbGxIABJOCgdpbmNsdWRlGAIgASgLMjsubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuVGFibGVQYXR0ZXJuc0gAEk4KB2V4Y2x1ZGUYAyABKAsyOy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZVBhdHRlcm5zSABCDQoEbW9kZRIFukgCCAEaDAoKSW5jbHVkZUFsbBpvCg1UYWJsZVBhdHRlcm5zEg8KB3NjaGVtYXMYASADKAkSTQoGdGFibGVzGAIgAygLMj0ubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuVGFibGVJZGVudGlmaWVyGkIKD1RhYmxlSWRlbnRpZmllchIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESFgoFdGFibGUYAiABKAlCB7pIBHICEAFCDgoMX3VzZXJfcHJvbXB0Qg4KDF9pbmNyZW1lbnRhbEIRCghqb2JfdHlwZRIFukgCCAAiZQoPV29ya2Zsb3dPcHRpb25zEhgKC3J1bl90aW1lb3V0GAggASgDSACIAQFCDgoMX3J1bl90aW1lb3V0SgQIARACSgQIAhADSgQIAxAESgQIBBAFSgQIBRAGSgQIBhAHSgQIBxAIItsBCg9BY3Rpdml0eU9wdGlvbnMSLwoZc2NoZWR1bGVfdG9fY2xvc2VfdGltZW91dBgBIAEoA0IHukgEIgIoAUgAiAEBEiwKFnN0YXJ0X3RvX2Nsb3NlX3RpbWVvdXQYAiABKANCB7pIBCICKAFIAYgBARIwCgxyZXRyeV9wb2xpY3kYAyABKAsyGi5tZ210LnYxYWxwaGExLlJldHJ5UG9saWN5QhwKGl9zY2hlZHVsZV90b19jbG9zZV90aW1lb3V0QhkKF19zdGFydF90b19jbG9zZV90aW1lb3V0IkoKC1JldHJ5UG9saWN5EiYKEG1heGltdW1fYXR0ZW1wdHMYASABKAVCB7pIBBoCKABIAIgBAUITChFfbWF4aW11bV9hdHRlbXB0cyI0ChFDcmVhdGVKb2JSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJPChVKb2JNYXBwaW5nVHJhbnNmb3JtZXISMAoGY29uZmlnGAMgASgLMiAubWdtdC52MWFscGhhMS5UcmFuc2Zvcm1lckNvbmZpZ0oECAEQAiKRAQoKSm9iTWFwcGluZxIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESFgoFdGFibGUYAiABKAlCB7pIBHICEAESFwoGY29sdW1uGAMgASgJQge6SARyAhABEjkKC3RyYW5zZm9ybWVyGAUgASgLMiQubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nVHJhbnNmb3JtZXIiJQoNR2V0Sm9iUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQEiMQoOR2V0Sm9iUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IiXgoYVXBkYXRlSm9iU2NoZWR1bGVSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABARIaCg1jcm9uX3NjaGVkdWxlGAIgASgJSACIAQFCEAoOX2Nyb25fc2NoZWR1bGUiPAoZVXBkYXRlSm9iU2NoZWR1bGVSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJSCg9QYXVzZUpvYlJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEg0KBXBhdXNlGAIgASgIEhEKBG5vdGUYAyABKAlIAIgBAUIHCgVfbm90ZSIzChBQYXVzZUpvYlJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIoYCCiBVcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESKAoGc291cmNlGAIgASgLMhgubWdtdC52MWFscGhhMS5Kb2JTb3VyY2USKwoIbWFwcGluZ3MYAyADKAsyGS5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmcSRQoUdmlydHVhbF9mb3JlaWduX2tleXMYBCADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIuCghqb2JfdHlwZRgFIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZyJECiFVcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IiYQoaUG9zdGdyZXNTb3VyY2VTY2hlbWFTdWJzZXQSQwoQcG9zdGdyZXNfc2NoZW1hcxgBIAMoCzIpLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VTY2hlbWFPcHRpb24iWAoXTXlzcWxTb3VyY2VTY2hlbWFTdWJzZXQSPQoNbXlzcWxfc2NoZW1hcxgBIAMoCzImLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VTY2hlbWFPcHRpb24iVgoaRHluYW1vREJTb3VyY2VTY2hlbWFTdWJzZXQSOAoGdGFibGVzGAEgAygLMigubWdtdC52MWFscGhhMS5EeW5hbW9EQlNvdXJjZVRhYmxlT3B0aW9uIlgKF01zc3FsU291cmNlU2NoZW1hU3Vic2V0Ej0KDW1zc3FsX3NjaGVtYXMYASADKAsyJi5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlU2NoZW1hT3B0aW9uIr4CChhKb2JTb3VyY2VTcWxTdWJldFNjaGVtYXMSRAoPcG9zdGdyZXNfc3Vic2V0GAIgASgLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYVN1YnNldEgAEj4KDG15c3FsX3N1YnNldBgDIAEoCzImLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VTY2hlbWFTdWJzZXRIABJECg9keW5hbW9kYl9zdWJzZXQYBCABKAsyKS5tZ210LnYxYWxwaGExLkR5bmFtb0RCU291cmNlU2NoZW1hU3Vic2V0SAASPgoMbXNzcWxfc3Vic2V0GAUgASgLMiYubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVNjaGVtYVN1YnNldEgAQhAKB3NjaGVtYXMSBbpIAggBSgQIARACIqQBCidTZXRKb2JTb3VyY2VTcWxDb25uZWN0aW9uU3Vic2V0c1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEjgKB3NjaGVtYXMYAiABKAsyJy5tZ210LnYxYWxwaGExLkpvYlNvdXJjZVNxbFN1YmV0U2NoZW1hcxIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYAyABKAgiSwooU2V0Sm9iU291cmNlU3FsQ29ubmVjdGlvblN1YnNldHNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiKxAQolVXBkYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEh8KDWNvbm5lY3Rpb25faWQYAiABKAlCCLpIBXIDsAEBEjUKB29wdGlvbnMYAyABKAsyJC5tZ210LnYxYWxwaGExLkpvYkRlc3RpbmF0aW9uT3B0aW9ucxIWCg5kZXN0aW5hdGlvbl9pZBgEIAEoCSJJCiZVcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJJCiVEZWxldGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXF1ZXN0EiAKDmRlc3RpbmF0aW9uX2lkGAEgASgJQgi6SAVyA7ABASIoCiZEZWxldGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXNwb25zZSKHAQomQ3JlYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uc1JlcXVlc3QSGAoGam9iX2lkGAEgASgJQgi6SAVyA7ABARJDCgxkZXN0aW5hdGlvbnMYAiADKAsyIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uQgi6SAWSAQIIASJKCidDcmVhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25zUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IiKAoQRGVsZXRlSm9iUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQEiEwoRRGVsZXRlSm9iUmVzcG9uc2UiYgoZSXNKb2JOYW1lQXZhaWxhYmxlUmVxdWVzdBInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBIjIKGklzSm9iTmFtZUF2YWlsYWJsZVJlc3BvbnNlEhQKDGlzX2F2YWlsYWJsZRgBIAEoCCJVChFHZXRKb2JSdW5zUmVxdWVzdBIaCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBSAASHgoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQFIAEIECgJpZCI9ChJHZXRKb2JSdW5zUmVzcG9uc2USJwoIam9iX3J1bnMYASADKAsyFS5tZ210LnYxYWxwaGExLkpvYlJ1biJEChBHZXRKb2JSdW5SZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiOwoRR2V0Sm9iUnVuUmVzcG9uc2USJgoHam9iX3J1bhgBIAEoCzIVLm1nbXQudjFhbHBoYTEuSm9iUnVuIi8KE0NyZWF0ZUpvYlJ1blJlcXVlc3QSGAoGam9iX2lkGAEgASgJQgi6SAVyA7ABASIWChRDcmVhdGVKb2JSdW5SZXNwb25zZSJHChNDYW5jZWxKb2JSdW5SZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiFgoUQ2FuY2VsSm9iUnVuUmVzcG9uc2Ui7AQKA0pvYhIKCgJpZBgBIAEoCRIaChJjcmVhdGVkX2J5X3VzZXJfaWQYAiABKAkSLgoKY3JlYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXBkYXRlZF9ieV91c2VyX2lkGAQgASgJEi4KCnVwZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBG5hbWUYBiABKAkSKAoGc291cmNlGAcgASgLMhgubWdtdC52MWFscGhhMS5Kb2JTb3VyY2USMwoMZGVzdGluYXRpb25zGAggAygLMh0ubWdtdC52MWFscGhhMS5Kb2JEZXN0aW5hdGlvbhIrCghtYXBwaW5ncxgJIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxIaCg1jcm9uX3NjaGVkdWxlGAogASgJSACIAQESEgoKYWNjb3VudF9pZBgLIAEoCRI0CgxzeW5jX29wdGlvbnMYDCABKAsyHi5tZ210LnYxYWxwaGExLkFjdGl2aXR5T3B0aW9ucxI4ChB3b3JrZmxvd19vcHRpb25zGA0gASgLMh4ubWdtdC52MWFscGhhMS5Xb3JrZmxvd09wdGlvbnMSRQoUdmlydHVhbF9mb3JlaWduX2tleXMYDiADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIuCghqb2JfdHlwZRgPIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZ0IQCg5fY3Jvbl9zY2hlZHVsZSJSCgxKb2JSZWNlbnRSdW4SLgoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKam9iX3J1bl9pZBgCIAEoCSIzChdHZXRKb2JSZWNlbnRSdW5zUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIkwKGEdldEpvYlJlY2VudFJ1bnNSZXNwb25zZRIwCgtyZWNlbnRfcnVucxgBIAMoCzIbLm1nbXQudjFhbHBoYTEuSm9iUmVjZW50UnVuIkEKC0pvYk5leHRSdW5zEjIKDm5leHRfcnVuX3RpbWVzGAEgAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIxChVHZXRKb2JOZXh0UnVuc1JlcXVlc3QSGAoGam9iX2lkGAEgASgJQgi6SAVyA7ABASJHChZHZXRKb2JOZXh0UnVuc1Jlc3BvbnNlEi0KCW5leHRfcnVucxgBIAEoCzIaLm1nbXQudjFhbHBoYTEuSm9iTmV4dFJ1bnMiLwoTR2V0Sm9iU3RhdHVzUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIkAKFEdldEpvYlN0YXR1c1Jlc3BvbnNlEigKBnN0YXR1cxgBIAEoDjIYLm1nbXQudjFhbHBoYTEuSm9iU3RhdHVzIlUKD0pvYlN0YXR1c1JlY29yZBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEigKBnN0YXR1cxgCIAEoDjIYLm1nbXQudjFhbHBoYTEuSm9iU3RhdHVzIjUKFUdldEpvYlN0YXR1c2VzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASJKChZHZXRKb2JTdGF0dXNlc1Jlc3BvbnNlEjAKCHN0YXR1c2VzGAEgAygLMh4ubWdtdC52MWFscGhhMS5Kb2JTdGF0dXNSZWNvcmQiIgoPQWN0aXZpdHlGYWlsdXJlEg8KB21lc3NhZ2UYASABKAkiowEKD1BlbmRpbmdBY3Rpdml0eRItCgZzdGF0dXMYASABKA4yHS5tZ210LnYxYWxwaGExLkFjdGl2aXR5U3RhdHVzEhUKDWFjdGl2aXR5X25hbWUYAiABKAkSOQoMbGFzdF9mYWlsdXJlGAMgASgLMh4ubWdtdC52MWFscGhhMS5BY3Rpdml0eUZhaWx1cmVIAIgBAUIPCg1fbGFzdF9mYWlsdXJlIpkCCgZKb2JSdW4SCgoCaWQYASABKAkSDgoGam9iX2lkGAIgASgJEgwKBG5hbWUYAyABKAkSKwoGc3RhdHVzGAQgASgOMhsubWdtdC52MWFscGhhMS5Kb2JSdW5TdGF0dXMSLgoKc3RhcnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMY29tcGxldGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjoKEnBlbmRpbmdfYWN0aXZpdGllcxgIIAMoCzIeLm1nbXQudjFhbHBoYTEuUGVuZGluZ0FjdGl2aXR5Qg8KDV9jb21wbGV0ZWRfYXRKBAgFEAYiPAoUSm9iUnVuRXZlbnRUYXNrRXJyb3ISDwoHbWVzc2FnZRgBIAEoCRITCgtyZXRyeV9zdGF0ZRgCIAEoCSKPAQoPSm9iUnVuRXZlbnRUYXNrEgoKAmlkGAEgASgDEgwKBHR5cGUYAiABKAkSLgoKZXZlbnRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoFZXJyb3IYBCABKAsyIy5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50VGFza0Vycm9yIjMKEkpvYlJ1blN5bmNNZXRhZGF0YRIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkiZAoTSm9iUnVuRXZlbnRNZXRhZGF0YRI6Cg1zeW5jX21ldGFkYXRhGAEgASgLMiEubWdtdC52MWFscGhhMS5Kb2JSdW5TeW5jTWV0YWRhdGFIAEIRCghtZXRhZGF0YRIFukgCCAEi7AEKC0pvYlJ1bkV2ZW50EgoKAmlkGAEgASgDEgwKBHR5cGUYAiABKAkSLgoKc3RhcnRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY2xvc2VfdGltZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoIbWV0YWRhdGEYBSABKAsyIi5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50TWV0YWRhdGESLQoFdGFza3MYBiADKAsyHi5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50VGFzayJKChZHZXRKb2JSdW5FdmVudHNSZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiXgoXR2V0Sm9iUnVuRXZlbnRzUmVzcG9uc2USKgoGZXZlbnRzGAEgAygLMhoubWdtdC52MWFscGhhMS5Kb2JSdW5FdmVudBIXCg9pc19ydW5fY29tcGxldGUYAiABKAgiRwoTRGVsZXRlSm9iUnVuUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBIhYKFERlbGV0ZUpvYlJ1blJlc3BvbnNlIkoKFlRlcm1pbmF0ZUpvYlJ1blJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASIZChdUZXJtaW5hdGVKb2JSdW5SZXNwb25zZSLxAQoaR2V0Sm9iUnVuTG9nc1N0cmVhbVJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABARIoCgZ3aW5kb3cYAyABKA4yGC5tZ210LnYxYWxwaGExLkxvZ1dpbmRvdxITCgtzaG91bGRfdGFpbBgEIAEoCBIjCg1tYXhfbG9nX2xpbmVzGAUgASgDQge6SAQiAigBSACIAQESKwoKbG9nX2xldmVscxgGIAMoDjIXLm1nbXQudjFhbHBoYTEuTG9nTGV2ZWxCEAoOX21heF9sb2dfbGluZXMi6AEKG0dldEpvYlJ1bkxvZ3NTdHJlYW1SZXNwb25zZRIQCghsb2dfbGluZRgBIAEoCRIyCgl0aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESRgoGbGFiZWxzGAMgAygLMjYubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzU3RyZWFtUmVzcG9uc2UuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdGltZXN0YW1wItYBChRHZXRKb2JSdW5Mb2dzUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBEigKBndpbmRvdxgDIAEoDjIYLm1nbXQudjFhbHBoYTEuTG9nV2luZG93EiMKDW1heF9sb2dfbGluZXMYBCABKANCB7pIBCICKAFIAIgBARIrCgpsb2dfbGV2ZWxzGAUgAygOMhcubWdtdC52MWFscGhhMS5Mb2dMZXZlbEIQCg5fbWF4X2xvZ19saW5lcyKxAgoVR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlEj8KCWxvZ19saW5lcxgBIAMoCzIsLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlLkxvZ0xpbmUa1gEKB0xvZ0xpbmUSEAoIbG9nX2xpbmUYASABKAkSMgoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkgKBmxhYmVscxgDIAMoCzI4Lm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlLkxvZ0xpbmUuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIMCgpfdGltZXN0YW1wIm4KHFNldEpvYldvcmtmbG93T3B0aW9uc1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEjgKEHdvcmZrbG93X29wdGlvbnMYAiABKAsyHi5tZ210LnYxYWxwaGExLldvcmtmbG93T3B0aW9ucyJACh1TZXRKb2JXb3JrZmxvd09wdGlvbnNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJmChhTZXRKb2JTeW5jT3B0aW9uc1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEjQKDHN5bmNfb3B0aW9ucxgCIAEoCzIeLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlPcHRpb25zIjwKGVNldEpvYlN5bmNPcHRpb25zUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IikQIKGlZhbGlkYXRlSm9iTWFwcGluZ3NSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEisKCG1hcHBpbmdzGAIgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEh8KDWNvbm5lY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBEkUKFHZpcnR1YWxfZm9yZWlnbl9rZXlzGAQgAygLMicubWdtdC52MWFscGhhMS5WaXJ0dWFsRm9yZWlnbkNvbnN0cmFpbnQSMQoKam9iX3NvdXJjZRgFIAEoCzIYLm1nbXQudjFhbHBoYTEuSm9iU291cmNlSACIAQFCDQoLX2pvYl9zb3VyY2UiqwcKC0NvbHVtbkVycm9yEg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCRIOCgZjb2x1bW4YAyABKAkSEgoGZXJyb3JzGAQgAygJQgIYARJDCg1lcnJvcl9yZXBvcnRzGAUgAygLMiwubWdtdC52MWFscGhhMS5Db2x1bW5FcnJvci5Db2x1bW5FcnJvclJlcG9ydBpeChFDb2x1bW5FcnJvclJlcG9ydBI4CgRjb2RlGAEgASgOMioubWdtdC52MWFscGhhMS5Db2x1bW5FcnJvci5Db2x1bW5FcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCSKzBQoPQ29sdW1uRXJyb3JDb2RlEiEKHUNPTFVNTl9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASKQolQ09MVU1OX0VSUk9SX0NPREVfTk9UX0ZPVU5EX0lOX1NPVVJDRRABEioKJkNPTFVNTl9FUlJPUl9DT0RFX05PVF9GT1VORF9JTl9NQVBQSU5HEAISOgo2Q09MVU1OX0VSUk9SX0NPREVfUkVRVUlSRURfQ09MVU1OX05PVF9GT1VORF9JTl9NQVBQSU5HEAMSPwo7Q09MVU1OX0VSUk9SX0NPREVfUkVRVUlSRURfRk9SRUlHTl9LRVlfTk9UX0ZPVU5EX0lOX01BUFBJTkcQBBJLCkdDT0xVTU5fRVJST1JfQ09ERV9VTlNVUFBPUlRFRF9DSVJDVUxBUl9ERVBFTkRFTkNZX0FUX0xFQVNUX09ORV9OVUxMQUJMRRAFEjwKOENPTFVNTl9FUlJPUl9DT0RFX1ZGS19TT1VSQ0VfQ09MVU1OX05PVF9GT1VORF9JTl9NQVBQSU5HEAYSOwo3Q09MVU1OX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9DT0xVTU5fTk9UX0ZPVU5EX0lOX1NPVVJDRRAHEjwKOENPTFVNTl9FUlJPUl9DT0RFX1ZGS19UQVJHRVRfQ09MVU1OX05PVF9GT1VORF9JTl9NQVBQSU5HEAgSOwo3Q09MVU1OX0VSUk9SX0NPREVfVkZLX1RBUkdFVF9DT0xVTU5fTk9UX0ZPVU5EX0lOX1NPVVJDRRAJEjIKLkNPTFVNTl9FUlJPUl9DT0RFX1ZGS19DT0xVTU5fREFUQVRZUEVfTUlTTUFUQ0gQChIyCi5DT0xVTU5fRVJST1JfQ09ERV9WRktfU09VUkNFX0NPTFVNTl9OT1RfVU5JUVVFEAsimwMKDUNvbHVtbldhcm5pbmcSDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEg4KBmNvbHVtbhgDIAEoCRIUCgh3YXJuaW5ncxgFIAMoCUICGAESSQoPd2FybmluZ19yZXBvcnRzGAYgAygLMjAubWdtdC52MWFscGhhMS5Db2x1bW5XYXJuaW5nLkNvbHVtbldhcm5pbmdSZXBvcnQaZAoTQ29sdW1uV2FybmluZ1JlcG9ydBI8CgRjb2RlGAEgASgOMi4ubWdtdC52MWFscGhhMS5Db2x1bW5XYXJuaW5nLkNvbHVtbldhcm5pbmdDb2RlEg8KB21lc3NhZ2UYAiABKAkikwEKEUNvbHVtbldhcm5pbmdDb2RlEiMKH0NPTFVNTl9XQVJOSU5HX0NPREVfVU5TUEVDSUZJRUQQABIrCidDT0xVTU5fV0FSTklOR19DT0RFX05PVF9GT1VORF9JTl9TT1VSQ0UQARIsCihDT0xVTU5fV0FSTklOR19DT0RFX05PVF9GT1VORF9JTl9NQVBQSU5HEAIiiQMKDURhdGFiYXNlRXJyb3ISEgoGZXJyb3JzGAEgAygJQgIYARJHCg1lcnJvcl9yZXBvcnRzGAIgAygLMjAubWdtdC52MWFscGhhMS5EYXRhYmFzZUVycm9yLkRhdGFiYXNlRXJyb3JSZXBvcnQaZAoTRGF0YWJhc2VFcnJvclJlcG9ydBI8CgRjb2RlGAEgASgOMi4ubWdtdC52MWFscGhhMS5EYXRhYmFzZUVycm9yLkRhdGFiYXNlRXJyb3JDb2RlEg8KB21lc3NhZ2UYAiABKAkitAEKEURhdGFiYXNlRXJyb3JDb2RlEiMKH0RBVEFCQVNFX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABJNCklEQVRBQkFTRV9FUlJPUl9DT0RFX1VOU1VQUE9SVEVEX0NJUkNVTEFSX0RFUEVOREVOQ1lfQVRfTEVBU1RfT05FX05VTExBQkxFEAESKwonREFUQUJBU0VfRVJST1JfQ09ERV9WRktfQ09MVU1OX01JU01BVENIEAIingQKClRhYmxlRXJyb3ISDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEkEKDWVycm9yX3JlcG9ydHMYAyADKAsyKi5tZ210LnYxYWxwaGExLlRhYmxlRXJyb3IuVGFibGVFcnJvclJlcG9ydBpbChBUYWJsZUVycm9yUmVwb3J0EjYKBGNvZGUYASABKA4yKC5tZ210LnYxYWxwaGExLlRhYmxlRXJyb3IuVGFibGVFcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCSLQAgoOVGFibGVFcnJvckNvZGUSIAocVEFCTEVfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEi4KKlRBQkxFX0VSUk9SX0NPREVfVEFCTEVfTk9UX0ZPVU5EX0lOX1NPVVJDRRABEjoKNlRBQkxFX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9UQUJMRV9OT1RfRk9VTkRfSU5fTUFQUElORxACEjkKNVRBQkxFX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9UQUJMRV9OT1RfRk9VTkRfSU5fU09VUkNFEAMSOgo2VEFCTEVfRVJST1JfQ09ERV9WRktfVEFSR0VUX1RBQkxFX05PVF9GT1VORF9JTl9NQVBQSU5HEAQSOQo1VEFCTEVfRVJST1JfQ09ERV9WRktfVEFSR0VUX1RBQkxFX05PVF9GT1VORF9JTl9TT1VSQ0UQBSLvAQobVmFsaWRhdGVKb2JNYXBwaW5nc1Jlc3BvbnNlEjEKDWNvbHVtbl9lcnJvcnMYASADKAsyGi5tZ210LnYxYWxwaGExLkNvbHVtbkVycm9yEjUKD2RhdGFiYXNlX2Vycm9ycxgCIAEoCzIcLm1nbXQudjFhbHBoYTEuRGF0YWJhc2VFcnJvchI1Cg9jb2x1bW5fd2FybmluZ3MYAyADKAsyHC5tZ210LnYxYWxwaGExLkNvbHVtbldhcm5pbmcSLwoMdGFibGVfZXJyb3JzGAQgAygLMhkubWdtdC52MWFscGhhMS5UYWJsZUVycm9yImUKFVZhbGlkYXRlU2NoZW1hUmVxdWVzdBIrCghtYXBwaW5ncxgBIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxIfCg1jb25uZWN0aW9uX2lkGAIgASgJQgi6SAVyA7ABASKMAgoWVmFsaWRhdGVTY2hlbWFSZXNwb25zZRI2Cg9taXNzaW5nX2NvbHVtbnMYASADKAsyHS5tZ210LnYxYWxwaGExLkRhdGFiYXNlQ29sdW1uEjQKDWV4dHJhX2NvbHVtbnMYAiADKAsyHS5tZ210LnYxYWxwaGExLkRhdGFiYXNlQ29sdW1uEkMKDm1pc3NpbmdfdGFibGVzGAMgAygLMisubWdtdC52MWFscGhhMS5WYWxpZGF0ZVNjaGVtYVJlc3BvbnNlLlRhYmxlEhcKD21pc3Npbmdfc2NoZW1hcxgEIAMoCRomCgVUYWJsZRIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkiQwoRVmlydHVhbEZvcmVpZ25LZXkSDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEg8KB2NvbHVtbnMYAyADKAkigQEKGFZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSDwoHY29sdW1ucxgDIAMoCRI1Cgtmb3JlaWduX2tleRgEIAEoCzIgLm1nbXQudjFhbHBoYTEuVmlydHVhbEZvcmVpZ25LZXkiZwoNUnVuQ29udGV4dEtleRIbCgpqb2JfcnVuX2lkGAEgASgJQge6SARyAhABEhwKC2V4dGVybmFsX2lkGAIgASgJQge6SARyAhABEhsKCmFjY291bnRfaWQYAyABKAlCB7pIBHICEAEiQAoUR2V0UnVuQ29udGV4dFJlcXVlc3QSKAoCaWQYASABKAsyHC5tZ210LnYxYWxwaGExLlJ1bkNvbnRleHRLZXkiJgoVR2V0UnVuQ29udGV4dFJlc3BvbnNlEg0KBXZhbHVlGAEgASgMIk8KFFNldFJ1bkNvbnRleHRSZXF1ZXN0EigKAmlkGAEgASgLMhwubWdtdC52MWFscGhhMS5SdW5Db250ZXh0S2V5Eg0KBXZhbHVlGAIgASgMIhcKFVNldFJ1bkNvbnRleHRSZXNwb25zZSJQChVTZXRSdW5Db250ZXh0c1JlcXVlc3QSKAoCaWQYASABKAsyHC5tZ210LnYxYWxwaGExLlJ1bkNvbnRleHRLZXkSDQoFdmFsdWUYAiABKAwiGAoWU2V0UnVuQ29udGV4dHNSZXNwb25zZSK8AgoHSm9iSG9vaxIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg4KBmpvYl9pZBgEIAEoCRIsCgZjb25maWcYBSABKAsyHC5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcSGgoSY3JlYXRlZF9ieV91c2VyX2lkGAYgASgJEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhoKEnVwZGF0ZWRfYnlfdXNlcl9pZBgIIAEoCRIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdlbmFibGVkGAogASgIEhsKCHByaW9yaXR5GAsgASgNQgm6SAYqBBhkKAAirwEKCk5ld0pvYkhvb2sSJwoEbmFtZRgBIAEoCUIZukgWchQyEl5bYS16MC05LV17MywxMDB9JBIcCgtkZXNjcmlwdGlvbhgCIAEoCUIHukgEcgIQARIsCgZjb25maWcYAyABKAsyHC5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcSDwoHZW5hYmxlZBgEIAEoCBIbCghwcmlvcml0eRgFIAEoDUIJukgGKgQYZCgAIogDCg1Kb2JIb29rQ29uZmlnEjYKA3NxbBgFIAEoCzInLm1nbXQudjFhbHBoYTEuSm9iSG9va0NvbmZpZy5Kb2JTcWxIb29rSAAalQIKCkpvYlNxbEhvb2sSFgoFcXVlcnkYASABKAlCB7pIBHICEAESHwoNY29ubmVjdGlvbl9pZBgCIAEoCUIIukgFcgOwAQESPgoGdGltaW5nGAMgASgLMi4ubWdtdC52MWFscGhhMS5Kb2JIb29rQ29uZmlnLkpvYlNxbEhvb2suVGltaW5nGo0BCgZUaW1pbmcSNwoIcHJlX3N5bmMYAyABKAsyIy5tZ210LnYxYWxwaGExLkpvYkhvb2tUaW1pbmdQcmVTeW5jSAASOQoJcG9zdF9zeW5jGAQgASgLMiQubWdtdC52MWFscGhhMS5Kb2JIb29rVGltaW5nUG9zdFN5bmNIAEIPCgZ0aW1pbmcSBbpIAggBQg8KBmNvbmZpZxIFukgCCAFKBAgBEAJKBAgCEANKBAgDEARKBAgEEAUiFgoUSm9iSG9va1RpbWluZ1ByZVN5bmMiFwoVSm9iSG9va1RpbWluZ1Bvc3RTeW5jIi4KEkdldEpvYkhvb2tzUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIjwKE0dldEpvYkhvb2tzUmVzcG9uc2USJQoFaG9va3MYASADKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2siKQoRR2V0Sm9iSG9va1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIjoKEkdldEpvYkhvb2tSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIk8KFENyZWF0ZUpvYkhvb2tSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRInCgRob29rGAIgASgLMhkubWdtdC52MWFscGhhMS5OZXdKb2JIb29rIj0KFUNyZWF0ZUpvYkhvb2tSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIiwKFERlbGV0ZUpvYkhvb2tSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASIXChVEZWxldGVKb2JIb29rUmVzcG9uc2UiPQodSXNKb2JIb29rTmFtZUF2YWlsYWJsZVJlcXVlc3QSDgoGam9iX2lkGAEgASgJEgwKBG5hbWUYAiABKAkiNgoeSXNKb2JIb29rTmFtZUF2YWlsYWJsZVJlc3BvbnNlEhQKDGlzX2F2YWlsYWJsZRgBIAEoCCLPAQoUVXBkYXRlSm9iSG9va1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEicKBG5hbWUYAiABKAlCGbpIFnIUMhJeW2EtejAtOS1dezMsMTAwfSQSHAoLZGVzY3JpcHRpb24YAyABKAlCB7pIBHICEAESLAoGY29uZmlnGAQgASgLMhwubWdtdC52MWFscGhhMS5Kb2JIb29rQ29uZmlnEg8KB2VuYWJsZWQYBSABKAgSGwoIcHJpb3JpdHkYBiABKA1CCbpIBioEGGQoACI9ChVVcGRhdGVKb2JIb29rUmVzcG9uc2USJAoEaG9vaxgBIAEoCzIWLm1nbXQudjFhbHBoYTEuSm9iSG9vayJBChhTZXRKb2JIb29rRW5hYmxlZFJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEg8KB2VuYWJsZWQYAiABKAgiQQoZU2V0Sm9iSG9va0VuYWJsZWRSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIs8BCiBHZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEkYKBnRpbWluZxgCIAEoDjI2Lm1nbXQudjFhbHBoYTEuR2V0QWN0aXZlSm9iSG9va3NCeVRpbWluZ1JlcXVlc3QuVGltaW5nIkkKBlRpbWluZxIWChJUSU1JTkdfVU5TUEVDSUZJRUQQABISCg5USU1JTkdfUFJFU1lOQxABEhMKD1RJTUlOR19QT1NUU1lOQxACIkoKIUdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmdSZXNwb25zZRIlCgVob29rcxgBIAMoCzIWLm1nbXQudjFhbHBoYTEuSm9iSG9vayJZChxHZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXF1ZXN0EhsKCmpvYl9ydW5faWQYASABKAlCB7pIBHICEAESHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiUgodR2V0UGlpRGV0ZWN0aW9uUmVwb3J0UmVzcG9uc2USMQoGcmVwb3J0GAEgASgLMiEubWdtdC52MWFscGhhMS5QaWlEZXRlY3Rpb25SZXBvcnQijgQKElBpaURldGVjdGlvblJlcG9ydBI9CgZ0YWJsZXMYASADKAsyLS5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydC5UYWJsZVJlcG9ydBq4AwoLVGFibGVSZXBvcnQSDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEksKB2NvbHVtbnMYAyADKAsyOi5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydC5UYWJsZVJlcG9ydC5Db2x1bW5SZXBvcnQavAIKDENvbHVtblJlcG9ydBIOCgZjb2x1bW4YASABKAkSWwoMcmVnZXhfcmVwb3J0GAIgASgLMkAubWdtdC52MWFscGhhMS5QaWlEZXRlY3Rpb25SZXBvcnQuVGFibGVSZXBvcnQuQ29sdW1uUmVwb3J0LlJlZ2V4SACIAQESVwoKbGxtX3JlcG9ydBgDIAEoCzI+Lm1nbXQudjFhbHBoYTEuUGlpRGV0ZWN0aW9uUmVwb3J0LlRhYmxlUmVwb3J0LkNvbHVtblJlcG9ydC5MTE1IAYgBARoZCgVSZWdleBIQCghjYXRlZ29yeRgBIAEoCRorCgNMTE0SEAoIY2F0ZWdvcnkYASABKAkSEgoKY29uZmlkZW5jZRgCIAEoAkIPCg1fcmVnZXhfcmVwb3J0Qg0KC19sbG1fcmVwb3J0Km8KCUpvYlN0YXR1cxIaChZKT0JfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFgoSSk9CX1NUQVRVU19FTkFCTEVEEAESFQoRSk9CX1NUQVRVU19QQVVTRUQQAxIXChNKT0JfU1RBVFVTX0RJU0FCTEVEEAQqpwEKDkFjdGl2aXR5U3RhdHVzEh8KG0FDVElWSVRZX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUFDVElWSVRZX1NUQVRVU19TQ0hFRFVMRUQQARIbChdBQ1RJVklUWV9TVEFUVVNfU1RBUlRFRBACEhwKGEFDVElWSVRZX1NUQVRVU19DQU5DRUxFRBADEhoKFkFDVElWSVRZX1NUQVRVU19GQUlMRUQQBCqSAgoMSm9iUnVuU3RhdHVzEh4KGkpPQl9SVU5fU1RBVFVTX1VOU1BFQ0lGSUVEEAASGgoWSk9CX1JVTl9TVEFUVVNfUEVORElORxABEhoKFkpPQl9SVU5fU1RBVFVTX1JVTk5JTkcQAhIbChdKT0JfUlVOX1NUQVRVU19DT01QTEVURRADEhgKFEpPQl9SVU5fU1RBVFVTX0VSUk9SEAQSGwoXSk9CX1JVTl9TVEFUVVNfQ0FOQ0VMRUQQBRIdChlKT0JfUlVOX1NUQVRVU19URVJNSU5BVEVEEAYSGQoVSk9CX1JVTl9TVEFUVVNfRkFJTEVEEAcSHAoYSk9CX1JVTl9TVEFUVVNfVElNRURfT1VUEAgqfAoJTG9nV2luZG93EiIKHkxPR19XSU5ET1dfTk9fVElNRV9VTlNQRUNJRklFRBAAEhoKFkxPR19XSU5ET1dfRklGVEVFTl9NSU4QARIXChNMT0dfV0lORE9XX09ORV9IT1VSEAISFgoSTE9HX1dJTkRPV19PTkVfREFZEAMqdwoITG9nTGV2ZWwSGQoVTE9HX0xFVkVMX1VOU1BFQ0lGSUVEEAASEwoPTE9HX0xFVkVMX0RFQlVHEAESEgoOTE9HX0xFVkVMX0lORk8QAhISCg5MT0dfTEVWRUxfV0FSThADEhMKD0xPR19MRVZFTF9FUlJPUhAEMrAhCgpKb2JTZXJ2aWNlEk0KB0dldEpvYnMSHS5tZ210LnYxYWxwaGExLkdldEpvYnNSZXF1ZXN0Gh4ubWdtdC52MWFscGhhMS5HZXRKb2JzUmVzcG9uc2UiA5ACARJKCgZHZXRKb2ISHC5tZ210LnYxYWxwaGExLkdldEpvYlJlcXVlc3QaHS5tZ210LnYxYWxwaGExLkdldEpvYlJlc3BvbnNlIgOQAgESUAoJQ3JlYXRlSm9iEh8ubWdtdC52MWFscGhhMS5DcmVhdGVKb2JSZXF1ZXN0GiAubWdtdC52MWFscGhhMS5DcmVhdGVKb2JSZXNwb25zZSIAElAKCURlbGV0ZUpvYhIfLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUmVxdWVzdBogLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUmVzcG9uc2UiABJuChJJc0pvYk5hbWVBdmFpbGFibGUSKC5tZ210LnYxYWxwaGExLklzSm9iTmFtZUF2YWlsYWJsZVJlcXVlc3QaKS5tZ210LnYxYWxwaGExLklzSm9iTmFtZUF2YWlsYWJsZVJlc3BvbnNlIgOQAgESaAoRVXBkYXRlSm9iU2NoZWR1bGUSJy5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYlNjaGVkdWxlUmVxdWVzdBooLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iU2NoZWR1bGVSZXNwb25zZSIAEoABChlVcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uEi8ubWdtdC52MWFscGhhMS5VcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVxdWVzdBowLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iU291cmNlQ29ubmVjdGlvblJlc3BvbnNlIgASlQEKIFNldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzEjYubWdtdC52MWFscGhhMS5TZXRKb2JTb3VyY2VTcWxDb25uZWN0aW9uU3Vic2V0c1JlcXVlc3QaNy5tZ210LnYxYWxwaGExLlNldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzUmVzcG9uc2UiABKPAQoeVXBkYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uEjQubWdtdC52MWFscGhhMS5VcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXF1ZXN0GjUubWdtdC52MWFscGhhMS5VcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXNwb25zZSIAEo8BCh5EZWxldGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb24SNC5tZ210LnYxYWxwaGExLkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlcXVlc3QaNS5tZ210LnYxYWxwaGExLkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlIgASkgEKH0NyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnMSNS5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnNSZXF1ZXN0GjYubWdtdC52MWFscGhhMS5DcmVhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25zUmVzcG9uc2UiABJNCghQYXVzZUpvYhIeLm1nbXQudjFhbHBoYTEuUGF1c2VKb2JSZXF1ZXN0Gh8ubWdtdC52MWFscGhhMS5QYXVzZUpvYlJlc3BvbnNlIgASaAoQR2V0Sm9iUmVjZW50UnVucxImLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVjZW50UnVuc1JlcXVlc3QaJy5tZ210LnYxYWxwaGExLkdldEpvYlJlY2VudFJ1bnNSZXNwb25zZSIDkAIBEmIKDkdldEpvYk5leHRSdW5zEiQubWdtdC52MWFscGhhMS5HZXRKb2JOZXh0UnVuc1JlcXVlc3QaJS5tZ210LnYxYWxwaGExLkdldEpvYk5leHRSdW5zUmVzcG9uc2UiA5ACARJcCgxHZXRKb2JTdGF0dXMSIi5tZ210LnYxYWxwaGExLkdldEpvYlN0YXR1c1JlcXVlc3QaIy5tZ210LnYxYWxwaGExLkdldEpvYlN0YXR1c1Jlc3BvbnNlIgOQAgESYgoOR2V0Sm9iU3RhdHVzZXMSJC5tZ210LnYxYWxwaGExLkdldEpvYlN0YXR1c2VzUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzZXNSZXNwb25zZSIDkAIBElYKCkdldEpvYlJ1bnMSIC5tZ210LnYxYWxwaGExLkdldEpvYlJ1bnNSZXF1ZXN0GiEubWdtdC52MWFscGhhMS5HZXRKb2JSdW5zUmVzcG9uc2UiA5ACARJlCg9HZXRKb2JSdW5FdmVudHMSJS5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkV2ZW50c1JlcXVlc3QaJi5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkV2ZW50c1Jlc3BvbnNlIgOQAgESUwoJR2V0Sm9iUnVuEh8ubWdtdC52MWFscGhhMS5HZXRKb2JSdW5SZXF1ZXN0GiAubWdtdC52MWFscGhhMS5HZXRKb2JSdW5SZXNwb25zZSIDkAIBElkKDERlbGV0ZUpvYlJ1bhIiLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUnVuUmVxdWVzdBojLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iUnVuUmVzcG9uc2UiABJZCgxDcmVhdGVKb2JSdW4SIi5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJ1blJlcXVlc3QaIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJ1blJlc3BvbnNlIgASWQoMQ2FuY2VsSm9iUnVuEiIubWdtdC52MWFscGhhMS5DYW5jZWxKb2JSdW5SZXF1ZXN0GiMubWdtdC52MWFscGhhMS5DYW5jZWxKb2JSdW5SZXNwb25zZSIAEmIKD1Rlcm1pbmF0ZUpvYlJ1bhIlLm1nbXQudjFhbHBoYTEuVGVybWluYXRlSm9iUnVuUmVxdWVzdBomLm1nbXQudjFhbHBoYTEuVGVybWluYXRlSm9iUnVuUmVzcG9uc2UiABJwChNHZXRKb2JSdW5Mb2dzU3RyZWFtEikubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzU3RyZWFtUmVxdWVzdBoqLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1N0cmVhbVJlc3BvbnNlIgAwARJcCg1HZXRKb2JSdW5Mb2dzEiMubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuTG9nc1Jlc3BvbnNlIgASdAoVU2V0Sm9iV29ya2Zsb3dPcHRpb25zEisubWdtdC52MWFscGhhMS5TZXRKb2JXb3JrZmxvd09wdGlvbnNSZXF1ZXN0GiwubWdtdC52MWFscGhhMS5TZXRKb2JXb3JrZmxvd09wdGlvbnNSZXNwb25zZSIAEmgKEVNldEpvYlN5bmNPcHRpb25zEicubWdtdC52MWFscGhhMS5TZXRKb2JTeW5jT3B0aW9uc1JlcXVlc3QaKC5tZ210LnYxYWxwaGExLlNldEpvYlN5bmNPcHRpb25zUmVzcG9uc2UiABJuChNWYWxpZGF0ZUpvYk1hcHBpbmdzEikubWdtdC52MWFscGhhMS5WYWxpZGF0ZUpvYk1hcHBpbmdzUmVxdWVzdBoqLm1nbXQudjFhbHBoYTEuVmFsaWRhdGVKb2JNYXBwaW5nc1Jlc3BvbnNlIgASXwoOVmFsaWRhdGVTY2hlbWESJC5tZ210LnYxYWxwaGExLlZhbGlkYXRlU2NoZW1hUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuVmFsaWRhdGVTY2hlbWFSZXNwb25zZSIAElwKDUdldFJ1bkNvbnRleHQSIy5tZ210LnYxYWxwaGExLkdldFJ1bkNvbnRleHRSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5HZXRSdW5Db250ZXh0UmVzcG9uc2UiABJcCg1TZXRSdW5Db250ZXh0EiMubWdtdC52MWFscGhhMS5TZXRSdW5Db250ZXh0UmVxdWVzdBokLm1nbXQudjFhbHBoYTEuU2V0UnVuQ29udGV4dFJlc3BvbnNlIgASYQoOU2V0UnVuQ29udGV4dHMSJC5tZ210LnYxYWxwaGExLlNldFJ1bkNvbnRleHRzUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuU2V0UnVuQ29udGV4dHNSZXNwb25zZSIAKAESWQoLR2V0Sm9iSG9va3MSIS5tZ210LnYxYWxwaGExLkdldEpvYkhvb2tzUmVxdWVzdBoiLm1nbXQudjFhbHBoYTEuR2V0Sm9iSG9va3NSZXNwb25zZSIDkAIBElYKCkdldEpvYkhvb2sSIC5tZ210LnYxYWxwaGExLkdldEpvYkhvb2tSZXF1ZXN0GiEubWdtdC52MWFscGhhMS5HZXRKb2JIb29rUmVzcG9uc2UiA5ACARJcCg1DcmVhdGVKb2JIb29rEiMubWdtdC52MWFscGhhMS5DcmVhdGVKb2JIb29rUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iSG9va1Jlc3BvbnNlIgASXAoNRGVsZXRlSm9iSG9vaxIjLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iSG9va1JlcXVlc3QaJC5tZ210LnYxYWxwaGExLkRlbGV0ZUpvYkhvb2tSZXNwb25zZSIAEncKFklzSm9iSG9va05hbWVBdmFpbGFibGUSLC5tZ210LnYxYWxwaGExLklzSm9iSG9va05hbWVBdmFpbGFibGVSZXF1ZXN0Gi0ubWdtdC52MWFscGhhMS5Jc0pvYkhvb2tOYW1lQXZhaWxhYmxlUmVzcG9uc2UiABJcCg1VcGRhdGVKb2JIb29rEiMubWdtdC52MWFscGhhMS5VcGRhdGVKb2JIb29rUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iSG9va1Jlc3BvbnNlIgASaAoRU2V0Sm9iSG9va0VuYWJsZWQSJy5tZ210LnYxYWxwaGExLlNldEpvYkhvb2tFbmFibGVkUmVxdWVzdBooLm1nbXQudjFhbHBoYTEuU2V0Sm9iSG9va0VuYWJsZWRSZXNwb25zZSIAEoMBChlHZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nEi8ubWdtdC52MWFscGhhMS5HZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVxdWVzdBowLm1nbXQudjFhbHBoYTEuR2V0QWN0aXZlSm9iSG9va3NCeVRpbWluZ1Jlc3BvbnNlIgOQAgESdwoVR2V0UGlpRGV0ZWN0aW9uUmVwb3J0EisubWdtdC52MWFscGhhMS5HZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXF1ZXN0GiwubWdtdC52MWFscGhhMS5HZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXNwb25zZSIDkAIBQsQBChFjb20ubWdtdC52MWFscGhhMUIISm9iUHJvdG9QAVpQZ2l0aHViLmNvbS9udWNsZXVzY2xvdWQvbmVvc3luYy9iYWNrZW5kL2dlbi9nby9wcm90b3MvbWdtdC92MWFscGhhMTttZ210djFhbHBoYTGiAgNNWFiqAg1NZ210LlYxYWxwaGExygINTWdtdFxWMWFscGhhMeICGU1nbXRcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAg5NZ210OjpWMWFscGhhMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp, file_mgmt_v1alpha1_connection_data, file_mgmt_v1alpha1_transformer]);
/**
* @generated from message mgmt.v1alpha1.GetJobsRequest
@@ -2064,6 +2064,21 @@ export const JobTypeConfigSchema: GenMessage = /*@__PURE__*/
* @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync
*/
export type JobTypeConfig_JobTypeSync = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync"> & {
+ /**
+ * Specify job-wide schema change strategies that will be used to map data from the source to the destination.
+ * This acts as the default configuration for all schemas and tables unless overridden by a schema mapping at a lower level.
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange schema_change = 1;
+ */
+ schemaChange?: JobTypeConfig_JobTypeSync_SchemaChange;
+
+ /**
+ * Specify schema mappings that will be used to map data from the source to the destination
+ * This replaces the mappings field and is used to configure column transformers as well as re-wire destination schemas and tables.
+ *
+ * @generated from field: repeated mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping schema_mappings = 2;
+ */
+ schemaMappings: JobTypeConfig_JobTypeSync_SchemaMapping[];
};
/**
@@ -2073,6 +2088,712 @@ export type JobTypeConfig_JobTypeSync = Message<"mgmt.v1alpha1.JobTypeConfig.Job
export const JobTypeConfig_JobTypeSyncSchema: GenMessage = /*@__PURE__*/
messageDesc(file_mgmt_v1alpha1_job, 43, 0);
+/**
+ * Configure how schemas, tables, and columns are handled during a job run.
+ * If anything is not defined, a system-defined fallback will be implemented. Further information can be found in the documentation.
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange
+ */
+export type JobTypeConfig_JobTypeSync_SchemaChange = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange"> & {
+ /**
+ * Configure how schemas are handled during a job run
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy schema_strategy = 1;
+ */
+ schemaStrategy?: JobTypeConfig_JobTypeSync_SchemaStrategy;
+
+ /**
+ * Configure how tables are handled during a job run
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy table_strategy = 2;
+ */
+ tableStrategy?: JobTypeConfig_JobTypeSync_TableStrategy;
+
+ /**
+ * Configure how columns are handled during a job run
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy column_strategy = 3;
+ */
+ columnStrategy?: JobTypeConfig_JobTypeSync_ColumnStrategy;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChange.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaChangeSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaChangeSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 0);
+
+/**
+ * The strategy used to configure how schemas are handled during a job run
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy
+ */
+export type JobTypeConfig_JobTypeSync_SchemaStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.strategy
+ */
+ strategy: {
+ /**
+ * When this strategy is configured, all schemas are mapped
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas map_all_schemas = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas;
+ case: "mapAllSchemas";
+ } | {
+ /**
+ * When this strategy is configured, only the schemas that are defined are mapped
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas map_defined_schemas = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas;
+ case: "mapDefinedSchemas";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 1);
+
+/**
+ * When this strategy is configured, all schemas are mapped
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas
+ */
+export type JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemasSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemasSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 1, 0);
+
+/**
+ * When this strategy is configured, only the schemas that are defined are mapped
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas
+ */
+export type JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemasSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemasSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 1, 1);
+
+/**
+ * The strategy used to configure how tables are handled during a job run
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy
+ */
+export type JobTypeConfig_JobTypeSync_TableStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.strategy
+ */
+ strategy: {
+ /**
+ * When this strategy is configured, all tables are mapped
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables map_all_tables = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables;
+ case: "mapAllTables";
+ } | {
+ /**
+ * When this strategy is configured, only the tables that are defined are mapped
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables map_defined_tables = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables;
+ case: "mapDefinedTables";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_TableStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_TableStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 2);
+
+/**
+ * When this strategy is configured, all tables are mapped
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables
+ */
+export type JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables.
+ * Use `create(JobTypeConfig_JobTypeSync_TableStrategy_MapAllTablesSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_TableStrategy_MapAllTablesSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 2, 0);
+
+/**
+ * When this strategy is configured, only the tables that are defined are mapped
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables
+ */
+export type JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables.
+ * Use `create(JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTablesSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTablesSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 2, 1);
+
+/**
+ * The strategy used to configure how columns are handled during a job run
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.strategy
+ */
+ strategy: {
+ /**
+ * 1. Map all columns + user-defined sub-strategies for each mismatch scenario
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns map_all_columns = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns;
+ case: "mapAllColumns";
+ } | {
+ /**
+ * 2. Only map user-defined columns + sub-strategies for mismatch scenarios
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns map_defined_columns = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns;
+ case: "mapDefinedColumns";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3);
+
+/**
+ * -------------------------------------------------------------
+ * 1. MapAllColumns
+ * -------------------------------------------------------------
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns"> & {
+ /**
+ * When a column is present in source but not mapped
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy column_in_source_not_mapped = 1;
+ */
+ columnInSourceNotMapped?: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy;
+
+ /**
+ * When a column is mapped but not in source
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy column_mapped_not_in_source = 2;
+ */
+ columnMappedNotInSource?: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy;
+
+ /**
+ * When a column is in source + mapped, but missing in destination
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy column_in_source_mapped_not_in_destination = 3;
+ */
+ columnInSourceMappedNotInDestination?: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy;
+
+ /**
+ * When a column is in the destination but not in source
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy column_in_destination_no_longer_in_source = 4;
+ */
+ columnInDestinationNoLongerInSource?: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumnsSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumnsSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 0);
+
+/**
+ * -------------------------------------------------------------
+ * 2. MapDefinedColumns
+ * -------------------------------------------------------------
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns"> & {
+ /**
+ * Mapped but missing in source
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy column_mapped_not_in_source = 1;
+ */
+ columnMappedNotInSource?: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy;
+
+ /**
+ * In source + mapped, but missing in destination
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy column_in_source_mapped_not_in_destination = 2;
+ */
+ columnInSourceMappedNotInDestination?: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumnsSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumnsSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 1);
+
+/**
+ * a) Column present in source, not mapped
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.strategy
+ */
+ strategy: {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough passthrough = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough;
+ case: "passthrough";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap auto_map = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap;
+ case: "autoMap";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt halt = 3;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt;
+ case: "halt";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop drop = 4;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop;
+ case: "drop";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 2);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_PassthroughSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_PassthroughSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 2, 0);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMapSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMapSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 2, 1);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_HaltSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_HaltSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 2, 2);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_DropSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_DropSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 2, 3);
+
+/**
+ * b) Column mapped, but not in source
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.strategy
+ */
+ strategy: {
+ /**
+ * e.g. treat as NULL or skip
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue continue = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue;
+ case: "continue";
+ } | {
+ /**
+ * fail the job
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt halt = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt;
+ case: "halt";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 3);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Continue.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_ContinueSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_ContinueSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 3, 0);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_HaltSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_HaltSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 3, 1);
+
+/**
+ * c) Column in source + mapped, but missing in destination
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.strategy
+ */
+ strategy: {
+ /**
+ * In your version, "Continue" = "if init_schema => create column, else skip"
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue continue = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue;
+ case: "continue";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop drop = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop;
+ case: "drop";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt halt = 3;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt;
+ case: "halt";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 4);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Continue.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_ContinueSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_ContinueSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 4, 0);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_DropSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_DropSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 4, 1);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_HaltSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_HaltSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 4, 2);
+
+/**
+ * d) Column in destination, but not in source
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy"> & {
+ /**
+ * @generated from oneof mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.strategy
+ */
+ strategy: {
+ /**
+ * "Continue" => "if init_schema => drop column, else leave it alone"
+ *
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue continue = 1;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue;
+ case: "continue";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt halt = 2;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt;
+ case: "halt";
+ } | {
+ /**
+ * @generated from field: mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap auto_map = 3;
+ */
+ value: JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap;
+ case: "autoMap";
+ } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategySchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategySchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 5);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Continue.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_ContinueSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_ContinueSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 5, 0);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_HaltSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_HaltSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 5, 1);
+
+/**
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap
+ */
+export type JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap"> & {
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap.
+ * Use `create(JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMapSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMapSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 3, 5, 2);
+
+/**
+ * Configuration for a specific schema mapping
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping
+ */
+export type JobTypeConfig_JobTypeSync_SchemaMapping = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping"> & {
+ /**
+ * The database schema this mapping belongs to
+ *
+ * @generated from field: string schema = 1;
+ */
+ schema: string;
+
+ /**
+ * Optionally specify a destination schema that this mapping will go to
+ *
+ * @generated from field: optional string destination_schema = 2;
+ */
+ destinationSchema?: string;
+
+ /**
+ * The list of table mappings that will be used to map data from the source to the destination
+ *
+ * @generated from field: repeated mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping table_mappings = 3;
+ */
+ tableMappings: JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping[];
+
+ /**
+ * Optionally specify a table strategy. This will override the global table strategy for this schema
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy table_strategy = 4;
+ */
+ tableStrategy?: JobTypeConfig_JobTypeSync_TableStrategy;
+
+ /**
+ * Optionally specify a column strategy. This will override the global column strategy for this schema
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy column_strategy = 5;
+ */
+ columnStrategy?: JobTypeConfig_JobTypeSync_ColumnStrategy;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaMappingSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaMappingSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 4);
+
+/**
+ * Configuration for a specific table mapping in a schema
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping
+ */
+export type JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping"> & {
+ /**
+ * The database table this mapping belongs to
+ *
+ * @generated from field: string table = 1;
+ */
+ table: string;
+
+ /**
+ * Optionally specify a destination table that this mapping will go to
+ *
+ * @generated from field: optional string destination_table = 2;
+ */
+ destinationTable?: string;
+
+ /**
+ * The list of column mappings that will be used to map data from the source to the destination
+ *
+ * @generated from field: repeated mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping column_mappings = 3;
+ */
+ columnMappings: JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping[];
+
+ /**
+ * Optionally specify a column strategy. This will override the global column strategy for this table
+ *
+ * @generated from field: optional mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy column_strategy = 4;
+ */
+ columnStrategy?: JobTypeConfig_JobTypeSync_ColumnStrategy;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaMapping_TableMappingSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaMapping_TableMappingSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 4, 0);
+
+/**
+ * Configuration for a specific column mapping in a table
+ *
+ * @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping
+ */
+export type JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping = Message<"mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping"> & {
+ /**
+ * The column this mapping belongs to
+ *
+ * @generated from field: string column = 1;
+ */
+ column: string;
+
+ /**
+ * The transformer configuration that will be applied to each cell in the column
+ *
+ * @generated from field: optional mgmt.v1alpha1.TransformerConfig transformer = 2;
+ */
+ transformer?: TransformerConfig;
+};
+
+/**
+ * Describes the message mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping.
+ * Use `create(JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMappingSchema)` to create a new message.
+ */
+export const JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMappingSchema: GenMessage = /*@__PURE__*/
+ messageDesc(file_mgmt_v1alpha1_job, 43, 0, 4, 0, 0);
+
/**
* @generated from message mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect
*/
diff --git a/internal/benthos/benthos-builder/builders/benthos-builder_test.go b/internal/benthos/benthos-builder/builders/benthos-builder_test.go
index bd8fdf7f17..2cb7ae5a73 100644
--- a/internal/benthos/benthos-builder/builders/benthos-builder_test.go
+++ b/internal/benthos/benthos-builder/builders/benthos-builder_test.go
@@ -37,29 +37,38 @@ func Test_ProcessorConfigEmpty(t *testing.T) {
tableMappings := map[string]*tableMapping{
"public.users": {Schema: "public",
Table: "users",
- Mappings: []*mgmtv1alpha1.JobMapping{
+ Mappings: []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "id",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "id",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{},
+ },
},
},
},
{
- Schema: "public",
- Table: "users",
- Column: "name",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "name",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{},
+ },
},
},
},
},
- }}
+ },
+ }
groupedSchemas := map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
"public.users": {
@@ -125,33 +134,42 @@ func Test_ProcessorConfigEmptyJavascript(t *testing.T) {
tableMappings := map[string]*tableMapping{
"public.users": {Schema: "public",
Table: "users",
- Mappings: []*mgmtv1alpha1.JobMapping{
+ Mappings: []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "id",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
- PassthroughConfig: &mgmtv1alpha1.Passthrough{},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "id",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
+ PassthroughConfig: &mgmtv1alpha1.Passthrough{},
+ },
},
},
},
},
{
- Schema: "public",
- Table: "users",
- Column: "name",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_TransformJavascriptConfig{
- TransformJavascriptConfig: &mgmtv1alpha1.TransformJavascript{Code: ""},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "name",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_TransformJavascriptConfig{
+ TransformJavascriptConfig: &mgmtv1alpha1.TransformJavascript{Code: ""},
+ },
},
},
},
},
},
- }}
+ },
+ }
groupedSchemas := map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
"public.users": {
@@ -212,70 +230,6 @@ func Test_ProcessorConfigEmptyJavascript(t *testing.T) {
require.Empty(t, res[0].Config.StreamConfig.Pipeline.Processors)
}
-func TestShouldHaltOnSchemaAddition(t *testing.T) {
- newCols, ok := shouldHaltOnSchemaAddition(
- map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
- "public.users": {
- "id": &sqlmanager_shared.DatabaseSchemaRow{},
- "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
- },
- },
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id"},
- {Schema: "public", Table: "users", Column: "created_by"},
- },
- )
- require.False(t, ok, "job mappings are valid set of database schemas")
- require.Empty(t, newCols)
-
- newCols, ok = shouldHaltOnSchemaAddition(
- map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
- "public.users": {
- "id": &sqlmanager_shared.DatabaseSchemaRow{},
- "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
- },
- "neosync_api.accounts": {
- "id": &sqlmanager_shared.DatabaseSchemaRow{},
- "name": &sqlmanager_shared.DatabaseSchemaRow{},
- },
- },
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id"},
- {Schema: "public", Table: "users", Column: "created_by"},
- },
- )
- require.False(t, ok, "valid subset of job mappings")
-
- newCols, ok = shouldHaltOnSchemaAddition(
- map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
- "public.users": {
- "id": &sqlmanager_shared.DatabaseSchemaRow{},
- "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
- },
- },
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id"},
- },
- )
- require.True(t, ok, "job mappings are missing table column")
- require.Equal(t, []string{"public.users.created_by"}, newCols)
-
- newCols, ok = shouldHaltOnSchemaAddition(
- map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
- "public.users": {
- "id": &sqlmanager_shared.DatabaseSchemaRow{},
- "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
- },
- },
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id"},
- {Schema: "public", Table: "users", Column: "updated_by"},
- },
- )
- require.True(t, ok, "job mappings have same column count, but missing specific column")
- require.Equal(t, []string{"public.users.created_by"}, newCols)
-}
-
func Test_buildProcessorConfigsMutation(t *testing.T) {
mockTransformerClient := mgmtv1alpha1connect.NewMockTransformersServiceClient(t)
@@ -283,47 +237,47 @@ func Test_buildProcessorConfigsMutation(t *testing.T) {
schemaTable := sqlmanager_shared.SchemaTable{Schema: "public", Table: "users"}
runconfig := rc.NewRunConfig(schemaTable.String(), schemaTable, rc.RunTypeInsert, []string{}, nil, []string{}, []string{}, []*rc.DependsOn{}, false)
- output, err := buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
+ output, err := buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
require.Empty(t, output)
- output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
+ output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
require.Empty(t, output)
runconfig = rc.NewRunConfig(schemaTable.String(), schemaTable, rc.RunTypeInsert, []string{}, nil, []string{}, []string{"id"}, []*rc.DependsOn{}, false)
- output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id"},
+ output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "id"}},
}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
require.Empty(t, output)
- output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{}},
+ output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{}}},
}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
require.Empty(t, output)
- output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: &mgmtv1alpha1.TransformerConfig{
+ output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: &mgmtv1alpha1.TransformerConfig{
Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{},
- }}},
+ }}}},
}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
require.Empty(t, output)
runconfig = rc.NewRunConfig(schemaTable.String(), schemaTable, rc.RunTypeInsert, []string{}, nil, []string{}, []string{"id", "name"}, []*rc.DependsOn{}, false)
- output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: &mgmtv1alpha1.TransformerConfig{
+ output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: &mgmtv1alpha1.TransformerConfig{
Config: &mgmtv1alpha1.TransformerConfig_Nullconfig{
Nullconfig: &mgmtv1alpha1.Null{},
},
- }}},
- {Schema: "public", Table: "users", Column: "name", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: &mgmtv1alpha1.TransformerConfig{
+ }}}},
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "name", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: &mgmtv1alpha1.TransformerConfig{
Config: &mgmtv1alpha1.TransformerConfig_Nullconfig{
Nullconfig: &mgmtv1alpha1.Null{},
},
- }}},
+ }}}},
}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
@@ -358,8 +312,9 @@ func Test_buildProcessorConfigsMutation(t *testing.T) {
}
runconfig = rc.NewRunConfig(schemaTable.String(), schemaTable, rc.RunTypeInsert, []string{"id"}, nil, []string{"email"}, []string{"email"}, []*rc.DependsOn{}, false)
- output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "email", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config}}}, groupedSchemas, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
+ output, err = buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "email", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config}}},
+ }, groupedSchemas, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.Nil(t, err)
require.Equal(t, `root."email" = transform_email(value:this."email",preserve_length:false,preserve_domain:true,excluded_domains:[],max_length:40,email_type:"uuidv4",invalid_email_action:"reject")`, *output[0].Mutation)
@@ -407,8 +362,9 @@ func Test_buildProcessorConfigsJavascriptEmpty(t *testing.T) {
schemaTable := sqlmanager_shared.SchemaTable{Schema: "public", Table: "users"}
runconfig := rc.NewRunConfig(schemaTable.String(), schemaTable, rc.RunTypeInsert, []string{"id"}, nil, []string{"id"}, []string{"id"}, []*rc.DependsOn{}, false)
- resp, err := buildProcessorConfigs(ctx, mockTransformerClient, []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config}}}, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
+ resp, err := buildProcessorConfigs(ctx, mockTransformerClient, []*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "id", Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config}}},
+ }, map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId, runconfig, nil, []string{})
require.NoError(t, err)
require.Empty(t, resp)
@@ -473,13 +429,13 @@ func Test_convertUserDefinedFunctionConfig(t *testing.T) {
func Test_buildPlainColumns(t *testing.T) {
require.Empty(t, buildPlainColumns(nil))
- require.Empty(t, buildPlainColumns([]*mgmtv1alpha1.JobMapping{}))
+ require.Empty(t, buildPlainColumns([]*shared.JobTransformationMapping{}))
require.Equal(
t,
- buildPlainColumns([]*mgmtv1alpha1.JobMapping{
- {Column: "foo"},
- {Column: "bar"},
- {Column: "baz"},
+ buildPlainColumns([]*shared.JobTransformationMapping{
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "foo"}},
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "bar"}},
+ {DestinationSchema: "public", DestinationTable: "users", JobMapping: &mgmtv1alpha1.JobMapping{Schema: "public", Table: "users", Column: "baz"}},
}),
[]string{"foo", "bar", "baz"},
)
@@ -553,11 +509,18 @@ func Test_buildBenthosS3Credentials(t *testing.T) {
func Test_computeMutationFunction_null(t *testing.T) {
val, err := computeMutationFunction(
- &mgmtv1alpha1.JobMapping{
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{Config: &mgmtv1alpha1.TransformerConfig_Nullconfig{}},
+ &shared.JobTransformationMapping{
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{Config: &mgmtv1alpha1.TransformerConfig_Nullconfig{}},
+ },
},
- }, &sqlmanager_shared.DatabaseSchemaRow{}, false)
+ },
+ &sqlmanager_shared.DatabaseSchemaRow{},
+ false,
+ )
require.NoError(t, err)
require.Equal(t, val, "null")
}
@@ -973,10 +936,14 @@ func Test_computeMutationFunction_Validate_Bloblang_Output(t *testing.T) {
for _, transformer := range transformers {
t.Run(fmt.Sprintf("%s_%T_lint", t.Name(), transformer.Config.Config), func(t *testing.T) {
val, err := computeMutationFunction(
- &mgmtv1alpha1.JobMapping{
- Column: "email",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: transformer.Config,
+ &shared.JobTransformationMapping{
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Column: "email",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: transformer.Config,
+ },
},
}, emailColInfo, false)
require.NoError(t, err)
@@ -1132,10 +1099,14 @@ func Test_computeMutationFunction_Validate_Bloblang_Output_EmptyConfigs(t *testi
for _, transformer := range transformers {
t.Run(fmt.Sprintf("%s_%T_lint", t.Name(), transformer.Config.Config), func(t *testing.T) {
val, err := computeMutationFunction(
- &mgmtv1alpha1.JobMapping{
- Column: "email",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: transformer.Config,
+ &shared.JobTransformationMapping{
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Column: "email",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: transformer.Config,
+ },
},
}, emailColInfo, false)
require.NoError(t, err)
@@ -1149,17 +1120,21 @@ func Test_computeMutationFunction_Validate_Bloblang_Output_EmptyConfigs(t *testi
func Test_computeMutationFunction_handles_Db_Maxlen(t *testing.T) {
type testcase struct {
- jm *mgmtv1alpha1.JobMapping
+ jm *shared.JobTransformationMapping
ci *sqlmanager_shared.DatabaseSchemaRow
expected string
}
- jm := &mgmtv1alpha1.JobMapping{
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{
- Min: gotypeutil.ToPtr(int64(2)),
- Max: gotypeutil.ToPtr(int64(7)),
+ jm := &shared.JobTransformationMapping{
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{
+ Min: gotypeutil.ToPtr(int64(2)),
+ Max: gotypeutil.ToPtr(int64(7)),
+ },
},
},
},
@@ -1230,11 +1205,15 @@ func Test_computeMutationFunction_handles_Db_Maxlen(t *testing.T) {
}
func Test_buildBranchCacheConfigs_null(t *testing.T) {
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "user_id",
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "user_id",
+ },
},
}
@@ -1251,17 +1230,51 @@ func Test_buildBranchCacheConfigs_null(t *testing.T) {
require.Len(t, resp, 0)
}
+func Test_buildBranchCacheConfigs_missing_redis(t *testing.T) {
+ cols := []*shared.JobTransformationMapping{
+ {
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "user_id",
+ },
+ },
+ }
+
+ constraints := map[string][]*bb_internal.ReferenceKey{
+ "user_id": {
+ {
+ Table: "public.orders",
+ Column: "buyer_id",
+ },
+ },
+ }
+
+ resp := buildBranchCacheConfigs(cols, constraints, mockJobId, mockRunId)
+ require.Len(t, resp, 1)
+}
+
func Test_buildBranchCacheConfigs_success(t *testing.T) {
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "user_id",
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "user_id",
+ },
},
{
- Schema: "public",
- Table: "users",
- Column: "name",
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "name",
+ },
},
}
@@ -1281,11 +1294,15 @@ func Test_buildBranchCacheConfigs_success(t *testing.T) {
}
func Test_buildBranchCacheConfigs_self_referencing(t *testing.T) {
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "user_id",
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "user_id",
+ },
},
}
diff --git a/internal/benthos/benthos-builder/builders/dynamodb.go b/internal/benthos/benthos-builder/builders/dynamodb.go
index 431c7f1813..500e9c3619 100644
--- a/internal/benthos/benthos-builder/builders/dynamodb.go
+++ b/internal/benthos/benthos-builder/builders/dynamodb.go
@@ -11,6 +11,7 @@ import (
"github.com/nucleuscloud/neosync/backend/pkg/metrics"
sqlmanager_shared "github.com/nucleuscloud/neosync/backend/pkg/sqlmanager/shared"
awsmanager "github.com/nucleuscloud/neosync/internal/aws"
+ jobmapping_builder_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/shared"
bb_internal "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/internal"
"github.com/nucleuscloud/neosync/internal/runconfigs"
neosync_benthos "github.com/nucleuscloud/neosync/worker/pkg/benthos"
@@ -51,7 +52,7 @@ func (b *dyanmodbSyncBuilder) BuildSourceConfigs(
dynamoJobSourceOpts := job.GetSource().GetOptions().GetDynamodb()
tableOptsMap := toDynamoDbSourceTableOptionMap(dynamoJobSourceOpts.GetTables())
- groupedMappings := groupMappingsByTable(job.GetMappings())
+ groupedMappings := groupMappingsByTable(jobmapping_builder_shared.JobMappingsFromLegacyMappings(job.GetMappings()))
benthosConfigs := []*bb_internal.BenthosSourceConfig{}
// todo: may need to filter here based on the destination config mappings if there is no source->destination table map
diff --git a/internal/benthos/benthos-builder/builders/generate.go b/internal/benthos/benthos-builder/builders/generate.go
index 0d97e04952..6587c00a91 100644
--- a/internal/benthos/benthos-builder/builders/generate.go
+++ b/internal/benthos/benthos-builder/builders/generate.go
@@ -8,6 +8,7 @@ import (
"github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1/mgmtv1alpha1connect"
"github.com/nucleuscloud/neosync/backend/pkg/metrics"
"github.com/nucleuscloud/neosync/backend/pkg/sqlmanager"
+ jobmapping_builder_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/shared"
bb_internal "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/internal"
bb_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/shared"
connectionmanager "github.com/nucleuscloud/neosync/internal/connection-manager"
@@ -68,7 +69,7 @@ func (b *generateBuilder) BuildSourceConfigs(
defer db.Db().Close()
b.driver = db.Driver()
- groupedMappings := groupMappingsByTable(job.Mappings)
+ groupedMappings := groupMappingsByTable(jobmapping_builder_shared.JobMappingsFromLegacyMappings(job.GetMappings()))
groupedTableMapping := getTableMappingsMap(groupedMappings)
colTransformerMap := getColumnTransformerMap(groupedTableMapping)
sourceTableOpts := groupGenerateSourceOptionsByTable(sourceOptions.Schemas)
diff --git a/internal/benthos/benthos-builder/builders/jobmapping-builder/settings/cascade-settings.go b/internal/benthos/benthos-builder/builders/jobmapping-builder/settings/cascade-settings.go
new file mode 100644
index 0000000000..4c9f68e930
--- /dev/null
+++ b/internal/benthos/benthos-builder/builders/jobmapping-builder/settings/cascade-settings.go
@@ -0,0 +1,362 @@
+package cascade_settings
+
+import (
+ "iter"
+ "log/slog"
+ "maps"
+ "slices"
+
+ mgmtv1alpha1 "github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1"
+)
+
+type CascadeSchemaSettings struct {
+ config *mgmtv1alpha1.JobTypeConfig_JobTypeSync
+ logger *slog.Logger
+}
+
+func NewCascadeSchemaSettings(config *mgmtv1alpha1.JobTypeConfig_JobTypeSync, logger *slog.Logger) *CascadeSchemaSettings {
+ return &CascadeSchemaSettings{
+ config: config,
+ logger: logger,
+ }
+}
+
+func (c *CascadeSchemaSettings) GetSchemaStrategy() *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy {
+ return getSchemaStrategyOrDefault(
+ c.logger,
+ c.getGlobalSchemaStrategy(),
+ )
+}
+
+func (c *CascadeSchemaSettings) getGlobalSchemaStrategy() *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy {
+ return c.config.GetSchemaChange().GetSchemaStrategy()
+}
+
+func getSchemaStrategyOrDefault(
+ logger *slog.Logger,
+ strategies ...*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy,
+) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy {
+ var strategy *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy
+ for _, s := range strategies {
+ if s != nil {
+ strategy = s
+ break
+ }
+ }
+ if strategy == nil {
+ return getDefaultSchemaStrategy(logger)
+ }
+
+ switch s := strategy.GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_:
+ if s.MapAllSchemas == nil {
+ strategy.Strategy = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_{
+ MapAllSchemas: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas{},
+ }
+ }
+ return strategy
+ default:
+ return getDefaultSchemaStrategy(logger)
+ }
+}
+
+func getDefaultSchemaStrategy(logger *slog.Logger) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy {
+ logger.Debug("no schema strategy defined, using default MapAllSchemas strategy")
+ return &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_{
+ MapAllSchemas: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas{},
+ },
+ }
+}
+
+func (c *CascadeSchemaSettings) GetTableStrategy(schemaName string) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy {
+ return getTableStrategyOrDefault(
+ c.logger,
+ c.getSchemaLevelTableStrategy(schemaName),
+ c.getGlobalTableStrategy(),
+ )
+}
+
+func (c *CascadeSchemaSettings) getGlobalTableStrategy() *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy {
+ return c.config.GetSchemaChange().GetTableStrategy()
+}
+
+func getTableStrategyOrDefault(
+ logger *slog.Logger,
+ strategies ...*mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy,
+) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy {
+ var strategy *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy
+ for _, s := range strategies {
+ if s != nil {
+ strategy = s
+ break
+ }
+ }
+ if strategy == nil {
+ return getDefaultTableStrategy(logger)
+ }
+
+ switch s := strategy.GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_:
+ if s.MapAllTables == nil {
+ strategy.Strategy = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_{
+ MapAllTables: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables{},
+ }
+ }
+ return strategy
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_:
+ if s.MapDefinedTables == nil {
+ strategy.Strategy = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_{
+ MapDefinedTables: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables{},
+ }
+ }
+ return strategy
+ default:
+ return getDefaultTableStrategy(logger)
+ }
+}
+
+func getDefaultTableStrategy(logger *slog.Logger) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy {
+ logger.Debug("no table strategy defined, using default MapAllTables strategy")
+ return &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_{
+ MapAllTables: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables{},
+ },
+ }
+}
+
+func (c *CascadeSchemaSettings) getSchemaLevelTableStrategy(schemaName string) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy {
+ for _, schemaMapping := range c.config.GetSchemaMappings() {
+ if schemaMapping.GetSchema() == schemaName {
+ return schemaMapping.GetTableStrategy()
+ }
+ }
+ return nil
+}
+
+func (c *CascadeSchemaSettings) GetColumnStrategy(schemaName, tableName string) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy {
+ return getColumnStrategyOrDefault(
+ c.getTablelevelColumnStrategy(schemaName, tableName),
+ c.getSchemaLevelColumnStrategy(schemaName),
+ c.getGlobalColumnStrategy(),
+ )
+}
+
+func getColumnStrategyOrDefault(
+ strategies ...*mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy,
+) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy {
+ var strategy *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy
+ for _, s := range strategies {
+ if s != nil {
+ strategy = s
+ break
+ }
+ }
+ if strategy == nil {
+ return getDefaultColumnStrategy()
+ }
+
+ switch s := strategy.GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_:
+ mapAll := s.MapAllColumns
+ if mapAll == nil {
+ mapAll = getDefaultMapAllColumnsStrategy()
+ }
+
+ // Get default settings to merge with
+ defaultStrat := getDefaultMapAllColumnsStrategy()
+
+ // Merge with defaults for any undefined settings
+ if mapAll.ColumnInSourceNotMapped == nil {
+ mapAll.ColumnInSourceNotMapped = defaultStrat.ColumnInSourceNotMapped
+ } else {
+ switch start := mapAll.GetColumnInSourceNotMapped().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_:
+ if start.AutoMap == nil {
+ start.AutoMap = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap{}
+ }
+ mapAll.ColumnInSourceNotMapped.Strategy = start
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_:
+ if start.Drop == nil {
+ start.Drop = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop{}
+ }
+ mapAll.ColumnInSourceNotMapped.Strategy = start
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_:
+ if start.Passthrough == nil {
+ start.Passthrough = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough{}
+ }
+ mapAll.ColumnInSourceNotMapped.Strategy = start
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_:
+ if start.Halt == nil {
+ start.Halt = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt{}
+ }
+ mapAll.ColumnInSourceNotMapped.Strategy = start
+ default:
+ mapAll.ColumnInSourceNotMapped = defaultStrat.ColumnInSourceNotMapped
+ }
+ }
+
+ if mapAll.ColumnMappedNotInSource == nil {
+ mapAll.ColumnMappedNotInSource = defaultStrat.ColumnMappedNotInSource
+ } else {
+ switch start := mapAll.GetColumnMappedNotInSource().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_:
+ if start.Continue == nil {
+ start.Continue = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue{}
+ }
+ mapAll.ColumnMappedNotInSource.Strategy = start
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_:
+ if start.Halt == nil {
+ start.Halt = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt{}
+ }
+ mapAll.ColumnMappedNotInSource.Strategy = start
+ default:
+ mapAll.ColumnMappedNotInSource = defaultStrat.ColumnMappedNotInSource
+ }
+ }
+
+ if mapAll.ColumnInSourceMappedNotInDestination == nil {
+ mapAll.ColumnInSourceMappedNotInDestination = defaultStrat.ColumnInSourceMappedNotInDestination
+ } else {
+ switch start := mapAll.GetColumnInSourceMappedNotInDestination().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_:
+ if start.Drop == nil {
+ start.Drop = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop{}
+ }
+ mapAll.ColumnInSourceMappedNotInDestination.Strategy = start
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_:
+ if start.Halt == nil {
+ start.Halt = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt{}
+ }
+ mapAll.ColumnInSourceMappedNotInDestination.Strategy = start
+ default:
+ mapAll.ColumnInSourceMappedNotInDestination = defaultStrat.ColumnInSourceMappedNotInDestination
+ }
+ }
+
+ if mapAll.ColumnInDestinationNoLongerInSource == nil {
+ mapAll.ColumnInDestinationNoLongerInSource = defaultStrat.ColumnInDestinationNoLongerInSource
+ } else {
+ switch start := mapAll.GetColumnInDestinationNoLongerInSource().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_:
+ if start.AutoMap == nil {
+ start.AutoMap = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap{}
+ }
+ mapAll.ColumnInDestinationNoLongerInSource.Strategy = start
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_:
+ if start.Continue == nil {
+ start.Continue = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue{}
+ }
+ mapAll.ColumnInDestinationNoLongerInSource.Strategy = start
+ default:
+ mapAll.ColumnInDestinationNoLongerInSource = defaultStrat.ColumnInDestinationNoLongerInSource
+ }
+ }
+
+ return &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_{
+ MapAllColumns: mapAll,
+ },
+ }
+ default:
+ return getDefaultColumnStrategy()
+ }
+}
+
+func (c *CascadeSchemaSettings) getTablelevelColumnStrategy(
+ schemaName, tableName string,
+) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy {
+ for _, schemaMapping := range c.config.GetSchemaMappings() {
+ if schemaMapping.GetSchema() == schemaName {
+ for _, tableMapping := range schemaMapping.GetTableMappings() {
+ if tableMapping.GetTable() == tableName {
+ return tableMapping.GetColumnStrategy()
+ }
+ }
+ break
+ }
+ }
+ return nil
+}
+
+func (c *CascadeSchemaSettings) getSchemaLevelColumnStrategy(schemaName string) *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy {
+ for _, schemaMapping := range c.config.GetSchemaMappings() {
+ if schemaMapping.GetSchema() == schemaName {
+ if cs := schemaMapping.GetColumnStrategy(); cs != nil {
+ return cs
+ }
+ }
+ }
+ return nil
+}
+
+func (c *CascadeSchemaSettings) getGlobalColumnStrategy() *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy {
+ return c.config.GetSchemaChange().GetColumnStrategy()
+}
+
+func getDefaultColumnStrategy() *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy {
+ return &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_{
+ MapAllColumns: getDefaultMapAllColumnsStrategy(),
+ },
+ }
+}
+
+func getDefaultMapAllColumnsStrategy() *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns {
+ return &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns{
+ ColumnInSourceNotMapped: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_{
+ Passthrough: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough{},
+ },
+ },
+ ColumnMappedNotInSource: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_{},
+ },
+ ColumnInSourceMappedNotInDestination: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_{},
+ },
+ ColumnInDestinationNoLongerInSource: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_{},
+ },
+ }
+}
+
+func (c *CascadeSchemaSettings) GetColumnTransformerConfigByTable(
+ schemaName, tableName string,
+) iter.Seq2[string, *mgmtv1alpha1.TransformerConfig] {
+ return func(yield func(string, *mgmtv1alpha1.TransformerConfig) bool) {
+ for _, schemaMapping := range c.config.GetSchemaMappings() {
+ if schemaMapping.GetSchema() == schemaName {
+ for _, tableMapping := range schemaMapping.GetTableMappings() {
+ if tableMapping.GetTable() == tableName {
+ for _, columnMapping := range tableMapping.GetColumnMappings() {
+ if !yield(columnMapping.GetColumn(), columnMapping.GetTransformer()) {
+ return
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+func (c *CascadeSchemaSettings) GetDefinedSchemas() []string {
+ output := map[string]bool{}
+ for _, schemaMapping := range c.config.GetSchemaMappings() {
+ output[schemaMapping.GetSchema()] = true
+ }
+ return slices.Collect(maps.Keys(output))
+}
+
+func (c *CascadeSchemaSettings) GetDefinedTables(schemaName string) []string {
+ output := map[string]bool{}
+ for _, schemaMapping := range c.config.GetSchemaMappings() {
+ if schemaMapping.GetSchema() == schemaName {
+ for _, tableMapping := range schemaMapping.GetTableMappings() {
+ output[tableMapping.GetTable()] = true
+ }
+ }
+ }
+ return slices.Collect(maps.Keys(output))
+}
diff --git a/internal/benthos/benthos-builder/builders/jobmapping-builder/settings/cascade-settings_test.go b/internal/benthos/benthos-builder/builders/jobmapping-builder/settings/cascade-settings_test.go
new file mode 100644
index 0000000000..ff4078871c
--- /dev/null
+++ b/internal/benthos/benthos-builder/builders/jobmapping-builder/settings/cascade-settings_test.go
@@ -0,0 +1,277 @@
+package cascade_settings
+
+import (
+ "testing"
+
+ mgmtv1alpha1 "github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1"
+ "github.com/nucleuscloud/neosync/internal/testutil"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func Test_GetSchemaStrategy(t *testing.T) {
+ t.Run("returns default when no strategy set", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{}
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetSchemaStrategy()
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapAllSchemas())
+ })
+
+ t.Run("returns configured strategy", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaChange: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaChange{
+ SchemaStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_{
+ MapAllSchemas: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas{},
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetSchemaStrategy()
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapAllSchemas())
+ })
+}
+
+func Test_GetTableStrategy(t *testing.T) {
+ t.Run("returns default when no strategy set", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{}
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetTableStrategy("public")
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapAllTables())
+ })
+
+ t.Run("returns global strategy when no schema specific strategy", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaChange: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaChange{
+ TableStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_{
+ MapDefinedTables: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables{},
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetTableStrategy("public")
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapDefinedTables())
+ })
+
+ t.Run("returns schema level strategy over global", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaChange: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaChange{
+ TableStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_{
+ MapAllTables: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables{},
+ },
+ },
+ },
+ SchemaMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping{
+ {
+ Schema: "public",
+ TableStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_{
+ MapDefinedTables: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables{},
+ },
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetTableStrategy("public")
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapDefinedTables())
+ })
+}
+
+func Test_GetColumnStrategy(t *testing.T) {
+ t.Run("returns default when no strategy set", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{}
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetColumnStrategy("public", "users")
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapAllColumns())
+ })
+
+ t.Run("returns global strategy when no schema or table specific strategy", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaChange: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaChange{
+ ColumnStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_{
+ MapAllColumns: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns{
+ ColumnInSourceNotMapped: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_{},
+ },
+ },
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetColumnStrategy("public", "users")
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapAllColumns())
+ require.NotNil(t, strategy.GetMapAllColumns().GetColumnInSourceNotMapped().GetDrop())
+ })
+
+ t.Run("returns table level strategy over schema and global", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaChange: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaChange{
+ ColumnStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_{
+ MapAllColumns: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns{
+ ColumnInSourceNotMapped: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_{},
+ },
+ },
+ },
+ },
+ },
+ SchemaMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping{
+ {
+ Schema: "public",
+ TableMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping{
+ {
+ Table: "users",
+ ColumnStrategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_{
+ MapAllColumns: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns{
+ ColumnInSourceNotMapped: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy{
+ Strategy: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_{},
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ strategy := settings.GetColumnStrategy("public", "users")
+ require.NotNil(t, strategy)
+ require.NotNil(t, strategy.GetMapAllColumns())
+ require.NotNil(t, strategy.GetMapAllColumns().GetColumnInSourceNotMapped().GetPassthrough())
+ })
+}
+
+func Test_GetColumnTransformerConfigByTable(t *testing.T) {
+ t.Run("returns empty when no transformers configured", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{}
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ var count int
+ for range settings.GetColumnTransformerConfigByTable("public", "users") {
+ count++
+ }
+ assert.Equal(t, 0, count)
+ })
+
+ t.Run("returns configured transformers", func(t *testing.T) {
+ transformer := &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
+ PassthroughConfig: &mgmtv1alpha1.Passthrough{},
+ },
+ }
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping{
+ {
+ Schema: "public",
+ TableMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping{
+ {
+ Table: "users",
+ ColumnMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping_ColumnMapping{
+ {
+ Column: "id",
+ Transformer: transformer,
+ },
+ },
+ },
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ var transformers []*mgmtv1alpha1.TransformerConfig
+ var columns []string
+ for col, trans := range settings.GetColumnTransformerConfigByTable("public", "users") {
+ columns = append(columns, col)
+ transformers = append(transformers, trans)
+ }
+ require.Len(t, transformers, 1)
+ require.Equal(t, transformer, transformers[0])
+ require.Equal(t, []string{"id"}, columns)
+ })
+}
+
+func Test_GetDefinedSchemas(t *testing.T) {
+ t.Run("returns empty when no schemas defined", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{}
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ schemas := settings.GetDefinedSchemas()
+ assert.Empty(t, schemas)
+ })
+
+ t.Run("returns defined schemas", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping{
+ {Schema: "public"},
+ {Schema: "private"},
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ schemas := settings.GetDefinedSchemas()
+ assert.ElementsMatch(t, []string{"public", "private"}, schemas)
+ })
+}
+
+func Test_GetDefinedTables(t *testing.T) {
+ t.Run("returns empty when no tables defined", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{}
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ tables := settings.GetDefinedTables("public")
+ assert.Empty(t, tables)
+ })
+
+ t.Run("returns defined tables for schema", func(t *testing.T) {
+ cfg := &mgmtv1alpha1.JobTypeConfig_JobTypeSync{
+ SchemaMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping{
+ {
+ Schema: "public",
+ TableMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping{
+ {Table: "users"},
+ {Table: "posts"},
+ },
+ },
+ {
+ Schema: "private",
+ TableMappings: []*mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaMapping_TableMapping{
+ {Table: "secrets"},
+ },
+ },
+ },
+ }
+ settings := NewCascadeSchemaSettings(cfg, testutil.GetConcurrentTestLogger(t))
+
+ tables := settings.GetDefinedTables("public")
+ assert.ElementsMatch(t, []string{"users", "posts"}, tables)
+
+ tables = settings.GetDefinedTables("private")
+ assert.ElementsMatch(t, []string{"secrets"}, tables)
+ })
+}
diff --git a/internal/benthos/benthos-builder/builders/jobmapping-builder/shared/util.go b/internal/benthos/benthos-builder/builders/jobmapping-builder/shared/util.go
new file mode 100644
index 0000000000..c0d2d343fb
--- /dev/null
+++ b/internal/benthos/benthos-builder/builders/jobmapping-builder/shared/util.go
@@ -0,0 +1,22 @@
+package jobmapping_builder_shared
+
+import (
+ mgmtv1alpha1 "github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1"
+ "github.com/nucleuscloud/neosync/worker/pkg/workflows/datasync/activities/shared"
+)
+
+func JobMappingsFromLegacyMappings(mappings []*mgmtv1alpha1.JobMapping) []*shared.JobTransformationMapping {
+ jobMappings := make([]*shared.JobTransformationMapping, len(mappings))
+ for i, mapping := range mappings {
+ jobMappings[i] = jobMappingFromLegacyMapping(mapping)
+ }
+ return jobMappings
+}
+
+func jobMappingFromLegacyMapping(mapping *mgmtv1alpha1.JobMapping) *shared.JobTransformationMapping {
+ return &shared.JobTransformationMapping{
+ JobMapping: mapping,
+ DestinationSchema: mapping.GetSchema(),
+ DestinationTable: mapping.GetTable(),
+ }
+}
diff --git a/internal/benthos/benthos-builder/builders/jobmapping-builder/sql/builders.go b/internal/benthos/benthos-builder/builders/jobmapping-builder/sql/builders.go
new file mode 100644
index 0000000000..8308926735
--- /dev/null
+++ b/internal/benthos/benthos-builder/builders/jobmapping-builder/sql/builders.go
@@ -0,0 +1,1386 @@
+package jobmapping_builder_sql
+
+import (
+ "errors"
+ "fmt"
+ "iter"
+ "log/slog"
+ "maps"
+ "math"
+ "slices"
+ "strconv"
+ "strings"
+
+ mgmtv1alpha1 "github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1"
+ sqlmanager_shared "github.com/nucleuscloud/neosync/backend/pkg/sqlmanager/shared"
+ cascade_settings "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/settings"
+ jobmapping_builder_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/shared"
+ job_util "github.com/nucleuscloud/neosync/internal/job"
+ neosync_benthos "github.com/nucleuscloud/neosync/worker/pkg/benthos"
+ "github.com/nucleuscloud/neosync/worker/pkg/workflows/datasync/activities/shared"
+)
+
+const (
+ jobmappingSubsetErrMsg = "unable to continue: job mappings contain schemas, tables, or columns that were not found in the source connection"
+ haltOnSchemaAdditionErrMsg = "unable to continue: HaltOnNewColumnAddition: job mappings are missing columns for the mapped tables found in the source connection"
+ haltOnColumnRemovalErrMsg = "unable to continue: HaltOnColumnRemoval: source database is missing columns for the mapped tables found in the job mappings"
+)
+
+type SqlJobMappingBuilder struct {
+ schemaSettings *cascade_settings.CascadeSchemaSettings
+
+ sourceSchemaRows map[string]map[string][]*sqlmanager_shared.DatabaseSchemaRow
+ destSchemaRows map[string]map[string][]*sqlmanager_shared.DatabaseSchemaRow
+
+ driver string
+ logger *slog.Logger
+}
+
+func NewSqlJobMappingBuilder(
+ schemaSettings *cascade_settings.CascadeSchemaSettings,
+ sourceSchemaRows map[string]map[string][]*sqlmanager_shared.DatabaseSchemaRow,
+ destSchemaRows map[string]map[string][]*sqlmanager_shared.DatabaseSchemaRow,
+ driver string,
+ logger *slog.Logger,
+) *SqlJobMappingBuilder {
+ return &SqlJobMappingBuilder{
+ schemaSettings: schemaSettings,
+ sourceSchemaRows: sourceSchemaRows,
+ destSchemaRows: destSchemaRows,
+ driver: driver,
+ logger: logger,
+ }
+}
+
+func (b *SqlJobMappingBuilder) BuildJobMappings() ([]*shared.JobTransformationMapping, error) {
+ schemas := b.getSchemasByStrategy(func() []string { return slices.Collect(maps.Keys(b.sourceSchemaRows)) })
+ tables := b.getTablesByStrategy(schemas, func(schema string) []string { return slices.Collect(maps.Keys(b.sourceSchemaRows[schema])) })
+
+ columnTransformErrors := []error{}
+ jobMappings := []*shared.JobTransformationMapping{}
+ for _, schema := range schemas {
+ tables, ok := tables[schema]
+ if !ok {
+ continue
+ }
+ for _, table := range tables {
+ columnRows, ok := b.sourceSchemaRows[schema][table]
+ if !ok {
+ continue
+ }
+ sourceColumnMap := maps.Collect(getColumnMapFromDbInfo(columnRows))
+ destColumnRows, ok := b.destSchemaRows[schema][table]
+ if !ok {
+ destColumnRows = []*sqlmanager_shared.DatabaseSchemaRow{}
+ }
+ destColumnMap := maps.Collect(getColumnMapFromDbInfo(destColumnRows))
+
+ columnTransforms, err := b.getColumnTransforms(schema, table, sourceColumnMap, destColumnMap)
+ if err != nil {
+ columnTransformErrors = append(columnTransformErrors, err)
+ continue
+ }
+ for colName, transformerConfig := range columnTransforms {
+ jobMappings = append(jobMappings, &shared.JobTransformationMapping{
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: schema,
+ Table: table,
+ Column: colName,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: transformerConfig,
+ },
+ },
+ })
+ }
+ }
+ }
+ if len(columnTransformErrors) > 0 {
+ return nil, fmt.Errorf("unable to build column transforms: %w", errors.Join(columnTransformErrors...))
+ }
+ return jobMappings, nil
+}
+
+// GetSchemasByStrategy returns the schemas to process based on the schema strategy
+// If MapAll or default, returns input. If MapDefined, returns what is defined in the config, does not consider input
+func (c *SqlJobMappingBuilder) getSchemasByStrategy(getDbSchemas func() []string) []string {
+ switch c.schemaSettings.GetSchemaStrategy().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapAllSchemas_:
+ return getDbSchemas()
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_SchemaStrategy_MapDefinedSchemas_:
+ return c.schemaSettings.GetDefinedSchemas()
+ default:
+ return getDbSchemas()
+ }
+}
+
+func (c *SqlJobMappingBuilder) getTablesByStrategy(schemas []string, getDbTables func(schema string) []string) map[string][]string {
+ output := map[string][]string{}
+ for _, schema := range schemas {
+ switch c.schemaSettings.GetTableStrategy(schema).GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapAllTables_:
+ output[schema] = getDbTables(schema)
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_TableStrategy_MapDefinedTables_:
+ output[schema] = c.schemaSettings.GetDefinedTables(schema)
+ default:
+ output[schema] = getDbTables(schema)
+ }
+ }
+ return output
+}
+
+func (c *SqlJobMappingBuilder) getColumnTransforms(
+ schemaName,
+ tableName string,
+ sourceColumnMap map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ destColumnMap map[string]*sqlmanager_shared.DatabaseSchemaRow,
+) (map[string]*mgmtv1alpha1.TransformerConfig, error) {
+ colStrategy := c.schemaSettings.GetColumnStrategy(schemaName, tableName)
+
+ output := map[string]*mgmtv1alpha1.TransformerConfig{}
+ maps.Insert(output, c.schemaSettings.GetColumnTransformerConfigByTable(schemaName, tableName))
+
+ switch colStrat := colStrategy.GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns_:
+ if colStrat.MapAllColumns == nil {
+ colStrat.MapAllColumns = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapAllColumns{}
+ }
+
+ for colName := range output {
+ if _, ok := sourceColumnMap[colName]; !ok {
+ switch colStrat.MapAllColumns.GetColumnMappedNotInSource().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_:
+ // do nothing
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_:
+ return nil, fmt.Errorf("column %s in source but not mapped, and halt is set", colName)
+ default:
+ // do nothing
+ }
+ }
+ }
+
+ for _, columnRow := range sourceColumnMap {
+ // column in source, but not mapped
+ if _, ok := output[columnRow.ColumnName]; !ok {
+ switch colStrat.MapAllColumns.GetColumnInSourceNotMapped().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_AutoMap_:
+ transformer, err := getTransformerConfigByDataType(c.driver, columnRow, c.logger)
+ if err != nil {
+ return nil, fmt.Errorf("unable to get transformer config for column %s: %w", columnRow.ColumnName, err)
+ }
+ output[columnRow.ColumnName] = transformer.GetConfig()
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Passthrough_:
+ output[columnRow.ColumnName] = &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
+ PassthroughConfig: &mgmtv1alpha1.Passthrough{},
+ },
+ }
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Halt_:
+ return nil, fmt.Errorf("column %s in source but not mapped, and halt is set", columnRow.ColumnName)
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceNotMappedStrategy_Drop_:
+ delete(output, columnRow.ColumnName)
+ default:
+ output[columnRow.ColumnName] = &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
+ PassthroughConfig: &mgmtv1alpha1.Passthrough{},
+ },
+ }
+ }
+ }
+ }
+
+ missingInDestColumns := []string{}
+ for colName := range output {
+ if _, ok := destColumnMap[colName]; !ok {
+ missingInDestColumns = append(missingInDestColumns, colName)
+ }
+ }
+ if len(missingInDestColumns) > 0 {
+ switch colStrat.MapAllColumns.GetColumnInSourceMappedNotInDestination().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_:
+ // do nothing
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_:
+ for _, colName := range missingInDestColumns {
+ delete(output, colName)
+ }
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_:
+ return nil, fmt.Errorf("columns in source + mapped, but not in destination: %s.%s.[%s]", schemaName, tableName, strings.Join(missingInDestColumns, ", "))
+ }
+ }
+
+ missingInSourceColumns := []string{}
+ for _, columnRow := range destColumnMap {
+ if _, ok := sourceColumnMap[columnRow.ColumnName]; !ok {
+ missingInSourceColumns = append(missingInSourceColumns, columnRow.ColumnName)
+ }
+ }
+ if len(missingInSourceColumns) > 0 {
+ strat := colStrat.MapAllColumns.GetColumnInDestinationNoLongerInSource().GetStrategy()
+ if strat == nil {
+ strat = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_{
+ AutoMap: &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap{},
+ }
+ }
+ switch strat.(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Continue_:
+ // do nothing
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_Halt_:
+ return nil, fmt.Errorf("columns in destination but not in source: %s.%s.[%s]", schemaName, tableName, strings.Join(missingInSourceColumns, ", "))
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInDestinationNotInSourceStrategy_AutoMap_:
+ for _, colName := range missingInSourceColumns {
+ destColInfo, ok := destColumnMap[colName]
+ if !ok {
+ return nil, fmt.Errorf("column %s in destination but not in source, and auto map is set", colName)
+ }
+ transformer, err := getTransformerConfigByDataType(c.driver, destColInfo, c.logger)
+ if err != nil {
+ return nil, fmt.Errorf("unable to get transformer config for column %s: %w", colName, err)
+ }
+ output[colName] = transformer.GetConfig()
+ }
+ default:
+ // do nothing, should be the same as auto map
+ }
+ }
+
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns_:
+ if colStrat.MapDefinedColumns == nil {
+ colStrat.MapDefinedColumns = &mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_MapDefinedColumns{}
+ }
+ for colName := range output {
+ if _, ok := sourceColumnMap[colName]; !ok {
+ switch colStrat.MapDefinedColumns.GetColumnMappedNotInSource().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Continue_:
+ // do nothing
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnMappedNotInSourceStrategy_Halt_:
+ return nil, fmt.Errorf("column %s in source but not mapped, and halt is set", colName)
+ default:
+ // do nothing
+ }
+ }
+ }
+
+ missingInDestColumns := []string{}
+ for colName := range output {
+ if _, ok := destColumnMap[colName]; !ok {
+ missingInDestColumns = append(missingInDestColumns, colName)
+ }
+ }
+ if len(missingInDestColumns) > 0 {
+ switch colStrat.MapDefinedColumns.GetColumnInSourceMappedNotInDestination().GetStrategy().(type) {
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Continue_:
+ // do nothing
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Drop_:
+ for _, colName := range missingInDestColumns {
+ delete(output, colName)
+ }
+ case *mgmtv1alpha1.JobTypeConfig_JobTypeSync_ColumnStrategy_ColumnInSourceMappedNotInDestinationStrategy_Halt_:
+ return nil, fmt.Errorf("columns in source + mapped, but not in destination: %s.%s.[%s]", schemaName, tableName, strings.Join(missingInDestColumns, ", "))
+ }
+ }
+ default:
+ // do nothing for now
+ }
+
+ return output, nil
+}
+
+// assumes the columnRows are already scoped to a table
+func getColumnMapFromDbInfo(columnRows []*sqlmanager_shared.DatabaseSchemaRow) iter.Seq2[string, *sqlmanager_shared.DatabaseSchemaRow] {
+ return func(yield func(string, *sqlmanager_shared.DatabaseSchemaRow) bool) {
+ for _, columnRow := range columnRows {
+ if !yield(columnRow.ColumnName, columnRow) {
+ return
+ }
+ }
+ }
+}
+
+type LegacySqlJobMappingBuilder struct {
+ job *mgmtv1alpha1.Job
+ sourceColumnInfo map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow
+ driver string
+ logger *slog.Logger
+}
+
+func NewLegacySqlJobMappingBuilder(
+ job *mgmtv1alpha1.Job,
+ sourceColumnInfo map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ driver string,
+ logger *slog.Logger,
+) *LegacySqlJobMappingBuilder {
+ return &LegacySqlJobMappingBuilder{
+ job: job,
+ sourceColumnInfo: sourceColumnInfo,
+ driver: driver,
+ logger: logger,
+ }
+}
+
+func (b *LegacySqlJobMappingBuilder) BuildJobMappings() ([]*shared.JobTransformationMapping, error) {
+ legacyMappings := b.job.GetMappings()
+ if len(legacyMappings) == 0 {
+ return nil, fmt.Errorf("no mappings found")
+ }
+
+ sqlSourceOpts, err := job_util.GetSqlJobSourceOpts(b.job.GetSource())
+ if err != nil {
+ return nil, fmt.Errorf("unable to get sql job source opts: %w", err)
+ }
+
+ if sqlSourceOpts != nil && sqlSourceOpts.HaltOnNewColumnAddition {
+ newColumns, shouldHalt := shouldHaltOnSchemaAddition(b.sourceColumnInfo, legacyMappings)
+ if shouldHalt {
+ return nil, fmt.Errorf("%s: [%s]", haltOnSchemaAdditionErrMsg, strings.Join(newColumns, ", "))
+ }
+ }
+
+ if sqlSourceOpts != nil && sqlSourceOpts.HaltOnColumnRemoval {
+ missing, shouldHalt := isSourceMissingColumnsFoundInMappings(b.sourceColumnInfo, legacyMappings)
+ if shouldHalt {
+ return nil, fmt.Errorf("%s: [%s]", haltOnSchemaAdditionErrMsg, strings.Join(missing, ", "))
+ }
+ }
+
+ // remove mappings that are not found in the source
+ filteredExistingSourceMappings := removeMappingsNotFoundInSource(legacyMappings, b.sourceColumnInfo)
+
+ if sqlSourceOpts != nil && sqlSourceOpts.PassthroughOnNewColumnAddition {
+ extraMappings, err := getAdditionalPassthroughJobMappings(
+ b.sourceColumnInfo,
+ filteredExistingSourceMappings,
+ splitKeyToTablePieces,
+ b.logger,
+ )
+ if err != nil {
+ return nil, err
+ }
+ b.logger.Debug(
+ fmt.Sprintf("adding %d extra passthrough mappings due to unmapped columns", len(extraMappings)),
+ )
+ filteredExistingSourceMappings = append(filteredExistingSourceMappings, extraMappings...)
+ }
+
+ if sqlSourceOpts != nil && sqlSourceOpts.GenerateNewColumnTransformers {
+ extraMappings, err := getAdditionalJobMappings(
+ b.driver,
+ b.sourceColumnInfo,
+ filteredExistingSourceMappings,
+ splitKeyToTablePieces,
+ b.logger,
+ )
+ if err != nil {
+ return nil, fmt.Errorf("unable to get additional legacy job mappings: %w", err)
+ }
+ b.logger.Debug(fmt.Sprintf("adding %d extra mappings due to unmapped columns", len(extraMappings)))
+ filteredExistingSourceMappings = append(filteredExistingSourceMappings, extraMappings...)
+ }
+ return jobmapping_builder_shared.JobMappingsFromLegacyMappings(filteredExistingSourceMappings), nil
+}
+
+// Based on the source schema, we check each mapped table for newly added columns that are not present in the mappings,
+// but are present in the source. If so, halt because this means PII may be leaked.
+func shouldHaltOnSchemaAddition(
+ groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ mappings []*mgmtv1alpha1.JobMapping,
+) ([]string, bool) {
+ tableColMappings := getUniqueColMappingsMap(mappings)
+ newColumns := []string{}
+ for table, cols := range groupedSchemas {
+ mappingCols, exists := tableColMappings[table]
+ if !exists {
+ // table not mapped in job mappings, skip
+ continue
+ }
+ for col := range cols {
+ if _, exists := mappingCols[col]; !exists {
+ newColumns = append(newColumns, fmt.Sprintf("%s.%s", table, col))
+ }
+ }
+ }
+ return newColumns, len(newColumns) != 0
+}
+
+// Builds a map of ->column
+func getUniqueColMappingsMap(
+ mappings []*mgmtv1alpha1.JobMapping,
+) map[string]map[string]struct{} {
+ tableColMappings := map[string]map[string]struct{}{}
+ for _, mapping := range mappings {
+ key := neosync_benthos.BuildBenthosTable(mapping.Schema, mapping.Table)
+ if _, ok := tableColMappings[key]; ok {
+ tableColMappings[key][mapping.Column] = struct{}{}
+ } else {
+ tableColMappings[key] = map[string]struct{}{
+ mapping.Column: {},
+ }
+ }
+ }
+ return tableColMappings
+}
+
+// checks that the source database has all the columns that are mapped in the job mappings
+func isSourceMissingColumnsFoundInMappings(
+ groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ mappings []*mgmtv1alpha1.JobMapping,
+) ([]string, bool) {
+ missingColumns := []string{}
+ tableColMappings := getUniqueColMappingsMap(mappings)
+
+ for schemaTable, cols := range tableColMappings {
+ tableCols := groupedSchemas[schemaTable]
+ for col := range cols {
+ if _, ok := tableCols[col]; !ok {
+ missingColumns = append(missingColumns, fmt.Sprintf("%s.%s", schemaTable, col))
+ }
+ }
+ }
+ return missingColumns, len(missingColumns) != 0
+}
+
+func removeMappingsNotFoundInSource(
+ mappings []*mgmtv1alpha1.JobMapping,
+ groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+) []*mgmtv1alpha1.JobMapping {
+ newMappings := make([]*mgmtv1alpha1.JobMapping, 0, len(mappings))
+ for _, mapping := range mappings {
+ key := sqlmanager_shared.BuildTable(mapping.Schema, mapping.Table)
+ if _, ok := groupedSchemas[key]; ok {
+ if _, ok := groupedSchemas[key][mapping.Column]; ok {
+ newMappings = append(newMappings, mapping)
+ }
+ }
+ }
+ return newMappings
+}
+
+// Based on the source schema and the provided mappings, we find the missing columns (if any) and generate passthrough job mappings for them automatically
+func getAdditionalPassthroughJobMappings(
+ groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ mappings []*mgmtv1alpha1.JobMapping,
+ getTableFromKey func(key string) (schema, table string, err error),
+ logger *slog.Logger,
+) ([]*mgmtv1alpha1.JobMapping, error) {
+ output := []*mgmtv1alpha1.JobMapping{}
+
+ tableColMappings := getUniqueColMappingsMap(mappings)
+
+ for schematable, cols := range groupedSchemas {
+ mappedCols, ok := tableColMappings[schematable]
+ if !ok {
+ // todo: we may want to generate mappings for this entire table? However this may be dead code as we get the grouped schemas based on the mappings
+ logger.Warn(
+ "table found in schema data that is not present in job mappings",
+ "table",
+ schematable,
+ )
+ continue
+ }
+ if len(cols) == len(mappedCols) {
+ continue
+ }
+ for col, info := range cols {
+ if _, ok := mappedCols[col]; !ok {
+ schema, table, err := getTableFromKey(schematable)
+ if err != nil {
+ return nil, err
+ }
+ // we found a column that is not present in the mappings, let's create a mapping for it
+ if info.GeneratedType != nil {
+ output = append(output, &mgmtv1alpha1.JobMapping{
+ Schema: schema,
+ Table: table,
+ Column: col,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateDefaultConfig{
+ GenerateDefaultConfig: &mgmtv1alpha1.GenerateDefault{},
+ },
+ },
+ },
+ })
+ } else {
+ output = append(output, &mgmtv1alpha1.JobMapping{
+ Schema: schema,
+ Table: table,
+ Column: col,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
+ PassthroughConfig: &mgmtv1alpha1.Passthrough{},
+ },
+ },
+ },
+ })
+ }
+ }
+ }
+ }
+
+ return output, nil
+}
+
+// Based on the source schema and the provided mappings, we find the missing columns (if any) and generate job mappings for them automatically
+func getAdditionalJobMappings(
+ driver string,
+ groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ mappings []*mgmtv1alpha1.JobMapping,
+ getTableFromKey func(key string) (schema, table string, err error),
+ logger *slog.Logger,
+) ([]*mgmtv1alpha1.JobMapping, error) {
+ output := []*mgmtv1alpha1.JobMapping{}
+
+ tableColMappings := getUniqueColMappingsMap(mappings)
+
+ for schematable, cols := range groupedSchemas {
+ mappedCols, ok := tableColMappings[schematable]
+ if !ok {
+ // todo: we may want to generate mappings for this entire table? However this may be dead code as we get the grouped schemas based on the mappings
+ logger.Warn(
+ "table found in schema data that is not present in job mappings",
+ "table",
+ schematable,
+ )
+ continue
+ }
+ if len(cols) == len(mappedCols) {
+ continue
+ }
+ for col, info := range cols {
+ if _, ok := mappedCols[col]; !ok {
+ schema, table, err := getTableFromKey(schematable)
+ if err != nil {
+ return nil, err
+ }
+ transformer, err := getTransformerConfigByDataType(driver, info, logger)
+ if err != nil {
+ return nil, err
+ }
+ output = append(output, &mgmtv1alpha1.JobMapping{
+ Schema: schema,
+ Table: table,
+ Column: col,
+ Transformer: transformer,
+ })
+ }
+ }
+ }
+ return output, nil
+}
+
+// Automap configuration
+func getTransformerConfigByDataType(
+ driver string,
+ info *sqlmanager_shared.DatabaseSchemaRow,
+ logger *slog.Logger,
+) (*mgmtv1alpha1.JobMappingTransformer, error) {
+ // we found a column that is not present in the mappings, let's create a mapping for it
+ if info.ColumnDefault != "" || info.IdentityGeneration != nil ||
+ info.GeneratedType != nil {
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateDefaultConfig{
+ GenerateDefaultConfig: &mgmtv1alpha1.GenerateDefault{},
+ },
+ },
+ }, nil
+ } else if info.IsNullable {
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_Nullconfig{
+ Nullconfig: &mgmtv1alpha1.Null{},
+ },
+ },
+ }, nil
+ } else {
+ switch driver {
+ case sqlmanager_shared.PostgresDriver:
+ return getJmTransformerByPostgresDataType(info)
+ case sqlmanager_shared.MysqlDriver:
+ return getJmTransformerByMysqlDataType(info)
+ default:
+ logger.Warn("this driver is not currently supported for additional job mapping by data type")
+ return nil, fmt.Errorf("this driver %q does not currently support additional job mappings by data type. Please provide discrete job mappings for %q.%q.%q to continue: %w",
+ driver, info.TableSchema, info.TableName, info.ColumnName, errors.ErrUnsupported,
+ )
+ }
+ }
+}
+
+func getJmTransformerByPostgresDataType(
+ colInfo *sqlmanager_shared.DatabaseSchemaRow,
+) (*mgmtv1alpha1.JobMappingTransformer, error) {
+ cleanedDataType := cleanPostgresType(colInfo.DataType)
+ switch cleanedDataType {
+ case "smallint":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(int64(-32768)),
+ Max: shared.Ptr(int64(32767)),
+ },
+ },
+ },
+ }, nil
+ case "integer":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(int64(-2147483648)),
+ Max: shared.Ptr(int64(2147483647)),
+ },
+ },
+ },
+ }, nil
+ case "bigint":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(int64(-9223372036854775808)),
+ Max: shared.Ptr(int64(9223372036854775807)),
+ },
+ },
+ },
+ }, nil
+ case "decimal", "numeric":
+ var precision *int64
+ if colInfo.NumericPrecision > 0 {
+ np := int64(colInfo.NumericPrecision)
+ precision = &np
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
+ GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
+ Precision: precision, // todo: we need to expose scale...
+ },
+ },
+ },
+ }, nil
+ case "real", "double precision":
+ var precision *int64
+ if colInfo.NumericPrecision > 0 {
+ np := int64(colInfo.NumericPrecision)
+ precision = &np
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
+ GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
+ Precision: precision,
+ },
+ },
+ },
+ }, nil
+
+ case "smallserial", "serial", "bigserial":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateDefaultConfig{
+ GenerateDefaultConfig: &mgmtv1alpha1.GenerateDefault{},
+ },
+ },
+ }, nil
+ case "money":
+ var precision *int64
+ if colInfo.NumericPrecision > 0 {
+ np := int64(colInfo.NumericPrecision)
+ precision = &np
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
+ GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
+ // todo: to adequately support money, we need to know the scale which is set via the lc_monetary setting (but may be properly populated via our query..)
+ Precision: precision,
+ Min: shared.Ptr(float64(-92233720368547758.08)),
+ Max: shared.Ptr(float64(92233720368547758.07)),
+ },
+ },
+ },
+ }, nil
+ case "text",
+ "bpchar",
+ "character",
+ "character varying": // todo: test to see if this works when (n) has been specified
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{}, // todo?
+ },
+ },
+ }, nil
+ // case "bytea": // todo https://www.postgresql.org/docs/current/datatype-binary.html
+ case "date":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ return year + "-" + month + "-" + day;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "time without time zone":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ const seconds = String(date.getSeconds()).padStart(2, '0');
+ return hours + ":" + minutes + ":" + seconds;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "time with time zone":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const hours = String(date.getUTCHours()).padStart(2, '0');
+ const minutes = String(date.getUTCMinutes()).padStart(2, '0');
+ const seconds = String(date.getUTCSeconds()).padStart(2, '0');
+ const timezoneOffset = -date.getTimezoneOffset();
+ const absOffset = Math.abs(timezoneOffset);
+ const offsetHours = String(Math.floor(absOffset / 60)).padStart(2, '0');
+ const offsetMinutes = String(absOffset % 60).padStart(2, '0');
+ const offsetSign = timezoneOffset >= 0 ? '+' : '-';
+ return hours + ":" + minutes + ":" + seconds + offsetSign + offsetHours + ":" + offsetMinutes;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "interval":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const hours = String(date.getUTCHours()).padStart(2, '0');
+ const minutes = String(date.getUTCMinutes()).padStart(2, '0');
+ const seconds = String(date.getUTCSeconds()).padStart(2, '0');
+ return hours + ":" + minutes + ":" + seconds;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "timestamp without time zone":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ const seconds = String(date.getSeconds()).padStart(2, '0');
+ return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "timestamp with time zone":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const year = date.getUTCFullYear();
+ const month = String(date.getUTCMonth() + 1).padStart(2, '0');
+ const day = String(date.getUTCDate()).padStart(2, '0');
+ const hours = String(date.getUTCHours()).padStart(2, '0');
+ const minutes = String(date.getUTCMinutes()).padStart(2, '0');
+ const seconds = String(date.getUTCSeconds()).padStart(2, '0');
+ const timezoneOffset = -date.getTimezoneOffset();
+ const absOffset = Math.abs(timezoneOffset);
+ const offsetHours = String(Math.floor(absOffset / 60)).padStart(2, '0');
+ const offsetMinutes = String(absOffset % 60).padStart(2, '0');
+ const offsetSign = timezoneOffset >= 0 ? '+' : '-';
+ return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + offsetSign + offsetHours + ":" + offsetMinutes;
+ `,
+ },
+ },
+ },
+ }, nil
+
+ case "boolean":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateBoolConfig{
+ GenerateBoolConfig: &mgmtv1alpha1.GenerateBool{},
+ },
+ },
+ }, nil
+ case "uuid":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateUuidConfig{
+ GenerateUuidConfig: &mgmtv1alpha1.GenerateUuid{
+ IncludeHyphens: shared.Ptr(true),
+ },
+ },
+ },
+ }, nil
+ default:
+ return nil, fmt.Errorf(
+ "uncountered unsupported data type %q for %q.%q.%q when attempting to generate an auto-mapper. To continue, provide a discrete job mapping for this column.: %w",
+ colInfo.DataType,
+ colInfo.TableSchema,
+ colInfo.TableName,
+ colInfo.ColumnName,
+ errors.ErrUnsupported,
+ )
+ }
+}
+
+func getJmTransformerByMysqlDataType(
+ colInfo *sqlmanager_shared.DatabaseSchemaRow,
+) (*mgmtv1alpha1.JobMappingTransformer, error) {
+ cleanedDataType := cleanMysqlType(colInfo.MysqlColumnType)
+ switch cleanedDataType {
+ case "char":
+ params := extractMysqlTypeParams(colInfo.MysqlColumnType)
+ minLength := int64(0)
+ maxLength := int64(255)
+ if len(params) > 0 {
+ fixedLength, err := strconv.ParseInt(params[0], 10, 64)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "failed to parse length for type %q: %w",
+ colInfo.MysqlColumnType,
+ err,
+ )
+ }
+ minLength = fixedLength
+ maxLength = fixedLength
+ } else if colInfo.CharacterMaximumLength > 0 {
+ maxLength = int64(colInfo.CharacterMaximumLength)
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{
+ Min: shared.Ptr(minLength),
+ Max: shared.Ptr(maxLength),
+ },
+ },
+ },
+ }, nil
+
+ case "varchar":
+ params := extractMysqlTypeParams(colInfo.MysqlColumnType)
+ maxLength := int64(65535)
+ if len(params) > 0 {
+ fixedLength, err := strconv.ParseInt(params[0], 10, 64)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "failed to parse length for type %q: %w",
+ colInfo.MysqlColumnType,
+ err,
+ )
+ }
+ maxLength = fixedLength
+ } else if colInfo.CharacterMaximumLength > 0 {
+ maxLength = int64(colInfo.CharacterMaximumLength)
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{Max: shared.Ptr(maxLength)},
+ },
+ },
+ }, nil
+
+ case "tinytext":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{Max: shared.Ptr(int64(255))},
+ },
+ },
+ }, nil
+
+ case "text":
+ params := extractMysqlTypeParams(colInfo.MysqlColumnType)
+ maxLength := int64(65535)
+ if len(params) > 0 {
+ length, err := strconv.ParseInt(params[0], 10, 64)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "failed to parse length for type %q: %w",
+ colInfo.MysqlColumnType,
+ err,
+ )
+ }
+ maxLength = length
+ } else if colInfo.CharacterMaximumLength > 0 {
+ maxLength = int64(colInfo.CharacterMaximumLength)
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{Max: shared.Ptr(maxLength)},
+ },
+ },
+ }, nil
+
+ case "mediumtext":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{
+ Max: shared.Ptr(int64(16_777_215)),
+ },
+ },
+ },
+ }, nil
+ case "longtext":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
+ GenerateStringConfig: &mgmtv1alpha1.GenerateString{
+ Max: shared.Ptr(int64(4_294_967_295)),
+ },
+ },
+ },
+ }, nil
+ case "enum", "set":
+ params := extractMysqlTypeParams(colInfo.MysqlColumnType)
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateCategoricalConfig{
+ GenerateCategoricalConfig: &mgmtv1alpha1.GenerateCategorical{
+ Categories: shared.Ptr(strings.Join(params, ",")),
+ },
+ },
+ },
+ }, nil
+
+ case "tinyint":
+ isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
+ var minVal, maxVal int64
+ if isUnsigned {
+ minVal = 0
+ maxVal = 255 // 2^8 - 1
+ } else {
+ minVal = -128 // -2^7
+ maxVal = 127 // 2^7 - 1
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(minVal),
+ Max: shared.Ptr(maxVal),
+ },
+ },
+ },
+ }, nil
+
+ case "smallint":
+ isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
+ var minVal, maxVal int64
+ if isUnsigned {
+ minVal = 0
+ maxVal = 65535 // 2^16 - 1
+ } else {
+ minVal = -32768 // -2^15
+ maxVal = 32767 // 2^15 - 1
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(minVal),
+ Max: shared.Ptr(maxVal),
+ },
+ },
+ },
+ }, nil
+ case "mediumint":
+ isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
+ var minVal, maxVal int64
+ if isUnsigned {
+ minVal = 0
+ maxVal = 16777215 // 2^24 - 1
+ } else {
+ minVal = -8388608 // -2^23
+ maxVal = 8388607 // 2^23 - 1
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(minVal),
+ Max: shared.Ptr(maxVal),
+ },
+ },
+ },
+ }, nil
+ case "int", "integer":
+ isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
+ var minVal, maxVal int64
+ if isUnsigned {
+ minVal = 0
+ maxVal = 4294967295 // 2^32 - 1
+ } else {
+ minVal = -2147483648 // -2^31
+ maxVal = 2147483647 // 2^31 - 1
+ }
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(minVal),
+ Max: shared.Ptr(maxVal),
+ },
+ },
+ },
+ }, nil
+ case "bigint":
+ minVal := int64(0) // -2^63
+ maxVal := int64(math.MaxInt64) // 2^63 - 1
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
+ GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
+ Min: shared.Ptr(minVal),
+ Max: shared.Ptr(maxVal),
+ },
+ },
+ },
+ }, nil
+ case "float":
+ precision := int64(colInfo.NumericPrecision)
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
+ GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
+ Precision: &precision,
+ },
+ },
+ },
+ }, nil
+ case "double", "double precision", "decimal", "dec":
+ precision := int64(colInfo.NumericPrecision)
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
+ GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
+ Precision: &precision, // todo: expose scale
+ },
+ },
+ },
+ }, nil
+
+ // case "bit":
+ // params := extractMysqlTypeParams(colInfo.MysqlColumnType)
+ // bitLength := int64(1) // default length is 1
+ // if len(params) > 0 {
+ // if parsed, err := strconv.ParseInt(params[0], 10, 64); err == nil && parsed > 0 && parsed <= 64 {
+ // bitLength = parsed
+ // }
+ // }
+ // return &mgmtv1alpha1.JobMappingTransformer{
+ // Config: &mgmtv1alpha1.TransformerConfig{
+ // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ // Code: fmt.Sprintf(`
+ // // Generate random bits up to specified length
+ // const length = %d;
+ // let value = 0;
+ // for (let i = 0; i < length; i++) {
+ // if (Math.random() < 0.5) {
+ // value |= (1 << i);
+ // }
+ // }
+ // // Convert to binary string padded to the correct length
+ // return value.toString(2).padStart(length, '0');
+ // `, bitLength),
+ // },
+ // },
+ // },
+ // }, nil
+ // case "binary", "varbinary":
+ // params := extractMysqlTypeParams(colInfo.DataType)
+ // maxLength := int64(255) // default max length
+ // if len(params) > 0 {
+ // if parsed, err := strconv.ParseInt(params[0], 10, 64); err == nil && parsed > 0 && parsed <= 255 {
+ // maxLength = parsed
+ // }
+ // }
+ // return &mgmtv1alpha1.JobMappingTransformer{
+ // Config: &mgmtv1alpha1.TransformerConfig{
+ // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ // Code: fmt.Sprintf(`
+ // // Generate random binary data up to maxLength bytes
+ // const maxLength = %d;
+ // const length = Math.floor(Math.random() * maxLength) + 1;
+ // const bytes = new Uint8Array(length);
+ // for (let i = 0; i < length; i++) {
+ // bytes[i] = Math.floor(Math.random() * 256);
+ // }
+ // // Convert to base64 for safe transport
+ // return Buffer.from(bytes).toString('base64');
+ // `, maxLength),
+ // },
+ // },
+ // },
+ // }, nil
+ // case "tinyblob":
+ // return &mgmtv1alpha1.JobMappingTransformer{
+ // Config: &mgmtv1alpha1.TransformerConfig{
+ // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ // Code: `
+ // // Generate random TINYBLOB (max 255 bytes)
+ // const maxLength = 255;
+ // const length = Math.floor(Math.random() * maxLength) + 1;
+ // const bytes = new Uint8Array(length);
+ // for (let i = 0; i < length; i++) {
+ // bytes[i] = Math.floor(Math.random() * 256);
+ // }
+ // return Buffer.from(bytes).toString('base64');
+ // `,
+ // },
+ // },
+ // },
+ // }, nil
+ // case "blob":
+ // return &mgmtv1alpha1.JobMappingTransformer{
+ // Config: &mgmtv1alpha1.TransformerConfig{
+ // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ // Code: `
+ // // Generate random BLOB (max 65,535 bytes)
+ // // Using a smaller max for practical purposes
+ // const maxLength = 1024; // Using 1KB for reasonable performance
+ // const length = Math.floor(Math.random() * maxLength) + 1;
+ // const bytes = new Uint8Array(length);
+ // for (let i = 0; i < length; i++) {
+ // bytes[i] = Math.floor(Math.random() * 256);
+ // }
+ // return Buffer.from(bytes).toString('base64');
+ // `,
+ // },
+ // },
+ // },
+ // }, nil
+ // case "mediumblob":
+ // return &mgmtv1alpha1.JobMappingTransformer{
+ // Config: &mgmtv1alpha1.TransformerConfig{
+ // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ // Code: `
+ // // Generate random MEDIUMBLOB (max 16,777,215 bytes)
+ // // Using a smaller max for practical purposes
+ // const maxLength = 2048; // Using 2KB for reasonable performance
+ // const length = Math.floor(Math.random() * maxLength) + 1;
+ // const bytes = new Uint8Array(length);
+ // for (let i = 0; i < length; i++) {
+ // bytes[i] = Math.floor(Math.random() * 256);
+ // }
+ // return Buffer.from(bytes).toString('base64');
+ // `,
+ // },
+ // },
+ // },
+ // }, nil
+ // case "longblob":
+ // return &mgmtv1alpha1.JobMappingTransformer{
+ // Config: &mgmtv1alpha1.TransformerConfig{
+ // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ // Code: `
+ // // Generate random LONGBLOB (max 4,294,967,295 bytes)
+ // // Using a smaller max for practical purposes
+ // const maxLength = 4096; // Using 4KB for reasonable performance
+ // const length = Math.floor(Math.random() * maxLength) + 1;
+ // const bytes = new Uint8Array(length);
+ // for (let i = 0; i < length; i++) {
+ // bytes[i] = Math.floor(Math.random() * 256);
+ // }
+ // return Buffer.from(bytes).toString('base64');
+ // `,
+ // },
+ // },
+ // },
+ // }, nil
+
+ case "date":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ return year + "-" + month + "-" + day;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "datetime", "timestamp":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ const seconds = String(date.getSeconds()).padStart(2, '0');
+ return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "time":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ const seconds = String(date.getSeconds()).padStart(2, '0');
+ return hours + ":" + minutes + ":" + seconds;
+ `,
+ },
+ },
+ },
+ }, nil
+ case "year":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
+ GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
+ Code: `
+ const date = new Date();
+ return date.getFullYear();
+ `,
+ },
+ },
+ },
+ }, nil
+ case "boolean", "bool":
+ return &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateBoolConfig{
+ GenerateBoolConfig: &mgmtv1alpha1.GenerateBool{},
+ },
+ },
+ }, nil
+ default:
+ return nil, fmt.Errorf(
+ "uncountered unsupported data type %q for %q.%q.%q when attempting to generate an auto-mapper. To continue, provide a discrete job mapping for this column.: %w",
+ colInfo.DataType,
+ colInfo.TableSchema,
+ colInfo.TableName,
+ colInfo.ColumnName,
+ errors.ErrUnsupported,
+ )
+ }
+}
+
+func cleanPostgresType(dataType string) string {
+ parenIndex := strings.Index(dataType, "(")
+ if parenIndex == -1 {
+ return dataType
+ }
+ return strings.TrimSpace(dataType[:parenIndex])
+}
+
+func cleanMysqlType(dataType string) string {
+ parenIndex := strings.Index(dataType, "(")
+ if parenIndex == -1 {
+ return dataType
+ }
+ return strings.TrimSpace(dataType[:parenIndex])
+}
+
+// extractMysqlTypeParams extracts the parameters from MySQL data type definitions
+// Examples:
+// - CHAR(10) -> ["10"]
+// - FLOAT(10, 2) -> ["10", "2"]
+// - ENUM('val1', 'val2') -> ["val1", "val2"]
+func extractMysqlTypeParams(dataType string) []string {
+ parenIndex := strings.Index(dataType, "(")
+ if parenIndex == -1 {
+ return nil
+ }
+
+ closingIndex := strings.LastIndex(dataType, ")")
+ if closingIndex == -1 {
+ return nil
+ }
+
+ // Extract content between parentheses
+ paramsStr := dataType[parenIndex+1 : closingIndex]
+
+ // Handle ENUM/SET cases which use quotes
+ if strings.Contains(paramsStr, "'") {
+ // Split by comma and handle quoted values
+ params := strings.Split(paramsStr, ",")
+ result := make([]string, 0, len(params))
+ for _, p := range params {
+ // Remove quotes and whitespace
+ p = strings.Trim(strings.TrimSpace(p), "'")
+ if p != "" {
+ result = append(result, p)
+ }
+ }
+ return result
+ }
+
+ // Handle regular numeric parameters
+ params := strings.Split(paramsStr, ",")
+ result := make([]string, 0, len(params))
+ for _, p := range params {
+ p = strings.TrimSpace(p)
+ if p != "" {
+ result = append(result, p)
+ }
+ }
+ return result
+}
+
+func splitKeyToTablePieces(key string) (schema, table string, err error) {
+ pieces := strings.SplitN(key, ".", 2)
+ if len(pieces) != 2 {
+ return "", "", errors.New("unable to split key to get schema and table, not 2 pieces")
+ }
+ return pieces[0], pieces[1], nil
+}
diff --git a/internal/benthos/benthos-builder/builders/sql-util_test.go b/internal/benthos/benthos-builder/builders/jobmapping-builder/sql/builders_test.go
similarity index 86%
rename from internal/benthos/benthos-builder/builders/sql-util_test.go
rename to internal/benthos/benthos-builder/builders/jobmapping-builder/sql/builders_test.go
index f108de7c2f..433abbe6b5 100644
--- a/internal/benthos/benthos-builder/builders/sql-util_test.go
+++ b/internal/benthos/benthos-builder/builders/jobmapping-builder/sql/builders_test.go
@@ -1,4 +1,4 @@
-package benthosbuilder_builders
+package jobmapping_builder_sql
import (
"testing"
@@ -202,6 +202,160 @@ func Test_getAdditionalMappings(t *testing.T) {
})
}
+func Test_cleanMysqlType(t *testing.T) {
+ t.Run("simple type without params", func(t *testing.T) {
+ result := cleanMysqlType("varchar")
+ expected := "varchar"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("type with single parameter", func(t *testing.T) {
+ result := cleanMysqlType("varchar(255)")
+ expected := "varchar"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("type with multiple parameters", func(t *testing.T) {
+ result := cleanMysqlType("decimal(10,2)")
+ expected := "decimal"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("enum type with values", func(t *testing.T) {
+ result := cleanMysqlType("enum('small','medium','large')")
+ expected := "enum"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("set type with values", func(t *testing.T) {
+ result := cleanMysqlType("set('draft','published','archived')")
+ expected := "set"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("type with trailing space", func(t *testing.T) {
+ result := cleanMysqlType("decimal(10,2) ")
+ expected := "decimal"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("type with leading space", func(t *testing.T) {
+ result := cleanMysqlType(" decimal(10,2)")
+ expected := "decimal"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("empty string", func(t *testing.T) {
+ result := cleanMysqlType("")
+ expected := ""
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("just parentheses", func(t *testing.T) {
+ result := cleanMysqlType("()")
+ expected := ""
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("datetime type", func(t *testing.T) {
+ result := cleanMysqlType("datetime")
+ expected := "datetime"
+ require.Equal(t, expected, result)
+ })
+
+ t.Run("timestamp with precision", func(t *testing.T) {
+ result := cleanMysqlType("timestamp(6)")
+ expected := "timestamp"
+ require.Equal(t, expected, result)
+ })
+}
+
+func BenchmarkCleanMysqlType(b *testing.B) {
+ inputs := []string{
+ "varchar",
+ "decimal(10,2)",
+ "enum('small','medium','large')",
+ "set('draft','published','archived')",
+ "datetime",
+ "timestamp(6)",
+ }
+
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ for _, input := range inputs {
+ cleanMysqlType(input)
+ }
+ }
+}
+
+func Test_extractMysqlTypeParams(t *testing.T) {
+ t.Run("numeric parameters", func(t *testing.T) {
+ t.Run("single parameter", func(t *testing.T) {
+ result := extractMysqlTypeParams("CHAR(10)")
+ require.Equal(t, []string{"10"}, result)
+ })
+
+ t.Run("multiple parameters", func(t *testing.T) {
+ result := extractMysqlTypeParams("FLOAT(10,2)")
+ require.Equal(t, []string{"10", "2"}, result)
+ })
+
+ t.Run("parameters with spaces", func(t *testing.T) {
+ result := extractMysqlTypeParams("DECIMAL(10, 2)")
+ require.Equal(t, []string{"10", "2"}, result)
+ })
+ })
+
+ t.Run("enum values", func(t *testing.T) {
+ t.Run("simple values", func(t *testing.T) {
+ result := extractMysqlTypeParams("ENUM('small','medium','large')")
+ require.Equal(t, []string{"small", "medium", "large"}, result)
+ })
+
+ t.Run("values with spaces", func(t *testing.T) {
+ result := extractMysqlTypeParams("ENUM('small', 'medium', 'large')")
+ require.Equal(t, []string{"small", "medium", "large"}, result)
+ })
+
+ t.Run("values with special characters", func(t *testing.T) {
+ result := extractMysqlTypeParams("ENUM('draft-1','published_2','archived.3')")
+ require.Equal(t, []string{"draft-1", "published_2", "archived.3"}, result)
+ })
+ })
+
+ t.Run("set values", func(t *testing.T) {
+ result := extractMysqlTypeParams("SET('draft','published','archived')")
+ require.Equal(t, []string{"draft", "published", "archived"}, result)
+ })
+
+ t.Run("edge cases", func(t *testing.T) {
+ t.Run("no parameters", func(t *testing.T) {
+ result := extractMysqlTypeParams("VARCHAR")
+ require.Nil(t, result)
+ })
+
+ t.Run("empty parameters", func(t *testing.T) {
+ result := extractMysqlTypeParams("CHAR()")
+ require.Empty(t, result)
+ })
+
+ t.Run("missing closing parenthesis", func(t *testing.T) {
+ result := extractMysqlTypeParams("CHAR(10")
+ require.Nil(t, result)
+ })
+
+ t.Run("empty enum values", func(t *testing.T) {
+ result := extractMysqlTypeParams("ENUM('','','')")
+ require.Empty(t, result)
+ })
+
+ t.Run("mixed empty and non-empty enum values", func(t *testing.T) {
+ result := extractMysqlTypeParams("ENUM('', 'valid', '')")
+ require.Equal(t, []string{"valid"}, result)
+ })
+ })
+}
+
func Test_isSourceMissingColumns(t *testing.T) {
t.Run("no missing columns", func(t *testing.T) {
missing, ok := isSourceMissingColumnsFoundInMappings(
@@ -382,156 +536,66 @@ func Test_removeMappingsNotFoundInSource(t *testing.T) {
})
}
-func Test_cleanMysqlType(t *testing.T) {
- t.Run("simple type without params", func(t *testing.T) {
- result := cleanMysqlType("varchar")
- expected := "varchar"
- require.Equal(t, expected, result)
- })
-
- t.Run("type with single parameter", func(t *testing.T) {
- result := cleanMysqlType("varchar(255)")
- expected := "varchar"
- require.Equal(t, expected, result)
- })
-
- t.Run("type with multiple parameters", func(t *testing.T) {
- result := cleanMysqlType("decimal(10,2)")
- expected := "decimal"
- require.Equal(t, expected, result)
- })
-
- t.Run("enum type with values", func(t *testing.T) {
- result := cleanMysqlType("enum('small','medium','large')")
- expected := "enum"
- require.Equal(t, expected, result)
- })
-
- t.Run("set type with values", func(t *testing.T) {
- result := cleanMysqlType("set('draft','published','archived')")
- expected := "set"
- require.Equal(t, expected, result)
- })
-
- t.Run("type with trailing space", func(t *testing.T) {
- result := cleanMysqlType("decimal(10,2) ")
- expected := "decimal"
- require.Equal(t, expected, result)
- })
-
- t.Run("type with leading space", func(t *testing.T) {
- result := cleanMysqlType(" decimal(10,2)")
- expected := "decimal"
- require.Equal(t, expected, result)
- })
-
- t.Run("empty string", func(t *testing.T) {
- result := cleanMysqlType("")
- expected := ""
- require.Equal(t, expected, result)
- })
-
- t.Run("just parentheses", func(t *testing.T) {
- result := cleanMysqlType("()")
- expected := ""
- require.Equal(t, expected, result)
- })
-
- t.Run("datetime type", func(t *testing.T) {
- result := cleanMysqlType("datetime")
- expected := "datetime"
- require.Equal(t, expected, result)
- })
-
- t.Run("timestamp with precision", func(t *testing.T) {
- result := cleanMysqlType("timestamp(6)")
- expected := "timestamp"
- require.Equal(t, expected, result)
- })
-}
-
-func BenchmarkCleanMysqlType(b *testing.B) {
- inputs := []string{
- "varchar",
- "decimal(10,2)",
- "enum('small','medium','large')",
- "set('draft','published','archived')",
- "datetime",
- "timestamp(6)",
- }
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- for _, input := range inputs {
- cleanMysqlType(input)
- }
- }
-}
-
-func Test_extractMysqlTypeParams(t *testing.T) {
- t.Run("numeric parameters", func(t *testing.T) {
- t.Run("single parameter", func(t *testing.T) {
- result := extractMysqlTypeParams("CHAR(10)")
- require.Equal(t, []string{"10"}, result)
- })
-
- t.Run("multiple parameters", func(t *testing.T) {
- result := extractMysqlTypeParams("FLOAT(10,2)")
- require.Equal(t, []string{"10", "2"}, result)
- })
-
- t.Run("parameters with spaces", func(t *testing.T) {
- result := extractMysqlTypeParams("DECIMAL(10, 2)")
- require.Equal(t, []string{"10", "2"}, result)
- })
- })
-
- t.Run("enum values", func(t *testing.T) {
- t.Run("simple values", func(t *testing.T) {
- result := extractMysqlTypeParams("ENUM('small','medium','large')")
- require.Equal(t, []string{"small", "medium", "large"}, result)
- })
-
- t.Run("values with spaces", func(t *testing.T) {
- result := extractMysqlTypeParams("ENUM('small', 'medium', 'large')")
- require.Equal(t, []string{"small", "medium", "large"}, result)
- })
-
- t.Run("values with special characters", func(t *testing.T) {
- result := extractMysqlTypeParams("ENUM('draft-1','published_2','archived.3')")
- require.Equal(t, []string{"draft-1", "published_2", "archived.3"}, result)
- })
- })
-
- t.Run("set values", func(t *testing.T) {
- result := extractMysqlTypeParams("SET('draft','published','archived')")
- require.Equal(t, []string{"draft", "published", "archived"}, result)
- })
-
- t.Run("edge cases", func(t *testing.T) {
- t.Run("no parameters", func(t *testing.T) {
- result := extractMysqlTypeParams("VARCHAR")
- require.Nil(t, result)
- })
-
- t.Run("empty parameters", func(t *testing.T) {
- result := extractMysqlTypeParams("CHAR()")
- require.Empty(t, result)
- })
-
- t.Run("missing closing parenthesis", func(t *testing.T) {
- result := extractMysqlTypeParams("CHAR(10")
- require.Nil(t, result)
- })
-
- t.Run("empty enum values", func(t *testing.T) {
- result := extractMysqlTypeParams("ENUM('','','')")
- require.Empty(t, result)
- })
-
- t.Run("mixed empty and non-empty enum values", func(t *testing.T) {
- result := extractMysqlTypeParams("ENUM('', 'valid', '')")
- require.Equal(t, []string{"valid"}, result)
- })
- })
+func TestShouldHaltOnSchemaAddition(t *testing.T) {
+ newCols, ok := shouldHaltOnSchemaAddition(
+ map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
+ "public.users": {
+ "id": &sqlmanager_shared.DatabaseSchemaRow{},
+ "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
+ },
+ },
+ []*mgmtv1alpha1.JobMapping{
+ {Schema: "public", Table: "users", Column: "id"},
+ {Schema: "public", Table: "users", Column: "created_by"},
+ },
+ )
+ require.False(t, ok, "job mappings are valid set of database schemas")
+ require.Empty(t, newCols)
+
+ newCols, ok = shouldHaltOnSchemaAddition(
+ map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
+ "public.users": {
+ "id": &sqlmanager_shared.DatabaseSchemaRow{},
+ "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
+ },
+ "neosync_api.accounts": {
+ "id": &sqlmanager_shared.DatabaseSchemaRow{},
+ "name": &sqlmanager_shared.DatabaseSchemaRow{},
+ },
+ },
+ []*mgmtv1alpha1.JobMapping{
+ {Schema: "public", Table: "users", Column: "id"},
+ {Schema: "public", Table: "users", Column: "created_by"},
+ },
+ )
+ require.False(t, ok, "valid subset of job mappings")
+
+ newCols, ok = shouldHaltOnSchemaAddition(
+ map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
+ "public.users": {
+ "id": &sqlmanager_shared.DatabaseSchemaRow{},
+ "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
+ },
+ },
+ []*mgmtv1alpha1.JobMapping{
+ {Schema: "public", Table: "users", Column: "id"},
+ },
+ )
+ require.True(t, ok, "job mappings are missing table column")
+ require.Equal(t, []string{"public.users.created_by"}, newCols)
+
+ newCols, ok = shouldHaltOnSchemaAddition(
+ map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow{
+ "public.users": {
+ "id": &sqlmanager_shared.DatabaseSchemaRow{},
+ "created_by": &sqlmanager_shared.DatabaseSchemaRow{},
+ },
+ },
+ []*mgmtv1alpha1.JobMapping{
+ {Schema: "public", Table: "users", Column: "id"},
+ {Schema: "public", Table: "users", Column: "updated_by"},
+ },
+ )
+ require.True(t, ok, "job mappings have same column count, but missing specific column")
+ require.Equal(t, []string{"public.users.created_by"}, newCols)
}
diff --git a/internal/benthos/benthos-builder/builders/mongodb.go b/internal/benthos/benthos-builder/builders/mongodb.go
index bd459d8a21..16fc8ef346 100644
--- a/internal/benthos/benthos-builder/builders/mongodb.go
+++ b/internal/benthos/benthos-builder/builders/mongodb.go
@@ -7,6 +7,7 @@ import (
"github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1/mgmtv1alpha1connect"
"github.com/nucleuscloud/neosync/backend/pkg/metrics"
sqlmanager_shared "github.com/nucleuscloud/neosync/backend/pkg/sqlmanager/shared"
+ jobmapping_builder_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/shared"
bb_internal "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/internal"
bb_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/shared"
"github.com/nucleuscloud/neosync/internal/runconfigs"
@@ -31,7 +32,7 @@ func (b *mongodbSyncBuilder) BuildSourceConfigs(
) ([]*bb_internal.BenthosSourceConfig, error) {
sourceConnection := params.SourceConnection
job := params.Job
- groupedMappings := groupMappingsByTable(job.GetMappings())
+ groupedMappings := groupMappingsByTable(jobmapping_builder_shared.JobMappingsFromLegacyMappings(job.GetMappings()))
benthosConfigs := []*bb_internal.BenthosSourceConfig{}
for _, tableMapping := range groupedMappings {
diff --git a/internal/benthos/benthos-builder/builders/processors.go b/internal/benthos/benthos-builder/builders/processors.go
index 380e0496bd..d50f1ff403 100644
--- a/internal/benthos/benthos-builder/builders/processors.go
+++ b/internal/benthos/benthos-builder/builders/processors.go
@@ -31,7 +31,7 @@ func buildProcessorConfigsByRunType(
columnForeignKeysMap map[string][]*bb_internal.ReferenceKey,
transformedFktoPkMap map[string][]*bb_internal.ReferenceKey,
jobId, runId string,
- mappings []*mgmtv1alpha1.JobMapping,
+ mappings []*shared.JobTransformationMapping,
columnInfoMap map[string]*sqlmanager_shared.DatabaseSchemaRow,
jobSourceOptions *mgmtv1alpha1.JobSourceOptions,
mappedKeys []string,
@@ -136,7 +136,7 @@ func buildSqlUpdateProcessorConfigs(
func buildProcessorConfigs(
ctx context.Context,
transformerclient mgmtv1alpha1connect.TransformersServiceClient,
- cols []*mgmtv1alpha1.JobMapping,
+ cols []*shared.JobTransformationMapping,
tableColumnInfo map[string]*sqlmanager_shared.DatabaseSchemaRow,
transformedFktoPkMap map[string][]*bb_internal.ReferenceKey,
fkSourceCols []string,
@@ -146,13 +146,13 @@ func buildProcessorConfigs(
mappedKeys []string,
) ([]*neosync_benthos.ProcessorConfig, error) {
// filter columns by config insert cols
- filteredCols := []*mgmtv1alpha1.JobMapping{}
+ filteredColumnMappings := []*shared.JobTransformationMapping{}
for _, col := range cols {
if slices.Contains(runconfig.InsertColumns(), col.Column) {
- filteredCols = append(filteredCols, col)
+ filteredColumnMappings = append(filteredColumnMappings, col)
}
}
- jsCode, err := extractJsFunctionsAndOutputs(ctx, transformerclient, filteredCols)
+ jsCode, err := extractJsFunctionsAndOutputs(ctx, transformerclient, filteredColumnMappings)
if err != nil {
return nil, err
}
@@ -160,7 +160,7 @@ func buildProcessorConfigs(
mutations, err := buildMutationConfigs(
ctx,
transformerclient,
- filteredCols,
+ filteredColumnMappings,
tableColumnInfo,
runconfig.SplitColumnPaths(),
)
@@ -169,13 +169,13 @@ func buildProcessorConfigs(
}
cacheBranches := buildBranchCacheConfigs(
- filteredCols,
+ filteredColumnMappings,
transformedFktoPkMap,
jobId,
runId,
)
- pkMapping := buildPrimaryKeyMappingConfigs(filteredCols, fkSourceCols)
+ pkMapping := buildPrimaryKeyMappingConfigs(filteredColumnMappings, fkSourceCols)
defaultTransformerConfig, err := buildDefaultTransformerConfigs(jobSourceOptions, mappedKeys)
if err != nil {
@@ -254,7 +254,7 @@ func buildDefaultTransformerConfigs(
func extractJsFunctionsAndOutputs(
ctx context.Context,
transformerclient mgmtv1alpha1connect.TransformersServiceClient,
- cols []*mgmtv1alpha1.JobMapping,
+ cols []*shared.JobTransformationMapping,
) (string, error) {
var benthosOutputs []string
var jsFunctions []string
@@ -311,7 +311,7 @@ func isJavascriptTransformer(jmt *mgmtv1alpha1.JobMappingTransformer) bool {
func buildIdentityCursors(
ctx context.Context,
transformerclient mgmtv1alpha1connect.TransformersServiceClient,
- cols []*mgmtv1alpha1.JobMapping,
+ cols []*shared.JobTransformationMapping,
) (map[string]*tablesync_shared.IdentityCursor, error) {
cursors := map[string]*tablesync_shared.IdentityCursor{}
@@ -341,7 +341,7 @@ func buildIdentityCursors(
func buildMutationConfigs(
ctx context.Context,
transformerclient mgmtv1alpha1connect.TransformersServiceClient,
- cols []*mgmtv1alpha1.JobMapping,
+ cols []*shared.JobTransformationMapping,
tableColumnInfo map[string]*sqlmanager_shared.DatabaseSchemaRow,
splitColumnPaths bool,
) (string, error) {
@@ -399,7 +399,7 @@ func getBenthosColumnKey(column string, shouldSplitPath bool) string {
return fmt.Sprintf("%q", column)
}
-func buildPrimaryKeyMappingConfigs(cols []*mgmtv1alpha1.JobMapping, primaryKeys []string) string {
+func buildPrimaryKeyMappingConfigs(cols []*shared.JobTransformationMapping, primaryKeys []string) string {
mappings := []string{}
for _, col := range cols {
if shouldProcessColumn(col.Transformer) && slices.Contains(primaryKeys, col.Column) {
@@ -428,7 +428,7 @@ func generateSha1Hash(input string) string {
}
func buildBranchCacheConfigs(
- cols []*mgmtv1alpha1.JobMapping,
+ cols []*shared.JobTransformationMapping,
transformedFktoPkMap map[string][]*bb_internal.ReferenceKey,
jobId, runId string,
) []*neosync_benthos.BranchConfig {
@@ -526,7 +526,7 @@ func convertUserDefinedFunctionConfig(
}
func computeMutationFunction(
- col *mgmtv1alpha1.JobMapping,
+ col *shared.JobTransformationMapping,
colInfo *sqlmanager_shared.DatabaseSchemaRow,
splitColumnPath bool,
) (string, error) {
@@ -837,7 +837,7 @@ func computeMutationFunction(
}
}
-func buildScrambleIdentityToken(col *mgmtv1alpha1.JobMapping) string {
+func buildScrambleIdentityToken(col *shared.JobTransformationMapping) string {
return neosync_benthos.ToSha256(
fmt.Sprintf("%s.%s.%s", col.GetSchema(), col.GetTable(), col.GetColumn()),
)
diff --git a/internal/benthos/benthos-builder/builders/processors_test.go b/internal/benthos/benthos-builder/builders/processors_test.go
index e60819efc1..986bbc1c70 100644
--- a/internal/benthos/benthos-builder/builders/processors_test.go
+++ b/internal/benthos/benthos-builder/builders/processors_test.go
@@ -14,6 +14,7 @@ import (
bb_internal "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/internal"
"github.com/nucleuscloud/neosync/internal/runconfigs"
neosync_benthos "github.com/nucleuscloud/neosync/worker/pkg/benthos"
+ "github.com/nucleuscloud/neosync/worker/pkg/workflows/datasync/activities/shared"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)
@@ -35,11 +36,16 @@ func Test_buildProcessorConfigsJavascript(t *testing.T) {
res, err := buildProcessorConfigs(
ctx, mockTransformerClient,
- []*mgmtv1alpha1.JobMapping{
+ []*shared.JobTransformationMapping{
{
- Schema: "public", Table: "users", Column: "address",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
- }},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: "address",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
+ },
+ },
+ },
map[string]*sqlmanager_shared.DatabaseSchemaRow{},
map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId,
runconfigs.NewRunConfig("id", sqlmanager_shared.SchemaTable{}, runconfigs.RunTypeInsert, nil, nil, nil, []string{"address"}, nil, false),
@@ -95,10 +101,16 @@ func Test_buildProcessorConfigsGenerateJavascript(t *testing.T) {
res, err := buildProcessorConfigs(
ctx, mockTransformerClient,
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: "test",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
- }},
+ []*shared.JobTransformationMapping{
+ {
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: "test",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
+ },
+ },
+ },
map[string]*sqlmanager_shared.DatabaseSchemaRow{},
map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId,
runconfigs.NewRunConfig("id", sqlmanager_shared.SchemaTable{}, runconfigs.RunTypeInsert, nil, nil, nil, []string{"test"}, nil, false),
@@ -165,9 +177,24 @@ func Test_buildProcessorConfigsJavascriptMultiple(t *testing.T) {
res, err := buildProcessorConfigs(
ctx, mockTransformerClient,
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: nameCol, Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config}},
- {Schema: "public", Table: "users", Column: ageCol, Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT2.Config}}},
+ []*shared.JobTransformationMapping{
+ {
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: nameCol,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
+ },
+ },
+ {
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: ageCol,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT2.Config},
+ },
+ },
+ },
map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId,
runconfigs.NewRunConfig("id", sqlmanager_shared.SchemaTable{}, runconfigs.RunTypeInsert, nil, nil, nil, []string{nameCol, ageCol}, nil, false),
nil,
@@ -234,9 +261,24 @@ func Test_buildProcessorConfigsTransformAndGenerateJavascript(t *testing.T) {
res, err := buildProcessorConfigs(
ctx, mockTransformerClient,
- []*mgmtv1alpha1.JobMapping{
- {Schema: "public", Table: "users", Column: nameCol, Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config}},
- {Schema: "public", Table: "users", Column: col2, Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT2.Config}}},
+ []*shared.JobTransformationMapping{
+ {
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: nameCol,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
+ },
+ },
+ {
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: col2,
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT2.Config},
+ },
+ },
+ },
map[string]*sqlmanager_shared.DatabaseSchemaRow{}, map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId,
runconfigs.NewRunConfig("id", sqlmanager_shared.SchemaTable{}, runconfigs.RunTypeInsert, nil, nil, nil, []string{nameCol, col2}, nil, false),
nil,
@@ -291,11 +333,16 @@ func Test_buildProcessorConfigsJavascript_DeepKeys(t *testing.T) {
res, err := buildProcessorConfigs(
ctx, mockTransformerClient,
- []*mgmtv1alpha1.JobMapping{
+ []*shared.JobTransformationMapping{
{
- Schema: "public", Table: "users", Column: "foo.bar.baz",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
- }},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public", Table: "users", Column: "foo.bar.baz",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{Config: jsT.Config},
+ },
+ },
+ },
map[string]*sqlmanager_shared.DatabaseSchemaRow{},
map[string][]*bb_internal.ReferenceKey{}, []string{}, mockJobId, mockRunId,
runconfigs.NewRunConfig("id", sqlmanager_shared.SchemaTable{}, runconfigs.RunTypeInsert, nil, nil, nil, []string{"foo.bar.baz"}, nil, false),
@@ -400,7 +447,7 @@ func Test_buildIdentityCursors(t *testing.T) {
t.Run("empty columns list returns empty map", func(t *testing.T) {
mockTransformerClient := mgmtv1alpha1connect.NewMockTransformersServiceClient(t)
- cursors, err := buildIdentityCursors(context.Background(), mockTransformerClient, []*mgmtv1alpha1.JobMapping{})
+ cursors, err := buildIdentityCursors(context.Background(), mockTransformerClient, []*shared.JobTransformationMapping{})
require.NoError(t, err)
require.Empty(t, cursors)
@@ -409,27 +456,35 @@ func Test_buildIdentityCursors(t *testing.T) {
t.Run("columns with scramble identity transformer", func(t *testing.T) {
mockTransformerClient := mgmtv1alpha1connect.NewMockTransformersServiceClient(t)
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "id",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig{
- TransformScrambleIdentityConfig: &mgmtv1alpha1.TransformScrambleIdentity{},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "id",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig{
+ TransformScrambleIdentityConfig: &mgmtv1alpha1.TransformScrambleIdentity{},
+ },
},
},
},
},
{
- Schema: "public",
- Table: "orders",
- Column: "user_id",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig{
- TransformScrambleIdentityConfig: &mgmtv1alpha1.TransformScrambleIdentity{},
+ DestinationSchema: "public",
+ DestinationTable: "orders",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "orders",
+ Column: "user_id",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_TransformScrambleIdentityConfig{
+ TransformScrambleIdentityConfig: &mgmtv1alpha1.TransformScrambleIdentity{},
+ },
},
},
},
@@ -473,16 +528,20 @@ func Test_buildIdentityCursors(t *testing.T) {
nil,
)
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "id",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_UserDefinedTransformerConfig{
- UserDefinedTransformerConfig: &mgmtv1alpha1.UserDefinedTransformerConfig{
- Id: userDefinedId,
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "id",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_UserDefinedTransformerConfig{
+ UserDefinedTransformerConfig: &mgmtv1alpha1.UserDefinedTransformerConfig{
+ Id: userDefinedId,
+ },
},
},
},
@@ -502,15 +561,19 @@ func Test_buildIdentityCursors(t *testing.T) {
t.Run("columns with other transformers are ignored", func(t *testing.T) {
mockTransformerClient := mgmtv1alpha1connect.NewMockTransformersServiceClient(t)
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "email",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateEmailConfig{
- GenerateEmailConfig: &mgmtv1alpha1.GenerateEmail{},
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "email",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_GenerateEmailConfig{
+ GenerateEmailConfig: &mgmtv1alpha1.GenerateEmail{},
+ },
},
},
},
@@ -539,16 +602,20 @@ func Test_buildIdentityCursors(t *testing.T) {
connect.NewError(connect.CodeNotFound, errors.New("transformer not found")),
)
- cols := []*mgmtv1alpha1.JobMapping{
+ cols := []*shared.JobTransformationMapping{
{
- Schema: "public",
- Table: "users",
- Column: "id",
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_UserDefinedTransformerConfig{
- UserDefinedTransformerConfig: &mgmtv1alpha1.UserDefinedTransformerConfig{
- Id: userDefinedId,
+ DestinationSchema: "public",
+ DestinationTable: "users",
+ JobMapping: &mgmtv1alpha1.JobMapping{
+ Schema: "public",
+ Table: "users",
+ Column: "id",
+ Transformer: &mgmtv1alpha1.JobMappingTransformer{
+ Config: &mgmtv1alpha1.TransformerConfig{
+ Config: &mgmtv1alpha1.TransformerConfig_UserDefinedTransformerConfig{
+ UserDefinedTransformerConfig: &mgmtv1alpha1.UserDefinedTransformerConfig{
+ Id: userDefinedId,
+ },
},
},
},
diff --git a/internal/benthos/benthos-builder/builders/sql-util.go b/internal/benthos/benthos-builder/builders/sql-util.go
index 532fba83be..8c200e4b48 100644
--- a/internal/benthos/benthos-builder/builders/sql-util.go
+++ b/internal/benthos/benthos-builder/builders/sql-util.go
@@ -2,12 +2,8 @@ package benthosbuilder_builders
import (
"context"
- "errors"
"fmt"
"log/slog"
- "math"
- "strconv"
- "strings"
"sync"
"time"
@@ -21,12 +17,6 @@ import (
"golang.org/x/sync/errgroup"
)
-const (
- jobmappingSubsetErrMsg = "unable to continue: job mappings contain schemas, tables, or columns that were not found in the source connection"
- haltOnSchemaAdditionErrMsg = "unable to continue: HaltOnNewColumnAddition: job mappings are missing columns for the mapped tables found in the source connection"
- haltOnColumnRemovalErrMsg = "unable to continue: HaltOnColumnRemoval: source database is missing columns for the mapped tables found in the job mappings"
-)
-
type sqlSourceTableOptions struct {
WhereClause *string
}
@@ -34,83 +24,7 @@ type sqlSourceTableOptions struct {
type tableMapping struct {
Schema string
Table string
- Mappings []*mgmtv1alpha1.JobMapping
-}
-
-func removeMappingsNotFoundInSource(
- mappings []*mgmtv1alpha1.JobMapping,
- groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
-) []*mgmtv1alpha1.JobMapping {
- newMappings := make([]*mgmtv1alpha1.JobMapping, 0, len(mappings))
- for _, mapping := range mappings {
- key := sqlmanager_shared.BuildTable(mapping.Schema, mapping.Table)
- if _, ok := groupedSchemas[key]; ok {
- if _, ok := groupedSchemas[key][mapping.Column]; ok {
- newMappings = append(newMappings, mapping)
- }
- }
- }
- return newMappings
-}
-
-// checks that the source database has all the columns that are mapped in the job mappings
-func isSourceMissingColumnsFoundInMappings(
- groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
- mappings []*mgmtv1alpha1.JobMapping,
-) ([]string, bool) {
- missingColumns := []string{}
- tableColMappings := getUniqueColMappingsMap(mappings)
-
- for schemaTable, cols := range tableColMappings {
- tableCols := groupedSchemas[schemaTable]
- for col := range cols {
- if _, ok := tableCols[col]; !ok {
- missingColumns = append(missingColumns, fmt.Sprintf("%s.%s", schemaTable, col))
- }
- }
- }
- return missingColumns, len(missingColumns) != 0
-}
-
-// Builds a map of ->column
-func getUniqueColMappingsMap(
- mappings []*mgmtv1alpha1.JobMapping,
-) map[string]map[string]struct{} {
- tableColMappings := map[string]map[string]struct{}{}
- for _, mapping := range mappings {
- key := neosync_benthos.BuildBenthosTable(mapping.Schema, mapping.Table)
- if _, ok := tableColMappings[key]; ok {
- tableColMappings[key][mapping.Column] = struct{}{}
- } else {
- tableColMappings[key] = map[string]struct{}{
- mapping.Column: {},
- }
- }
- }
- return tableColMappings
-}
-
-// Based on the source schema, we check each mapped table for newly added columns that are not present in the mappings,
-// but are present in the source. If so, halt because this means PII may be leaked.
-func shouldHaltOnSchemaAddition(
- groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
- mappings []*mgmtv1alpha1.JobMapping,
-) ([]string, bool) {
- tableColMappings := getUniqueColMappingsMap(mappings)
- newColumns := []string{}
- for table, cols := range groupedSchemas {
- mappingCols, exists := tableColMappings[table]
- if !exists {
- // table not mapped in job mappings, skip
- continue
- }
- for col := range cols {
- if _, exists := mappingCols[col]; !exists {
- newColumns = append(newColumns, fmt.Sprintf("%s.%s", table, col))
- }
- }
- }
- return newColumns, len(newColumns) != 0
+ Mappings []*shared.JobTransformationMapping
}
func getMapValuesCount[K comparable, V any](m map[K][]V) int {
@@ -121,7 +35,7 @@ func getMapValuesCount[K comparable, V any](m map[K][]V) int {
return count
}
-func buildPlainColumns(mappings []*mgmtv1alpha1.JobMapping) []string {
+func buildPlainColumns(mappings []*shared.JobTransformationMapping) []string {
columns := make([]string, len(mappings))
for idx := range mappings {
columns[idx] = mappings[idx].Column
@@ -201,9 +115,9 @@ func mergeVirtualForeignKeys(
}
func groupMappingsByTable(
- mappings []*mgmtv1alpha1.JobMapping,
+ mappings []*shared.JobTransformationMapping,
) []*tableMapping {
- groupedMappings := map[string][]*mgmtv1alpha1.JobMapping{}
+ groupedMappings := map[string][]*shared.JobTransformationMapping{}
for _, mapping := range mappings {
key := neosync_benthos.BuildBenthosTable(mapping.Schema, mapping.Table)
@@ -597,940 +511,6 @@ func getParsedBatchingConfig(destOpt batchDestinationOption) (batchingConfig, er
return output, nil
}
-// Based on the source schema and the provided mappings, we find the missing columns (if any) and generate passthrough job mappings for them automatically
-func getAdditionalPassthroughJobMappings(
- groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
- mappings []*mgmtv1alpha1.JobMapping,
- getTableFromKey func(key string) (schema, table string, err error),
- logger *slog.Logger,
-) ([]*mgmtv1alpha1.JobMapping, error) {
- output := []*mgmtv1alpha1.JobMapping{}
-
- tableColMappings := getUniqueColMappingsMap(mappings)
-
- for schematable, cols := range groupedSchemas {
- mappedCols, ok := tableColMappings[schematable]
- if !ok {
- // todo: we may want to generate mappings for this entire table? However this may be dead code as we get the grouped schemas based on the mappings
- logger.Warn(
- "table found in schema data that is not present in job mappings",
- "table",
- schematable,
- )
- continue
- }
- if len(cols) == len(mappedCols) {
- continue
- }
- for col, info := range cols {
- if _, ok := mappedCols[col]; !ok {
- schema, table, err := getTableFromKey(schematable)
- if err != nil {
- return nil, err
- }
- // we found a column that is not present in the mappings, let's create a mapping for it
- if info.GeneratedType != nil {
- output = append(output, &mgmtv1alpha1.JobMapping{
- Schema: schema,
- Table: table,
- Column: col,
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateDefaultConfig{
- GenerateDefaultConfig: &mgmtv1alpha1.GenerateDefault{},
- },
- },
- },
- })
- } else {
- output = append(output, &mgmtv1alpha1.JobMapping{
- Schema: schema,
- Table: table,
- Column: col,
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_PassthroughConfig{
- PassthroughConfig: &mgmtv1alpha1.Passthrough{},
- },
- },
- },
- })
- }
- }
- }
- }
-
- return output, nil
-}
-
-// Based on the source schema and the provided mappings, we find the missing columns (if any) and generate job mappings for them automatically
-func getAdditionalJobMappings(
- driver string,
- groupedSchemas map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
- mappings []*mgmtv1alpha1.JobMapping,
- getTableFromKey func(key string) (schema, table string, err error),
- logger *slog.Logger,
-) ([]*mgmtv1alpha1.JobMapping, error) {
- output := []*mgmtv1alpha1.JobMapping{}
-
- tableColMappings := getUniqueColMappingsMap(mappings)
-
- for schematable, cols := range groupedSchemas {
- mappedCols, ok := tableColMappings[schematable]
- if !ok {
- // todo: we may want to generate mappings for this entire table? However this may be dead code as we get the grouped schemas based on the mappings
- logger.Warn(
- "table found in schema data that is not present in job mappings",
- "table",
- schematable,
- )
- continue
- }
- if len(cols) == len(mappedCols) {
- continue
- }
- for col, info := range cols {
- if _, ok := mappedCols[col]; !ok {
- schema, table, err := getTableFromKey(schematable)
- if err != nil {
- return nil, err
- }
- // we found a column that is not present in the mappings, let's create a mapping for it
- if info.ColumnDefault != "" || info.IdentityGeneration != nil ||
- info.GeneratedType != nil {
- output = append(output, &mgmtv1alpha1.JobMapping{
- Schema: schema,
- Table: table,
- Column: col,
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateDefaultConfig{
- GenerateDefaultConfig: &mgmtv1alpha1.GenerateDefault{},
- },
- },
- },
- })
- } else if info.IsNullable {
- output = append(output, &mgmtv1alpha1.JobMapping{
- Schema: schema,
- Table: table,
- Column: col,
- Transformer: &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_Nullconfig{
- Nullconfig: &mgmtv1alpha1.Null{},
- },
- },
- },
- })
- } else {
- switch driver {
- case sqlmanager_shared.PostgresDriver:
- transformer, err := getJmTransformerByPostgresDataType(info)
- if err != nil {
- return nil, err
- }
- output = append(output, &mgmtv1alpha1.JobMapping{
- Schema: schema,
- Table: table,
- Column: col,
- Transformer: transformer,
- })
- case sqlmanager_shared.MysqlDriver:
- transformer, err := getJmTransformerByMysqlDataType(info)
- if err != nil {
- return nil, err
- }
- output = append(output, &mgmtv1alpha1.JobMapping{
- Schema: schema,
- Table: table,
- Column: col,
- Transformer: transformer,
- })
- default:
- logger.Warn("this driver is not currently supported for additional job mapping by data type")
- return nil, fmt.Errorf("this driver %q does not currently support additional job mappings by data type. Please provide discrete job mappings for %q.%q.%q to continue: %w",
- driver, info.TableSchema, info.TableName, info.ColumnName, errors.ErrUnsupported,
- )
- }
- }
- }
- }
- }
-
- return output, nil
-}
-
-func getJmTransformerByPostgresDataType(
- colInfo *sqlmanager_shared.DatabaseSchemaRow,
-) (*mgmtv1alpha1.JobMappingTransformer, error) {
- cleanedDataType := cleanPostgresType(colInfo.DataType)
- switch cleanedDataType {
- case "smallint":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(int64(-32768)),
- Max: shared.Ptr(int64(32767)),
- },
- },
- },
- }, nil
- case "integer":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(int64(-2147483648)),
- Max: shared.Ptr(int64(2147483647)),
- },
- },
- },
- }, nil
- case "bigint":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(int64(-9223372036854775808)),
- Max: shared.Ptr(int64(9223372036854775807)),
- },
- },
- },
- }, nil
- case "decimal", "numeric":
- var precision *int64
- if colInfo.NumericPrecision > 0 {
- np := int64(colInfo.NumericPrecision)
- precision = &np
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
- GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
- Precision: precision, // todo: we need to expose scale...
- },
- },
- },
- }, nil
- case "real", "double precision":
- var precision *int64
- if colInfo.NumericPrecision > 0 {
- np := int64(colInfo.NumericPrecision)
- precision = &np
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
- GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
- Precision: precision,
- },
- },
- },
- }, nil
-
- case "smallserial", "serial", "bigserial":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateDefaultConfig{
- GenerateDefaultConfig: &mgmtv1alpha1.GenerateDefault{},
- },
- },
- }, nil
- case "money":
- var precision *int64
- if colInfo.NumericPrecision > 0 {
- np := int64(colInfo.NumericPrecision)
- precision = &np
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
- GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
- // todo: to adequately support money, we need to know the scale which is set via the lc_monetary setting (but may be properly populated via our query..)
- Precision: precision,
- Min: shared.Ptr(float64(-92233720368547758.08)),
- Max: shared.Ptr(float64(92233720368547758.07)),
- },
- },
- },
- }, nil
- case "text",
- "bpchar",
- "character",
- "character varying": // todo: test to see if this works when (n) has been specified
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{}, // todo?
- },
- },
- }, nil
- // case "bytea": // todo https://www.postgresql.org/docs/current/datatype-binary.html
- case "date":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, '0');
- const day = String(date.getDate()).padStart(2, '0');
- return year + "-" + month + "-" + day;
- `,
- },
- },
- },
- }, nil
- case "time without time zone":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const hours = String(date.getHours()).padStart(2, '0');
- const minutes = String(date.getMinutes()).padStart(2, '0');
- const seconds = String(date.getSeconds()).padStart(2, '0');
- return hours + ":" + minutes + ":" + seconds;
- `,
- },
- },
- },
- }, nil
- case "time with time zone":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const hours = String(date.getUTCHours()).padStart(2, '0');
- const minutes = String(date.getUTCMinutes()).padStart(2, '0');
- const seconds = String(date.getUTCSeconds()).padStart(2, '0');
- const timezoneOffset = -date.getTimezoneOffset();
- const absOffset = Math.abs(timezoneOffset);
- const offsetHours = String(Math.floor(absOffset / 60)).padStart(2, '0');
- const offsetMinutes = String(absOffset % 60).padStart(2, '0');
- const offsetSign = timezoneOffset >= 0 ? '+' : '-';
- return hours + ":" + minutes + ":" + seconds + offsetSign + offsetHours + ":" + offsetMinutes;
- `,
- },
- },
- },
- }, nil
- case "interval":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const hours = String(date.getUTCHours()).padStart(2, '0');
- const minutes = String(date.getUTCMinutes()).padStart(2, '0');
- const seconds = String(date.getUTCSeconds()).padStart(2, '0');
- return hours + ":" + minutes + ":" + seconds;
- `,
- },
- },
- },
- }, nil
- case "timestamp without time zone":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, '0');
- const day = String(date.getDate()).padStart(2, '0');
- const hours = String(date.getHours()).padStart(2, '0');
- const minutes = String(date.getMinutes()).padStart(2, '0');
- const seconds = String(date.getSeconds()).padStart(2, '0');
- return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
- `,
- },
- },
- },
- }, nil
- case "timestamp with time zone":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const year = date.getUTCFullYear();
- const month = String(date.getUTCMonth() + 1).padStart(2, '0');
- const day = String(date.getUTCDate()).padStart(2, '0');
- const hours = String(date.getUTCHours()).padStart(2, '0');
- const minutes = String(date.getUTCMinutes()).padStart(2, '0');
- const seconds = String(date.getUTCSeconds()).padStart(2, '0');
- const timezoneOffset = -date.getTimezoneOffset();
- const absOffset = Math.abs(timezoneOffset);
- const offsetHours = String(Math.floor(absOffset / 60)).padStart(2, '0');
- const offsetMinutes = String(absOffset % 60).padStart(2, '0');
- const offsetSign = timezoneOffset >= 0 ? '+' : '-';
- return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + offsetSign + offsetHours + ":" + offsetMinutes;
- `,
- },
- },
- },
- }, nil
- case "boolean":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateBoolConfig{
- GenerateBoolConfig: &mgmtv1alpha1.GenerateBool{},
- },
- },
- }, nil
- case "uuid":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateUuidConfig{
- GenerateUuidConfig: &mgmtv1alpha1.GenerateUuid{
- IncludeHyphens: shared.Ptr(true),
- },
- },
- },
- }, nil
- default:
- return nil, fmt.Errorf(
- "uncountered unsupported data type %q for %q.%q.%q when attempting to generate an auto-mapper. To continue, provide a discrete job mapping for this column.: %w",
- colInfo.DataType,
- colInfo.TableSchema,
- colInfo.TableName,
- colInfo.ColumnName,
- errors.ErrUnsupported,
- )
- }
-}
-
-func getJmTransformerByMysqlDataType(
- colInfo *sqlmanager_shared.DatabaseSchemaRow,
-) (*mgmtv1alpha1.JobMappingTransformer, error) {
- cleanedDataType := cleanMysqlType(colInfo.MysqlColumnType)
- switch cleanedDataType {
- case "char":
- params := extractMysqlTypeParams(colInfo.MysqlColumnType)
- minLength := int64(0)
- maxLength := int64(255)
- if len(params) > 0 {
- fixedLength, err := strconv.ParseInt(params[0], 10, 64)
- if err != nil {
- return nil, fmt.Errorf(
- "failed to parse length for type %q: %w",
- colInfo.MysqlColumnType,
- err,
- )
- }
- minLength = fixedLength
- maxLength = fixedLength
- } else if colInfo.CharacterMaximumLength > 0 {
- maxLength = int64(colInfo.CharacterMaximumLength)
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{
- Min: shared.Ptr(minLength),
- Max: shared.Ptr(maxLength),
- },
- },
- },
- }, nil
-
- case "varchar":
- params := extractMysqlTypeParams(colInfo.MysqlColumnType)
- maxLength := int64(65535)
- if len(params) > 0 {
- fixedLength, err := strconv.ParseInt(params[0], 10, 64)
- if err != nil {
- return nil, fmt.Errorf(
- "failed to parse length for type %q: %w",
- colInfo.MysqlColumnType,
- err,
- )
- }
- maxLength = fixedLength
- } else if colInfo.CharacterMaximumLength > 0 {
- maxLength = int64(colInfo.CharacterMaximumLength)
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{Max: shared.Ptr(maxLength)},
- },
- },
- }, nil
-
- case "tinytext":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{Max: shared.Ptr(int64(255))},
- },
- },
- }, nil
-
- case "text":
- params := extractMysqlTypeParams(colInfo.MysqlColumnType)
- maxLength := int64(65535)
- if len(params) > 0 {
- length, err := strconv.ParseInt(params[0], 10, 64)
- if err != nil {
- return nil, fmt.Errorf(
- "failed to parse length for type %q: %w",
- colInfo.MysqlColumnType,
- err,
- )
- }
- maxLength = length
- } else if colInfo.CharacterMaximumLength > 0 {
- maxLength = int64(colInfo.CharacterMaximumLength)
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{Max: shared.Ptr(maxLength)},
- },
- },
- }, nil
-
- case "mediumtext":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{
- Max: shared.Ptr(int64(16_777_215)),
- },
- },
- },
- }, nil
- case "longtext":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateStringConfig{
- GenerateStringConfig: &mgmtv1alpha1.GenerateString{
- Max: shared.Ptr(int64(4_294_967_295)),
- },
- },
- },
- }, nil
- case "enum", "set":
- params := extractMysqlTypeParams(colInfo.MysqlColumnType)
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateCategoricalConfig{
- GenerateCategoricalConfig: &mgmtv1alpha1.GenerateCategorical{
- Categories: shared.Ptr(strings.Join(params, ",")),
- },
- },
- },
- }, nil
-
- case "tinyint":
- isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
- var minVal, maxVal int64
- if isUnsigned {
- minVal = 0
- maxVal = 255 // 2^8 - 1
- } else {
- minVal = -128 // -2^7
- maxVal = 127 // 2^7 - 1
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(minVal),
- Max: shared.Ptr(maxVal),
- },
- },
- },
- }, nil
-
- case "smallint":
- isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
- var minVal, maxVal int64
- if isUnsigned {
- minVal = 0
- maxVal = 65535 // 2^16 - 1
- } else {
- minVal = -32768 // -2^15
- maxVal = 32767 // 2^15 - 1
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(minVal),
- Max: shared.Ptr(maxVal),
- },
- },
- },
- }, nil
- case "mediumint":
- isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
- var minVal, maxVal int64
- if isUnsigned {
- minVal = 0
- maxVal = 16777215 // 2^24 - 1
- } else {
- minVal = -8388608 // -2^23
- maxVal = 8388607 // 2^23 - 1
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(minVal),
- Max: shared.Ptr(maxVal),
- },
- },
- },
- }, nil
- case "int", "integer":
- isUnsigned := strings.Contains(strings.ToLower(colInfo.MysqlColumnType), "unsigned")
- var minVal, maxVal int64
- if isUnsigned {
- minVal = 0
- maxVal = 4294967295 // 2^32 - 1
- } else {
- minVal = -2147483648 // -2^31
- maxVal = 2147483647 // 2^31 - 1
- }
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(minVal),
- Max: shared.Ptr(maxVal),
- },
- },
- },
- }, nil
- case "bigint":
- minVal := int64(0) // -2^63
- maxVal := int64(math.MaxInt64) // 2^63 - 1
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateInt64Config{
- GenerateInt64Config: &mgmtv1alpha1.GenerateInt64{
- Min: shared.Ptr(minVal),
- Max: shared.Ptr(maxVal),
- },
- },
- },
- }, nil
- case "float":
- precision := int64(colInfo.NumericPrecision)
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
- GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
- Precision: &precision,
- },
- },
- },
- }, nil
- case "double", "double precision", "decimal", "dec":
- precision := int64(colInfo.NumericPrecision)
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateFloat64Config{
- GenerateFloat64Config: &mgmtv1alpha1.GenerateFloat64{
- Precision: &precision, // todo: expose scale
- },
- },
- },
- }, nil
-
- // case "bit":
- // params := extractMysqlTypeParams(colInfo.MysqlColumnType)
- // bitLength := int64(1) // default length is 1
- // if len(params) > 0 {
- // if parsed, err := strconv.ParseInt(params[0], 10, 64); err == nil && parsed > 0 && parsed <= 64 {
- // bitLength = parsed
- // }
- // }
- // return &mgmtv1alpha1.JobMappingTransformer{
- // Config: &mgmtv1alpha1.TransformerConfig{
- // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- // Code: fmt.Sprintf(`
- // // Generate random bits up to specified length
- // const length = %d;
- // let value = 0;
- // for (let i = 0; i < length; i++) {
- // if (Math.random() < 0.5) {
- // value |= (1 << i);
- // }
- // }
- // // Convert to binary string padded to the correct length
- // return value.toString(2).padStart(length, '0');
- // `, bitLength),
- // },
- // },
- // },
- // }, nil
- // case "binary", "varbinary":
- // params := extractMysqlTypeParams(colInfo.DataType)
- // maxLength := int64(255) // default max length
- // if len(params) > 0 {
- // if parsed, err := strconv.ParseInt(params[0], 10, 64); err == nil && parsed > 0 && parsed <= 255 {
- // maxLength = parsed
- // }
- // }
- // return &mgmtv1alpha1.JobMappingTransformer{
- // Config: &mgmtv1alpha1.TransformerConfig{
- // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- // Code: fmt.Sprintf(`
- // // Generate random binary data up to maxLength bytes
- // const maxLength = %d;
- // const length = Math.floor(Math.random() * maxLength) + 1;
- // const bytes = new Uint8Array(length);
- // for (let i = 0; i < length; i++) {
- // bytes[i] = Math.floor(Math.random() * 256);
- // }
- // // Convert to base64 for safe transport
- // return Buffer.from(bytes).toString('base64');
- // `, maxLength),
- // },
- // },
- // },
- // }, nil
- // case "tinyblob":
- // return &mgmtv1alpha1.JobMappingTransformer{
- // Config: &mgmtv1alpha1.TransformerConfig{
- // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- // Code: `
- // // Generate random TINYBLOB (max 255 bytes)
- // const maxLength = 255;
- // const length = Math.floor(Math.random() * maxLength) + 1;
- // const bytes = new Uint8Array(length);
- // for (let i = 0; i < length; i++) {
- // bytes[i] = Math.floor(Math.random() * 256);
- // }
- // return Buffer.from(bytes).toString('base64');
- // `,
- // },
- // },
- // },
- // }, nil
- // case "blob":
- // return &mgmtv1alpha1.JobMappingTransformer{
- // Config: &mgmtv1alpha1.TransformerConfig{
- // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- // Code: `
- // // Generate random BLOB (max 65,535 bytes)
- // // Using a smaller max for practical purposes
- // const maxLength = 1024; // Using 1KB for reasonable performance
- // const length = Math.floor(Math.random() * maxLength) + 1;
- // const bytes = new Uint8Array(length);
- // for (let i = 0; i < length; i++) {
- // bytes[i] = Math.floor(Math.random() * 256);
- // }
- // return Buffer.from(bytes).toString('base64');
- // `,
- // },
- // },
- // },
- // }, nil
- // case "mediumblob":
- // return &mgmtv1alpha1.JobMappingTransformer{
- // Config: &mgmtv1alpha1.TransformerConfig{
- // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- // Code: `
- // // Generate random MEDIUMBLOB (max 16,777,215 bytes)
- // // Using a smaller max for practical purposes
- // const maxLength = 2048; // Using 2KB for reasonable performance
- // const length = Math.floor(Math.random() * maxLength) + 1;
- // const bytes = new Uint8Array(length);
- // for (let i = 0; i < length; i++) {
- // bytes[i] = Math.floor(Math.random() * 256);
- // }
- // return Buffer.from(bytes).toString('base64');
- // `,
- // },
- // },
- // },
- // }, nil
- // case "longblob":
- // return &mgmtv1alpha1.JobMappingTransformer{
- // Config: &mgmtv1alpha1.TransformerConfig{
- // Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- // GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- // Code: `
- // // Generate random LONGBLOB (max 4,294,967,295 bytes)
- // // Using a smaller max for practical purposes
- // const maxLength = 4096; // Using 4KB for reasonable performance
- // const length = Math.floor(Math.random() * maxLength) + 1;
- // const bytes = new Uint8Array(length);
- // for (let i = 0; i < length; i++) {
- // bytes[i] = Math.floor(Math.random() * 256);
- // }
- // return Buffer.from(bytes).toString('base64');
- // `,
- // },
- // },
- // },
- // }, nil
-
- case "date":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, '0');
- const day = String(date.getDate()).padStart(2, '0');
- return year + "-" + month + "-" + day;
- `,
- },
- },
- },
- }, nil
- case "datetime", "timestamp":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, '0');
- const day = String(date.getDate()).padStart(2, '0');
- const hours = String(date.getHours()).padStart(2, '0');
- const minutes = String(date.getMinutes()).padStart(2, '0');
- const seconds = String(date.getSeconds()).padStart(2, '0');
- return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
- `,
- },
- },
- },
- }, nil
- case "time":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- const hours = String(date.getHours()).padStart(2, '0');
- const minutes = String(date.getMinutes()).padStart(2, '0');
- const seconds = String(date.getSeconds()).padStart(2, '0');
- return hours + ":" + minutes + ":" + seconds;
- `,
- },
- },
- },
- }, nil
- case "year":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateJavascriptConfig{
- GenerateJavascriptConfig: &mgmtv1alpha1.GenerateJavascript{
- Code: `
- const date = new Date();
- return date.getFullYear();
- `,
- },
- },
- },
- }, nil
- case "boolean", "bool":
- return &mgmtv1alpha1.JobMappingTransformer{
- Config: &mgmtv1alpha1.TransformerConfig{
- Config: &mgmtv1alpha1.TransformerConfig_GenerateBoolConfig{
- GenerateBoolConfig: &mgmtv1alpha1.GenerateBool{},
- },
- },
- }, nil
- default:
- return nil, fmt.Errorf(
- "uncountered unsupported data type %q for %q.%q.%q when attempting to generate an auto-mapper. To continue, provide a discrete job mapping for this column.: %w",
- colInfo.DataType,
- colInfo.TableSchema,
- colInfo.TableName,
- colInfo.ColumnName,
- errors.ErrUnsupported,
- )
- }
-}
-
-func cleanPostgresType(dataType string) string {
- parenIndex := strings.Index(dataType, "(")
- if parenIndex == -1 {
- return dataType
- }
- return strings.TrimSpace(dataType[:parenIndex])
-}
-
-func cleanMysqlType(dataType string) string {
- parenIndex := strings.Index(dataType, "(")
- if parenIndex == -1 {
- return dataType
- }
- return strings.TrimSpace(dataType[:parenIndex])
-}
-
-// extractMysqlTypeParams extracts the parameters from MySQL data type definitions
-// Examples:
-// - CHAR(10) -> ["10"]
-// - FLOAT(10, 2) -> ["10", "2"]
-// - ENUM('val1', 'val2') -> ["val1", "val2"]
-func extractMysqlTypeParams(dataType string) []string {
- parenIndex := strings.Index(dataType, "(")
- if parenIndex == -1 {
- return nil
- }
-
- closingIndex := strings.LastIndex(dataType, ")")
- if closingIndex == -1 {
- return nil
- }
-
- // Extract content between parentheses
- paramsStr := dataType[parenIndex+1 : closingIndex]
-
- // Handle ENUM/SET cases which use quotes
- if strings.Contains(paramsStr, "'") {
- // Split by comma and handle quoted values
- params := strings.Split(paramsStr, ",")
- result := make([]string, 0, len(params))
- for _, p := range params {
- // Remove quotes and whitespace
- p = strings.Trim(strings.TrimSpace(p), "'")
- if p != "" {
- result = append(result, p)
- }
- }
- return result
- }
-
- // Handle regular numeric parameters
- params := strings.Split(paramsStr, ",")
- result := make([]string, 0, len(params))
- for _, p := range params {
- p = strings.TrimSpace(p)
- if p != "" {
- result = append(result, p)
- }
- }
- return result
-}
-
func shouldOverrideColumnDefault(
columnDefaults map[string]*neosync_benthos.ColumnDefaultProperties,
) bool {
diff --git a/internal/benthos/benthos-builder/builders/sql.go b/internal/benthos/benthos-builder/builders/sql.go
index 6f8e5630d5..c1f55a4cd4 100644
--- a/internal/benthos/benthos-builder/builders/sql.go
+++ b/internal/benthos/benthos-builder/builders/sql.go
@@ -2,10 +2,8 @@ package benthosbuilder_builders
import (
"context"
- "errors"
"fmt"
"log/slog"
- "strings"
mgmtv1alpha1 "github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1"
"github.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1/mgmtv1alpha1connect"
@@ -13,6 +11,9 @@ import (
"github.com/nucleuscloud/neosync/backend/pkg/sqlmanager"
sqlmanager_mssql "github.com/nucleuscloud/neosync/backend/pkg/sqlmanager/mssql"
sqlmanager_shared "github.com/nucleuscloud/neosync/backend/pkg/sqlmanager/shared"
+ cascade_settings "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/settings"
+ jobmapping_builder_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/shared"
+ jobmapping_builder_sql "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/builders/jobmapping-builder/sql"
bb_internal "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/internal"
bb_shared "github.com/nucleuscloud/neosync/internal/benthos/benthos-builder/shared"
connectionmanager "github.com/nucleuscloud/neosync/internal/connection-manager"
@@ -37,7 +38,9 @@ type sqlSyncBuilder struct {
// merged source and destination schema. with preference given to destination schema
mergedSchemaColumnMap map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow // schema.table -> column -> column info struct
configQueryMap map[string]*sqlmanager_shared.SelectQuery // config id -> query info
- tableDeferrableMap map[string]bool // schema.table -> true if table has at least one deferrable constraint
+
+ jobMappings []*shared.JobTransformationMapping
+ tableDeferrableMap map[string]bool // schema.table -> true if table has at least one deferrable constraint
}
func NewSqlSyncBuilder(
@@ -56,6 +59,63 @@ func NewSqlSyncBuilder(
}
}
+func isLegacyJob(job *mgmtv1alpha1.Job) bool {
+ return len(job.GetMappings()) > 0
+}
+
+func (b *sqlSyncBuilder) hydrateJobMappings(
+ job *mgmtv1alpha1.Job,
+ groupedColumnInfo map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+ logger *slog.Logger,
+) ([]*shared.JobTransformationMapping, error) {
+ if isLegacyJob(job) {
+ jmBuilder := jobmapping_builder_sql.NewLegacySqlJobMappingBuilder(job, groupedColumnInfo, b.driver, logger)
+ jobMappings, err := jmBuilder.BuildJobMappings()
+ if err != nil {
+ return nil, fmt.Errorf("unable to build legacy job mappings: %w", err)
+ }
+ return jobMappings, nil
+ }
+
+ syncConfig := job.GetJobType().GetSync()
+ if syncConfig == nil {
+ return nil, fmt.Errorf("unable to hydrate job mappings: sync config not found")
+ }
+
+ schemaTableColumnDbInfo := getSchemaTableColumnDbInfo(groupedColumnInfo)
+
+ jmBuilder := jobmapping_builder_sql.NewSqlJobMappingBuilder(
+ cascade_settings.NewCascadeSchemaSettings(syncConfig, logger),
+ schemaTableColumnDbInfo,
+ schemaTableColumnDbInfo,
+ ) // todo: add dest db info
+ jobMappings, err := jmBuilder.BuildJobMappings()
+ if err != nil {
+ return nil, fmt.Errorf("unable to build job mappings: %w", err)
+ }
+ return jobMappings, nil
+}
+
+// outputs schema -> table -> []column info
+func getSchemaTableColumnDbInfo(
+ groupedColumnInfo map[string]map[string]*sqlmanager_shared.DatabaseSchemaRow,
+) map[string]map[string][]*sqlmanager_shared.DatabaseSchemaRow {
+ output := map[string]map[string][]*sqlmanager_shared.DatabaseSchemaRow{}
+
+ for _, columnMap := range groupedColumnInfo {
+ for _, row := range columnMap {
+ tableMap, ok := output[row.TableSchema]
+ if !ok {
+ tableMap = map[string][]*sqlmanager_shared.DatabaseSchemaRow{}
+ }
+ tableMap[row.TableName] = append(tableMap[row.TableName], row)
+ output[row.TableSchema] = tableMap
+ }
+ }
+
+ return output
+}
+
func (b *sqlSyncBuilder) BuildSourceConfigs(
ctx context.Context,
params *bb_internal.SourceParams,
@@ -89,70 +149,17 @@ func (b *sqlSyncBuilder) BuildSourceConfigs(
return nil, fmt.Errorf("unable to get database schema for connection: %w", err)
}
- b.sqlSourceSchemaColumnInfoMap = groupedColumnInfo
- if sqlSourceOpts != nil && sqlSourceOpts.HaltOnNewColumnAddition {
- newColumns, shouldHalt := shouldHaltOnSchemaAddition(groupedColumnInfo, job.Mappings)
- if shouldHalt {
- return nil, fmt.Errorf(
- "%s: [%s]",
- haltOnSchemaAdditionErrMsg,
- strings.Join(newColumns, ", "),
- )
- }
- }
-
- if sqlSourceOpts != nil && sqlSourceOpts.HaltOnColumnRemoval {
- missing, shouldHalt := isSourceMissingColumnsFoundInMappings(
- groupedColumnInfo,
- job.Mappings,
- )
- if shouldHalt {
- return nil, fmt.Errorf(
- "%s: [%s]",
- haltOnSchemaAdditionErrMsg,
- strings.Join(missing, ", "),
- )
- }
+ jobMappings, err := b.hydrateJobMappings(job, groupedColumnInfo, logger)
+ if err != nil {
+ return nil, fmt.Errorf("unable to hydrate job mappings: %w", err)
}
- // remove mappings that are not found in the source
- existingSourceMappings := removeMappingsNotFoundInSource(job.Mappings, groupedColumnInfo)
-
- if sqlSourceOpts != nil && sqlSourceOpts.PassthroughOnNewColumnAddition {
- extraMappings, err := getAdditionalPassthroughJobMappings(
- groupedColumnInfo,
- existingSourceMappings,
- splitKeyToTablePieces,
- logger,
- )
- if err != nil {
- return nil, err
- }
- logger.Debug(
- fmt.Sprintf("adding %d extra passthrough mappings due to unmapped columns", len(extraMappings)),
- )
- existingSourceMappings = append(existingSourceMappings, extraMappings...)
- }
+ b.sqlSourceSchemaColumnInfoMap = groupedColumnInfo
+ b.jobMappings = jobMappings // needed when building destination config
- if sqlSourceOpts != nil && sqlSourceOpts.GenerateNewColumnTransformers {
- extraMappings, err := getAdditionalJobMappings(
- b.driver,
- groupedColumnInfo,
- existingSourceMappings,
- splitKeyToTablePieces,
- logger,
- )
- if err != nil {
- return nil, err
- }
- logger.Debug(
- fmt.Sprintf("adding %d extra mappings due to unmapped columns", len(extraMappings)),
- )
- existingSourceMappings = append(existingSourceMappings, extraMappings...)
- }
- uniqueSchemas := shared.GetUniqueSchemasFromMappings(existingSourceMappings)
+ uniqueSchemas := shared.GetUniqueSchemasFromMappings(jobMappings)
- schemaTablesMap := shared.GetSchemaTablesMapFromMappings(existingSourceMappings)
+ schemaTablesMap := shared.GetSchemaTablesMapFromMappings(jobMappings)
tableDeferrableMap, err := getTableDeferrableMap(ctx, db, sourceConnection, schemaTablesMap)
if err != nil {
return nil, fmt.Errorf("unable to get table deferrable map: %w", err)
@@ -186,7 +193,7 @@ func (b *sqlSyncBuilder) BuildSourceConfigs(
),
)
- groupedMappings := groupMappingsByTable(existingSourceMappings)
+ groupedMappings := groupMappingsByTable(jobMappings)
groupedTableMapping := getTableMappingsMap(groupedMappings)
colTransformerMap := getColumnTransformerMap(
groupedTableMapping,
@@ -245,14 +252,6 @@ func (b *sqlSyncBuilder) BuildSourceConfigs(
return configs, nil
}
-func splitKeyToTablePieces(key string) (schema, table string, err error) {
- pieces := strings.SplitN(key, ".", 2)
- if len(pieces) != 2 {
- return "", "", errors.New("unable to split key to get schema and table, not 2 pieces")
- }
- return pieces[0], pieces[1], nil
-}
-
// TODO: remove tableDependencies and use runconfig's foreign keys
func buildBenthosSqlSourceConfigResponses(
slogger *slog.Logger,
@@ -274,7 +273,7 @@ func buildBenthosSqlSourceConfigResponses(
transformedForeignKeyToSourceMap := getTransformedFksMap(tableDependencies, colTransformerMap)
for _, config := range runconfigs {
- mappings, ok := groupedTableMapping[config.Table()]
+ tableMapping, ok := groupedTableMapping[config.Table()]
if !ok {
return nil, fmt.Errorf("missing column mappings for table: %s", config.Table())
}
@@ -325,7 +324,7 @@ func buildBenthosSqlSourceConfigResponses(
transformedFktoPkMap,
jobId,
runId,
- mappings.Mappings,
+ tableMapping.Mappings,
colInfoMap,
nil,
[]string{},
@@ -337,7 +336,7 @@ func buildBenthosSqlSourceConfigResponses(
bc.Pipeline.Processors = append(bc.Pipeline.Processors, *pc)
}
- cursors, err := buildIdentityCursors(ctx, transformerclient, mappings.Mappings)
+ cursors, err := buildIdentityCursors(ctx, transformerclient, tableMapping.Mappings)
if err != nil {
return nil, fmt.Errorf("unable to build identity cursors: %w", err)
}
@@ -350,16 +349,16 @@ func buildBenthosSqlSourceConfigResponses(
BenthosDsns: []*bb_shared.BenthosDsn{{ConnectionId: dsnConnectionId}},
- TableSchema: mappings.Schema,
- TableName: mappings.Table,
+ TableSchema: tableMapping.Schema,
+ TableName: tableMapping.Table,
Columns: config.InsertColumns(),
PrimaryKeys: config.PrimaryKeys(),
ColumnIdentityCursors: cursors,
Metriclabels: metrics.MetricLabels{
- metrics.NewEqLabel(metrics.TableSchemaLabel, mappings.Schema),
- metrics.NewEqLabel(metrics.TableNameLabel, mappings.Table),
+ metrics.NewEqLabel(metrics.TableSchemaLabel, tableMapping.Schema),
+ metrics.NewEqLabel(metrics.TableNameLabel, tableMapping.Table),
metrics.NewEqLabel(metrics.JobTypeLabel, "sync"),
},
})
@@ -372,6 +371,15 @@ func (b *sqlSyncBuilder) BuildDestinationConfig(
params *bb_internal.DestinationParams,
) (*bb_internal.BenthosDestinationConfig, error) {
logger := params.Logger
+ // need to do this due to the CLI not actually calling BuildSource
+ // So we need to conditionally use the job mappings from the builder for the CLI to work properly
+ var jobMappings []*shared.JobTransformationMapping
+ if len(b.jobMappings) > 0 {
+ jobMappings = b.jobMappings
+ } else {
+ jobMappings = jobmapping_builder_shared.JobMappingsFromLegacyMappings(params.Job.GetMappings())
+ }
+
benthosConfig := params.SourceConfig
tableKey := neosync_benthos.BuildBenthosTable(
benthosConfig.TableSchema,
@@ -416,7 +424,7 @@ func (b *sqlSyncBuilder) BuildDestinationConfig(
colTransformerMap := b.colTransformerMap
// lazy load
if len(colTransformerMap) == 0 {
- groupedMappings := groupMappingsByTable(params.Job.Mappings)
+ groupedMappings := groupMappingsByTable(jobMappings)
groupedTableMapping := getTableMappingsMap(groupedMappings)
colTMap := getColumnTransformerMap(
groupedTableMapping,
diff --git a/python/src/neosync/mgmt/v1alpha1/job_pb2.py b/python/src/neosync/mgmt/v1alpha1/job_pb2.py
index a85b63e478..7c98d110af 100644
--- a/python/src/neosync/mgmt/v1alpha1/job_pb2.py
+++ b/python/src/neosync/mgmt/v1alpha1/job_pb2.py
@@ -28,7 +28,7 @@
from mgmt.v1alpha1 import transformer_pb2 as mgmt_dot_v1alpha1_dot_transformer__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17mgmt/v1alpha1/job.proto\x12\rmgmt.v1alpha1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#mgmt/v1alpha1/connection_data.proto\x1a\x1fmgmt/v1alpha1/transformer.proto\"9\n\x0eGetJobsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"9\n\x0fGetJobsResponse\x12&\n\x04jobs\x18\x01 \x03(\x0b\x32\x12.mgmt.v1alpha1.JobR\x04jobs\"N\n\tJobSource\x12\x41\n\x07options\x18\x01 \x01(\x0b\x32\x1f.mgmt.v1alpha1.JobSourceOptionsB\x06\xbaH\x03\xc8\x01\x01R\x07options\"\xe9\x04\n\x10JobSourceOptions\x12L\n\x08postgres\x18\x01 \x01(\x0b\x32..mgmt.v1alpha1.PostgresSourceConnectionOptionsH\x00R\x08postgres\x12\x44\n\x06\x61ws_s3\x18\x02 \x01(\x0b\x32+.mgmt.v1alpha1.AwsS3SourceConnectionOptionsH\x00R\x05\x61wsS3\x12\x43\n\x05mysql\x18\x03 \x01(\x0b\x32+.mgmt.v1alpha1.MysqlSourceConnectionOptionsH\x00R\x05mysql\x12\x42\n\x08generate\x18\x04 \x01(\x0b\x32$.mgmt.v1alpha1.GenerateSourceOptionsH\x00R\x08generate\x12I\n\x0b\x61i_generate\x18\x05 \x01(\x0b\x32&.mgmt.v1alpha1.AiGenerateSourceOptionsH\x00R\naiGenerate\x12I\n\x07mongodb\x18\x06 \x01(\x0b\x32-.mgmt.v1alpha1.MongoDBSourceConnectionOptionsH\x00R\x07mongodb\x12L\n\x08\x64ynamodb\x18\x07 \x01(\x0b\x32..mgmt.v1alpha1.DynamoDBSourceConnectionOptionsH\x00R\x08\x64ynamodb\x12\x43\n\x05mssql\x18\x08 \x01(\x0b\x32+.mgmt.v1alpha1.MssqlSourceConnectionOptionsH\x00R\x05mssqlB\x0f\n\x06\x63onfig\x12\x05\xbaH\x02\x08\x01\"\x85\x01\n\x14\x43reateJobDestination\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12>\n\x07options\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.JobDestinationOptionsR\x07options\"\x8f\x01\n\x0eJobDestination\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12>\n\x07options\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.JobDestinationOptionsR\x07options\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02id\"\xb6\x03\n\x17\x41iGenerateSourceOptions\x12\x32\n\x10\x61i_connection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0e\x61iConnectionId\x12O\n\x07schemas\x18\x02 \x03(\x0b\x32+.mgmt.v1alpha1.AiGenerateSourceSchemaOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x07schemas\x12\x44\n\x17\x66k_source_connection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x14\x66kSourceConnectionId\x88\x01\x01\x12&\n\nmodel_name\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\tmodelName\x12$\n\x0buser_prompt\x18\x05 \x01(\tH\x01R\nuserPrompt\x88\x01\x01\x12>\n\x13generate_batch_size\x18\x06 \x01(\x03\x42\t\xbaH\x06\"\x04\x18\x64(\x01H\x02R\x11generateBatchSize\x88\x01\x01\x42\x1a\n\x18_fk_source_connection_idB\x0e\n\x0c_user_promptB\x16\n\x14_generate_batch_size\"\x8d\x01\n\x1c\x41iGenerateSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12L\n\x06tables\x18\x02 \x03(\x0b\x32*.mgmt.v1alpha1.AiGenerateSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"e\n\x1b\x41iGenerateSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12\'\n\trow_count\x18\x02 \x01(\x03\x42\n\xbaH\x07\"\x05\x18\xe8\x07(\x01R\x08rowCount\"\xce\x01\n\x15GenerateSourceOptions\x12M\n\x07schemas\x18\x01 \x03(\x0b\x32).mgmt.v1alpha1.GenerateSourceSchemaOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x07schemas\x12\x44\n\x17\x66k_source_connection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x14\x66kSourceConnectionId\x88\x01\x01\x42\x1a\n\x18_fk_source_connection_idJ\x04\x08\x02\x10\x03\"\x89\x01\n\x1aGenerateSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12J\n\x06tables\x18\x02 \x03(\x0b\x32(.mgmt.v1alpha1.GenerateSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"`\n\x19GenerateSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12$\n\trow_count\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01R\x08rowCount\"O\n\x1eMongoDBSourceConnectionOptions\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\"\xaf\x02\n\x1f\x44ynamoDBSourceConnectionOptions\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12@\n\x06tables\x18\x02 \x03(\x0b\x32(.mgmt.v1alpha1.DynamoDBSourceTableOptionR\x06tables\x12\x65\n\x13unmapped_transforms\x18\x03 \x01(\x0b\x32\x34.mgmt.v1alpha1.DynamoDBSourceUnmappedTransformConfigR\x12unmappedTransforms\x12\x34\n\x16\x65nable_consistent_read\x18\x04 \x01(\x08R\x14\x65nableConsistentRead\"\x8f\x02\n%DynamoDBSourceUnmappedTransformConfig\x12\x32\n\x01\x62\x18\x01 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x01\x62\x12>\n\x07\x62oolean\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x07\x62oolean\x12\x32\n\x01n\x18\x04 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x01n\x12\x32\n\x01s\x18\x06 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x01sJ\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"s\n\x19\x44ynamoDBSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"\xb8\t\n\x1fPostgresSourceConnectionOptions\x12\x43\n\x07schemas\x18\x02 \x03(\x0b\x32).mgmt.v1alpha1.PostgresSourceSchemaOptionR\x07schemas\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12H\n!subset_by_foreign_key_constraints\x18\x04 \x01(\x08R\x1dsubsetByForeignKeyConstraints\x12\x89\x01\n\x1cnew_column_addition_strategy\x18\x05 \x01(\x0b\x32H.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategyR\x19newColumnAdditionStrategy\x12|\n\x17\x63olumn_removal_strategy\x18\x06 \x01(\x0b\x32\x44.mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategyR\x15\x63olumnRemovalStrategy\x1a\xa4\x03\n\x19NewColumnAdditionStrategy\x12m\n\x08halt_job\x18\x01 \x01(\x0b\x32P.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJobH\x00R\x07haltJob\x12m\n\x08\x61uto_map\x18\x02 \x01(\x0b\x32P.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMapH\x00R\x07\x61utoMap\x12x\n\x0bpassthrough\x18\x03 \x01(\x0b\x32T.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.PassthroughH\x00R\x0bpassthrough\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMap\x1a\r\n\x0bPassthroughB\n\n\x08strategy\x1a\x9f\x02\n\x15\x43olumnRemovalStrategy\x12i\n\x08halt_job\x18\x01 \x01(\x0b\x32L.mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJobH\x00R\x07haltJob\x12u\n\x0c\x63ontinue_job\x18\x02 \x01(\x0b\x32P.mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJobH\x00R\x0b\x63ontinueJob\x1a\t\n\x07HaltJob\x1a\r\n\x0b\x43ontinueJobB\n\n\x08strategyJ\x04\x08\x01\x10\x02\"\x89\x01\n\x1aPostgresSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12J\n\x06tables\x18\x02 \x03(\x0b\x32(.mgmt.v1alpha1.PostgresSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"s\n\x19PostgresSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"\xd9\t\n\x1cMysqlSourceConnectionOptions\x12@\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08\x42\x02\x18\x01R\x17haltOnNewColumnAddition\x12@\n\x07schemas\x18\x02 \x03(\x0b\x32&.mgmt.v1alpha1.MysqlSourceSchemaOptionR\x07schemas\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12H\n!subset_by_foreign_key_constraints\x18\x04 \x01(\x08R\x1dsubsetByForeignKeyConstraints\x12y\n\x17\x63olumn_removal_strategy\x18\x05 \x01(\x0b\x32\x41.mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategyR\x15\x63olumnRemovalStrategy\x12\x86\x01\n\x1cnew_column_addition_strategy\x18\x06 \x01(\x0b\x32\x45.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategyR\x19newColumnAdditionStrategy\x1a\x99\x02\n\x15\x43olumnRemovalStrategy\x12\x66\n\x08halt_job\x18\x01 \x01(\x0b\x32I.mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJobH\x00R\x07haltJob\x12r\n\x0c\x63ontinue_job\x18\x02 \x01(\x0b\x32M.mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJobH\x00R\x0b\x63ontinueJob\x1a\t\n\x07HaltJob\x1a\r\n\x0b\x43ontinueJobB\n\n\x08strategy\x1a\x9b\x03\n\x19NewColumnAdditionStrategy\x12j\n\x08halt_job\x18\x01 \x01(\x0b\x32M.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJobH\x00R\x07haltJob\x12j\n\x08\x61uto_map\x18\x02 \x01(\x0b\x32M.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMapH\x00R\x07\x61utoMap\x12u\n\x0bpassthrough\x18\x03 \x01(\x0b\x32Q.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.PassthroughH\x00R\x0bpassthrough\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMap\x1a\r\n\x0bPassthroughB\n\n\x08strategy\"\x83\x01\n\x17MysqlSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12G\n\x06tables\x18\x02 \x03(\x0b\x32%.mgmt.v1alpha1.MysqlSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"p\n\x16MysqlSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"\xe2\x08\n\x1cMssqlSourceConnectionOptions\x12@\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08\x42\x02\x18\x01R\x17haltOnNewColumnAddition\x12@\n\x07schemas\x18\x02 \x03(\x0b\x32&.mgmt.v1alpha1.MssqlSourceSchemaOptionR\x07schemas\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12H\n!subset_by_foreign_key_constraints\x18\x04 \x01(\x08R\x1dsubsetByForeignKeyConstraints\x12y\n\x17\x63olumn_removal_strategy\x18\x05 \x01(\x0b\x32\x41.mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategyR\x15\x63olumnRemovalStrategy\x12\x86\x01\n\x1cnew_column_addition_strategy\x18\x06 \x01(\x0b\x32\x45.mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategyR\x19newColumnAdditionStrategy\x1a\x99\x02\n\x15\x43olumnRemovalStrategy\x12\x66\n\x08halt_job\x18\x01 \x01(\x0b\x32I.mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJobH\x00R\x07haltJob\x12r\n\x0c\x63ontinue_job\x18\x02 \x01(\x0b\x32M.mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJobH\x00R\x0b\x63ontinueJob\x1a\t\n\x07HaltJob\x1a\r\n\x0b\x43ontinueJobB\n\n\x08strategy\x1a\xa4\x02\n\x19NewColumnAdditionStrategy\x12j\n\x08halt_job\x18\x01 \x01(\x0b\x32M.mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJobH\x00R\x07haltJob\x12u\n\x0bpassthrough\x18\x02 \x01(\x0b\x32Q.mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.PassthroughH\x00R\x0bpassthrough\x1a\t\n\x07HaltJob\x1a\r\n\x0bPassthroughB\n\n\x08strategy\"\x83\x01\n\x17MssqlSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12G\n\x06tables\x18\x02 \x03(\x0b\x32%.mgmt.v1alpha1.MssqlSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"p\n\x16MssqlSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"M\n\x1c\x41wsS3SourceConnectionOptions\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\"\xcf\x05\n\x15JobDestinationOptions\x12`\n\x10postgres_options\x18\x01 \x01(\x0b\x32\x33.mgmt.v1alpha1.PostgresDestinationConnectionOptionsH\x00R\x0fpostgresOptions\x12X\n\x0e\x61ws_s3_options\x18\x02 \x01(\x0b\x32\x30.mgmt.v1alpha1.AwsS3DestinationConnectionOptionsH\x00R\x0c\x61wsS3Options\x12W\n\rmysql_options\x18\x03 \x01(\x0b\x32\x30.mgmt.v1alpha1.MysqlDestinationConnectionOptionsH\x00R\x0cmysqlOptions\x12]\n\x0fmongodb_options\x18\x04 \x01(\x0b\x32\x32.mgmt.v1alpha1.MongoDBDestinationConnectionOptionsH\x00R\x0emongodbOptions\x12v\n\x18gcp_cloudstorage_options\x18\x05 \x01(\x0b\x32:.mgmt.v1alpha1.GcpCloudStorageDestinationConnectionOptionsH\x00R\x16gcpCloudstorageOptions\x12`\n\x10\x64ynamodb_options\x18\x06 \x01(\x0b\x32\x33.mgmt.v1alpha1.DynamoDBDestinationConnectionOptionsH\x00R\x0f\x64ynamodbOptions\x12W\n\rmssql_options\x18\x07 \x01(\x0b\x32\x30.mgmt.v1alpha1.MssqlDestinationConnectionOptionsH\x00R\x0cmssqlOptionsB\x0f\n\x06\x63onfig\x12\x05\xbaH\x02\x08\x01\"%\n#MongoDBDestinationConnectionOptions\"-\n+GcpCloudStorageDestinationConnectionOptions\"}\n$DynamoDBDestinationConnectionOptions\x12U\n\x0etable_mappings\x18\x01 \x03(\x0b\x32..mgmt.v1alpha1.DynamoDBDestinationTableMappingR\rtableMappings\"q\n\x1f\x44ynamoDBDestinationTableMapping\x12!\n\x0csource_table\x18\x01 \x01(\tR\x0bsourceTable\x12+\n\x11\x64\x65stination_table\x18\x02 \x01(\tR\x10\x64\x65stinationTable\"\xa4\x03\n$PostgresDestinationConnectionOptions\x12Q\n\x0etruncate_table\x18\x01 \x01(\x0b\x32*.mgmt.v1alpha1.PostgresTruncateTableConfigR\rtruncateTable\x12*\n\x11init_table_schema\x18\x02 \x01(\x08R\x0finitTableSchema\x12H\n\x0bon_conflict\x18\x03 \x01(\x0b\x32\'.mgmt.v1alpha1.PostgresOnConflictConfigR\nonConflict\x12=\n\x1bskip_foreign_key_violations\x18\x04 \x01(\x08R\x18skipForeignKeyViolations\x12\x30\n\x05\x62\x61tch\x18\x05 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\x12\x30\n\rmax_in_flight\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x42\x10\n\x0e_max_in_flight\"\xc8\x02\n\x18PostgresOnConflictConfig\x12!\n\ndo_nothing\x18\x01 \x01(\x08\x42\x02\x18\x01R\tdoNothing\x12_\n\x07nothing\x18\x02 \x01(\x0b\x32\x43.mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothingH\x00R\x07nothing\x12Z\n\x06update\x18\x03 \x01(\x0b\x32@.mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdateH\x00R\x06update\x1a\x1d\n\x1bPostgresOnConflictDoNothing\x1a\x1a\n\x18PostgresOnConflictUpdateB\x11\n\x08strategy\x12\x05\xbaH\x02\x08\x00\"m\n\x1bPostgresTruncateTableConfig\x12\x34\n\x16truncate_before_insert\x18\x01 \x01(\x08R\x14truncateBeforeInsert\x12\x18\n\x07\x63\x61scade\x18\x02 \x01(\x08R\x07\x63\x61scade\"\x9b\x03\n!MysqlDestinationConnectionOptions\x12N\n\x0etruncate_table\x18\x01 \x01(\x0b\x32\'.mgmt.v1alpha1.MysqlTruncateTableConfigR\rtruncateTable\x12*\n\x11init_table_schema\x18\x02 \x01(\x08R\x0finitTableSchema\x12\x45\n\x0bon_conflict\x18\x03 \x01(\x0b\x32$.mgmt.v1alpha1.MysqlOnConflictConfigR\nonConflict\x12=\n\x1bskip_foreign_key_violations\x18\x04 \x01(\x08R\x18skipForeignKeyViolations\x12\x30\n\x05\x62\x61tch\x18\x05 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\x12\x30\n\rmax_in_flight\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x42\x10\n\x0e_max_in_flight\"P\n\x18MysqlTruncateTableConfig\x12\x34\n\x16truncate_before_insert\x18\x01 \x01(\x08R\x14truncateBeforeInsert\"\xaf\x02\n\x15MysqlOnConflictConfig\x12\x1d\n\ndo_nothing\x18\x01 \x01(\x08R\tdoNothing\x12Y\n\x07nothing\x18\x02 \x01(\x0b\x32=.mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothingH\x00R\x07nothing\x12T\n\x06update\x18\x03 \x01(\x0b\x32:.mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdateH\x00R\x06update\x1a\x1a\n\x18MysqlOnConflictDoNothing\x1a\x17\n\x15MysqlOnConflictUpdateB\x11\n\x08strategy\x12\x05\xbaH\x02\x08\x00\"\x9b\x03\n!MssqlDestinationConnectionOptions\x12N\n\x0etruncate_table\x18\x01 \x01(\x0b\x32\'.mgmt.v1alpha1.MssqlTruncateTableConfigR\rtruncateTable\x12*\n\x11init_table_schema\x18\x02 \x01(\x08R\x0finitTableSchema\x12\x45\n\x0bon_conflict\x18\x03 \x01(\x0b\x32$.mgmt.v1alpha1.MssqlOnConflictConfigR\nonConflict\x12=\n\x1bskip_foreign_key_violations\x18\x04 \x01(\x08R\x18skipForeignKeyViolations\x12\x30\n\x05\x62\x61tch\x18\x05 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\x12\x30\n\rmax_in_flight\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x42\x10\n\x0e_max_in_flight\"P\n\x18MssqlTruncateTableConfig\x12\x34\n\x16truncate_before_insert\x18\x01 \x01(\x08R\x14truncateBeforeInsert\"6\n\x15MssqlOnConflictConfig\x12\x1d\n\ndo_nothing\x18\x01 \x01(\x08R\tdoNothing\"\xb9\x04\n!AwsS3DestinationConnectionOptions\x12\x62\n\rstorage_class\x18\x01 \x01(\x0e\x32=.mgmt.v1alpha1.AwsS3DestinationConnectionOptions.StorageClassR\x0cstorageClass\x12\x30\n\rmax_in_flight\x18\x02 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x12\x1d\n\x07timeout\x18\x03 \x01(\tH\x01R\x07timeout\x88\x01\x01\x12\x30\n\x05\x62\x61tch\x18\x04 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\"\x8e\x02\n\x0cStorageClass\x12\x1d\n\x19STORAGE_CLASS_UNSPECIFIED\x10\x00\x12\x1a\n\x16STORAGE_CLASS_STANDARD\x10\x01\x12$\n STORAGE_CLASS_REDUCED_REDUNDANCY\x10\x02\x12\x19\n\x15STORAGE_CLASS_GLACIER\x10\x03\x12\x1d\n\x19STORAGE_CLASS_STANDARD_IA\x10\x04\x12\x1c\n\x18STORAGE_CLASS_ONEZONE_IA\x10\x05\x12%\n!STORAGE_CLASS_INTELLIGENT_TIERING\x10\x06\x12\x1e\n\x1aSTORAGE_CLASS_DEEP_ARCHIVE\x10\x07\x42\x10\n\x0e_max_in_flightB\n\n\x08_timeout\"Z\n\x0b\x42\x61tchConfig\x12\x19\n\x05\x63ount\x18\x01 \x01(\rH\x00R\x05\x63ount\x88\x01\x01\x12\x1b\n\x06period\x18\x02 \x01(\tH\x01R\x06period\x88\x01\x01\x42\x08\n\x06_countB\t\n\x07_period\"\x94\x08\n\x10\x43reateJobRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x34\n\x08job_name\x18\x02 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x07jobName\x12(\n\rcron_schedule\x18\x03 \x01(\tH\x00R\x0c\x63ronSchedule\x88\x01\x01\x12\x35\n\x08mappings\x18\x04 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12\x30\n\x06source\x18\x05 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceR\x06source\x12G\n\x0c\x64\x65stinations\x18\x06 \x03(\x0b\x32#.mgmt.v1alpha1.CreateJobDestinationR\x0c\x64\x65stinations\x12(\n\x10initiate_job_run\x18\x07 \x01(\x08R\x0einitiateJobRun\x12I\n\x10workflow_options\x18\x08 \x01(\x0b\x32\x1e.mgmt.v1alpha1.WorkflowOptionsR\x0fworkflowOptions\x12\x41\n\x0csync_options\x18\t \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityOptionsR\x0bsyncOptions\x12Y\n\x14virtual_foreign_keys\x18\n \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12<\n\x08job_type\x18\x0b \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobTypeConfigH\x01R\x07jobType\x88\x01\x01:\xd4\x02\xbaH\xd0\x02\x1a\x9f\x01\n\x1amappings_required_for_sync\x12/For sync jobs, at least one mapping is required\x1aP!has(this.job_type) || has(this.job_type.sync) ? size(this.mappings) >= 1 : true\x1a\xab\x01\n\x1e\x64\x65stinations_required_for_sync\x12\x33\x46or sync jobs, at least one destination is required\x1aT!has(this.job_type) || has(this.job_type.sync) ? size(this.destinations) >= 1 : trueB\x10\n\x0e_cron_scheduleB\x0b\n\t_job_type\"\xbd\t\n\rJobTypeConfig\x12>\n\x04sync\x18\x01 \x01(\x0b\x32(.mgmt.v1alpha1.JobTypeConfig.JobTypeSyncH\x00R\x04sync\x12N\n\npii_detect\x18\x02 \x01(\x0b\x32-.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetectH\x00R\tpiiDetect\x1a\r\n\x0bJobTypeSync\x1a\xf9\x07\n\x10JobTypePiiDetect\x12_\n\rdata_sampling\x18\x01 \x01(\x0b\x32:.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSamplingR\x0c\x64\x61taSampling\x12i\n\x11table_scan_filter\x18\x02 \x01(\x0b\x32=.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilterR\x0ftableScanFilter\x12$\n\x0buser_prompt\x18\x03 \x01(\tH\x00R\nuserPrompt\x88\x01\x01\x12`\n\x0bincremental\x18\x04 \x01(\x0b\x32\x39.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncrementalH\x01R\x0bincremental\x88\x01\x01\x1a,\n\x0bIncremental\x12\x1d\n\nis_enabled\x18\x01 \x01(\x08R\tisEnabled\x1a-\n\x0c\x44\x61taSampling\x12\x1d\n\nis_enabled\x18\x01 \x01(\x08R\tisEnabled\x1a\xaf\x02\n\x0fTableScanFilter\x12[\n\x0binclude_all\x18\x01 \x01(\x0b\x32\x38.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAllH\x00R\nincludeAll\x12W\n\x07include\x18\x02 \x01(\x0b\x32;.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatternsH\x00R\x07include\x12W\n\x07\x65xclude\x18\x03 \x01(\x0b\x32;.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatternsH\x00R\x07\x65xcludeB\r\n\x04mode\x12\x05\xbaH\x02\x08\x01\x1a\x0c\n\nIncludeAll\x1a\x80\x01\n\rTablePatterns\x12\x18\n\x07schemas\x18\x01 \x03(\tR\x07schemas\x12U\n\x06tables\x18\x02 \x03(\x0b\x32=.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifierR\x06tables\x1aQ\n\x0fTableIdentifier\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12\x1d\n\x05table\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05tableB\x0e\n\x0c_user_promptB\x0e\n\x0c_incrementalB\x11\n\x08job_type\x12\x05\xbaH\x02\x08\x00\"q\n\x0fWorkflowOptions\x12$\n\x0brun_timeout\x18\x08 \x01(\x03H\x00R\nrunTimeout\x88\x01\x01\x42\x0e\n\x0c_run_timeoutJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"\x95\x02\n\x0f\x41\x63tivityOptions\x12G\n\x19schedule_to_close_timeout\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x00R\x16scheduleToCloseTimeout\x88\x01\x01\x12\x41\n\x16start_to_close_timeout\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x01R\x13startToCloseTimeout\x88\x01\x01\x12=\n\x0cretry_policy\x18\x03 \x01(\x0b\x32\x1a.mgmt.v1alpha1.RetryPolicyR\x0bretryPolicyB\x1c\n\x1a_schedule_to_close_timeoutB\x19\n\x17_start_to_close_timeout\"[\n\x0bRetryPolicy\x12\x37\n\x10maximum_attempts\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00H\x00R\x0fmaximumAttempts\x88\x01\x01\x42\x13\n\x11_maximum_attempts\"9\n\x11\x43reateJobResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"W\n\x15JobMappingTransformer\x12\x38\n\x06\x63onfig\x18\x03 \x01(\x0b\x32 .mgmt.v1alpha1.TransformerConfigR\x06\x63onfigJ\x04\x08\x01\x10\x02\"\xb5\x01\n\nJobMapping\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12\x1d\n\x05table\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12\x1f\n\x06\x63olumn\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x63olumn\x12\x46\n\x0btransformer\x18\x05 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x0btransformer\")\n\rGetJobRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"6\n\x0eGetJobResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"p\n\x18UpdateJobScheduleRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12(\n\rcron_schedule\x18\x02 \x01(\tH\x00R\x0c\x63ronSchedule\x88\x01\x01\x42\x10\n\x0e_cron_schedule\"A\n\x19UpdateJobScheduleResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"c\n\x0fPauseJobRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x14\n\x05pause\x18\x02 \x01(\x08R\x05pause\x12\x17\n\x04note\x18\x03 \x01(\tH\x00R\x04note\x88\x01\x01\x42\x07\n\x05_note\"8\n\x10PauseJobResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"\xb9\x02\n UpdateJobSourceConnectionRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x30\n\x06source\x18\x02 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceR\x06source\x12\x35\n\x08mappings\x18\x03 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12Y\n\x14virtual_foreign_keys\x18\x04 \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12\x37\n\x08job_type\x18\x05 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobTypeConfigR\x07jobType\"I\n!UpdateJobSourceConnectionResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"r\n\x1aPostgresSourceSchemaSubset\x12T\n\x10postgres_schemas\x18\x01 \x03(\x0b\x32).mgmt.v1alpha1.PostgresSourceSchemaOptionR\x0fpostgresSchemas\"f\n\x17MysqlSourceSchemaSubset\x12K\n\rmysql_schemas\x18\x01 \x03(\x0b\x32&.mgmt.v1alpha1.MysqlSourceSchemaOptionR\x0cmysqlSchemas\"^\n\x1a\x44ynamoDBSourceSchemaSubset\x12@\n\x06tables\x18\x01 \x03(\x0b\x32(.mgmt.v1alpha1.DynamoDBSourceTableOptionR\x06tables\"f\n\x17MssqlSourceSchemaSubset\x12K\n\rmssql_schemas\x18\x01 \x03(\x0b\x32&.mgmt.v1alpha1.MssqlSourceSchemaOptionR\x0cmssqlSchemas\"\xf8\x02\n\x18JobSourceSqlSubetSchemas\x12T\n\x0fpostgres_subset\x18\x02 \x01(\x0b\x32).mgmt.v1alpha1.PostgresSourceSchemaSubsetH\x00R\x0epostgresSubset\x12K\n\x0cmysql_subset\x18\x03 \x01(\x0b\x32&.mgmt.v1alpha1.MysqlSourceSchemaSubsetH\x00R\x0bmysqlSubset\x12T\n\x0f\x64ynamodb_subset\x18\x04 \x01(\x0b\x32).mgmt.v1alpha1.DynamoDBSourceSchemaSubsetH\x00R\x0e\x64ynamodbSubset\x12K\n\x0cmssql_subset\x18\x05 \x01(\x0b\x32&.mgmt.v1alpha1.MssqlSourceSchemaSubsetH\x00R\x0bmssqlSubsetB\x10\n\x07schemas\x12\x05\xbaH\x02\x08\x01J\x04\x08\x01\x10\x02\"\xd0\x01\n\'SetJobSourceSqlConnectionSubsetsRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x41\n\x07schemas\x18\x02 \x01(\x0b\x32\'.mgmt.v1alpha1.JobSourceSqlSubetSchemasR\x07schemas\x12H\n!subset_by_foreign_key_constraints\x18\x03 \x01(\x08R\x1dsubsetByForeignKeyConstraints\"P\n(SetJobSourceSqlConnectionSubsetsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"\xde\x01\n%UpdateJobDestinationConnectionRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12-\n\rconnection_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12>\n\x07options\x18\x03 \x01(\x0b\x32$.mgmt.v1alpha1.JobDestinationOptionsR\x07options\x12%\n\x0e\x64\x65stination_id\x18\x04 \x01(\tR\rdestinationId\"N\n&UpdateJobDestinationConnectionResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"X\n%DeleteJobDestinationConnectionRequest\x12/\n\x0e\x64\x65stination_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\rdestinationId\"(\n&DeleteJobDestinationConnectionResponse\"\x9c\x01\n&CreateJobDestinationConnectionsRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12Q\n\x0c\x64\x65stinations\x18\x02 \x03(\x0b\x32#.mgmt.v1alpha1.CreateJobDestinationB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0c\x64\x65stinations\"O\n\'CreateJobDestinationConnectionsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\",\n\x10\x44\x65leteJobRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\x13\n\x11\x44\x65leteJobResponse\"s\n\x19IsJobNameAvailableRequest\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"?\n\x1aIsJobNameAvailableResponse\x12!\n\x0cis_available\x18\x01 \x01(\x08R\x0bisAvailable\"g\n\x11GetJobRunsRequest\x12!\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05jobId\x12)\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\taccountIdB\x04\n\x02id\"F\n\x12GetJobRunsResponse\x12\x30\n\x08job_runs\x18\x01 \x03(\x0b\x32\x15.mgmt.v1alpha1.JobRunR\x07jobRuns\"Y\n\x10GetJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"C\n\x11GetJobRunResponse\x12.\n\x07job_run\x18\x01 \x01(\x0b\x32\x15.mgmt.v1alpha1.JobRunR\x06jobRun\"6\n\x13\x43reateJobRunRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"\x16\n\x14\x43reateJobRunResponse\"\\\n\x13\x43\x61ncelJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\x16\n\x14\x43\x61ncelJobRunResponse\"\xa2\x06\n\x03Job\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12+\n\x12\x63reated_by_user_id\x18\x02 \x01(\tR\x0f\x63reatedByUserId\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x12updated_by_user_id\x18\x04 \x01(\tR\x0fupdatedByUserId\x12\x39\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x12\n\x04name\x18\x06 \x01(\tR\x04name\x12\x30\n\x06source\x18\x07 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceR\x06source\x12\x41\n\x0c\x64\x65stinations\x18\x08 \x03(\x0b\x32\x1d.mgmt.v1alpha1.JobDestinationR\x0c\x64\x65stinations\x12\x35\n\x08mappings\x18\t \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12(\n\rcron_schedule\x18\n \x01(\tH\x00R\x0c\x63ronSchedule\x88\x01\x01\x12\x1d\n\naccount_id\x18\x0b \x01(\tR\taccountId\x12\x41\n\x0csync_options\x18\x0c \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityOptionsR\x0bsyncOptions\x12I\n\x10workflow_options\x18\r \x01(\x0b\x32\x1e.mgmt.v1alpha1.WorkflowOptionsR\x0fworkflowOptions\x12Y\n\x14virtual_foreign_keys\x18\x0e \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12\x37\n\x08job_type\x18\x0f \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobTypeConfigR\x07jobTypeB\x10\n\x0e_cron_schedule\"g\n\x0cJobRecentRun\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x1c\n\njob_run_id\x18\x02 \x01(\tR\x08jobRunId\":\n\x17GetJobRecentRunsRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"X\n\x18GetJobRecentRunsResponse\x12<\n\x0brecent_runs\x18\x01 \x03(\x0b\x32\x1b.mgmt.v1alpha1.JobRecentRunR\nrecentRuns\"O\n\x0bJobNextRuns\x12@\n\x0enext_run_times\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.TimestampR\x0cnextRunTimes\"8\n\x15GetJobNextRunsRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"Q\n\x16GetJobNextRunsResponse\x12\x37\n\tnext_runs\x18\x01 \x01(\x0b\x32\x1a.mgmt.v1alpha1.JobNextRunsR\x08nextRuns\"6\n\x13GetJobStatusRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"H\n\x14GetJobStatusResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32\x18.mgmt.v1alpha1.JobStatusR\x06status\"d\n\x0fJobStatusRecord\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12\x30\n\x06status\x18\x02 \x01(\x0e\x32\x18.mgmt.v1alpha1.JobStatusR\x06status\"@\n\x15GetJobStatusesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"T\n\x16GetJobStatusesResponse\x12:\n\x08statuses\x18\x01 \x03(\x0b\x32\x1e.mgmt.v1alpha1.JobStatusRecordR\x08statuses\"+\n\x0f\x41\x63tivityFailure\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\"\xc6\x01\n\x0fPendingActivity\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32\x1d.mgmt.v1alpha1.ActivityStatusR\x06status\x12#\n\ractivity_name\x18\x02 \x01(\tR\x0c\x61\x63tivityName\x12\x46\n\x0clast_failure\x18\x03 \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityFailureH\x00R\x0blastFailure\x88\x01\x01\x42\x0f\n\r_last_failure\"\xdd\x02\n\x06JobRun\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x33\n\x06status\x18\x04 \x01(\x0e\x32\x1b.mgmt.v1alpha1.JobRunStatusR\x06status\x12\x39\n\nstarted_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x42\n\x0c\x63ompleted_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x0b\x63ompletedAt\x88\x01\x01\x12M\n\x12pending_activities\x18\x08 \x03(\x0b\x32\x1e.mgmt.v1alpha1.PendingActivityR\x11pendingActivitiesB\x0f\n\r_completed_atJ\x04\x08\x05\x10\x06\"Q\n\x14JobRunEventTaskError\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\x12\x1f\n\x0bretry_state\x18\x02 \x01(\tR\nretryState\"\xab\x01\n\x0fJobRunEventTask\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x39\n\nevent_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\teventTime\x12\x39\n\x05\x65rror\x18\x04 \x01(\x0b\x32#.mgmt.v1alpha1.JobRunEventTaskErrorR\x05\x65rror\"B\n\x12JobRunSyncMetadata\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\"r\n\x13JobRunEventMetadata\x12H\n\rsync_metadata\x18\x01 \x01(\x0b\x32!.mgmt.v1alpha1.JobRunSyncMetadataH\x00R\x0csyncMetadataB\x11\n\x08metadata\x12\x05\xbaH\x02\x08\x01\"\x9d\x02\n\x0bJobRunEvent\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x39\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x39\n\nclose_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcloseTime\x12>\n\x08metadata\x18\x05 \x01(\x0b\x32\".mgmt.v1alpha1.JobRunEventMetadataR\x08metadata\x12\x34\n\x05tasks\x18\x06 \x03(\x0b\x32\x1e.mgmt.v1alpha1.JobRunEventTaskR\x05tasks\"_\n\x16GetJobRunEventsRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"u\n\x17GetJobRunEventsResponse\x12\x32\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.JobRunEventR\x06\x65vents\x12&\n\x0fis_run_complete\x18\x02 \x01(\x08R\risRunComplete\"\\\n\x13\x44\x65leteJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\x16\n\x14\x44\x65leteJobRunResponse\"_\n\x16TerminateJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\x19\n\x17TerminateJobRunResponse\"\xb2\x02\n\x1aGetJobRunLogsStreamRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x30\n\x06window\x18\x03 \x01(\x0e\x32\x18.mgmt.v1alpha1.LogWindowR\x06window\x12\x1f\n\x0bshould_tail\x18\x04 \x01(\x08R\nshouldTail\x12\x30\n\rmax_log_lines\x18\x05 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x00R\x0bmaxLogLines\x88\x01\x01\x12\x36\n\nlog_levels\x18\x06 \x03(\x0e\x32\x17.mgmt.v1alpha1.LogLevelR\tlogLevelsB\x10\n\x0e_max_log_lines\"\x90\x02\n\x1bGetJobRunLogsStreamResponse\x12\x19\n\x08log_line\x18\x01 \x01(\tR\x07logLine\x12=\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x88\x01\x01\x12N\n\x06labels\x18\x03 \x03(\x0b\x32\x36.mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0c\n\n_timestamp\"\x8b\x02\n\x14GetJobRunLogsRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x30\n\x06window\x18\x03 \x01(\x0e\x32\x18.mgmt.v1alpha1.LogWindowR\x06window\x12\x30\n\rmax_log_lines\x18\x04 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x00R\x0bmaxLogLines\x88\x01\x01\x12\x36\n\nlog_levels\x18\x05 \x03(\x0e\x32\x17.mgmt.v1alpha1.LogLevelR\tlogLevelsB\x10\n\x0e_max_log_lines\"\xe3\x02\n\x15GetJobRunLogsResponse\x12I\n\tlog_lines\x18\x01 \x03(\x0b\x32,.mgmt.v1alpha1.GetJobRunLogsResponse.LogLineR\x08logLines\x1a\xfe\x01\n\x07LogLine\x12\x19\n\x08log_line\x18\x01 \x01(\tR\x07logLine\x12=\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x88\x01\x01\x12P\n\x06labels\x18\x03 \x03(\x0b\x32\x38.mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0c\n\n_timestamp\"\x83\x01\n\x1cSetJobWorkflowOptionsRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12I\n\x10worfklow_options\x18\x02 \x01(\x0b\x32\x1e.mgmt.v1alpha1.WorkflowOptionsR\x0fworfklowOptions\"E\n\x1dSetJobWorkflowOptionsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"w\n\x18SetJobSyncOptionsRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x41\n\x0csync_options\x18\x02 \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityOptionsR\x0bsyncOptions\"A\n\x19SetJobSyncOptionsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"\xd3\x02\n\x1aValidateJobMappingsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x35\n\x08mappings\x18\x02 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12Y\n\x14virtual_foreign_keys\x18\x04 \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12<\n\njob_source\x18\x05 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceH\x00R\tjobSource\x88\x01\x01\x42\r\n\x0b_job_source\"\xe7\x07\n\x0b\x43olumnError\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x16\n\x06\x63olumn\x18\x03 \x01(\tR\x06\x63olumn\x12\x1a\n\x06\x65rrors\x18\x04 \x03(\tB\x02\x18\x01R\x06\x65rrors\x12Q\n\rerror_reports\x18\x05 \x03(\x0b\x32,.mgmt.v1alpha1.ColumnError.ColumnErrorReportR\x0c\x65rrorReports\x1am\n\x11\x43olumnErrorReport\x12>\n\x04\x63ode\x18\x01 \x01(\x0e\x32*.mgmt.v1alpha1.ColumnError.ColumnErrorCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\xb3\x05\n\x0f\x43olumnErrorCode\x12!\n\x1d\x43OLUMN_ERROR_CODE_UNSPECIFIED\x10\x00\x12)\n%COLUMN_ERROR_CODE_NOT_FOUND_IN_SOURCE\x10\x01\x12*\n&COLUMN_ERROR_CODE_NOT_FOUND_IN_MAPPING\x10\x02\x12:\n6COLUMN_ERROR_CODE_REQUIRED_COLUMN_NOT_FOUND_IN_MAPPING\x10\x03\x12?\n;COLUMN_ERROR_CODE_REQUIRED_FOREIGN_KEY_NOT_FOUND_IN_MAPPING\x10\x04\x12K\nGCOLUMN_ERROR_CODE_UNSUPPORTED_CIRCULAR_DEPENDENCY_AT_LEAST_ONE_NULLABLE\x10\x05\x12<\n8COLUMN_ERROR_CODE_VFK_SOURCE_COLUMN_NOT_FOUND_IN_MAPPING\x10\x06\x12;\n7COLUMN_ERROR_CODE_VFK_SOURCE_COLUMN_NOT_FOUND_IN_SOURCE\x10\x07\x12<\n8COLUMN_ERROR_CODE_VFK_TARGET_COLUMN_NOT_FOUND_IN_MAPPING\x10\x08\x12;\n7COLUMN_ERROR_CODE_VFK_TARGET_COLUMN_NOT_FOUND_IN_SOURCE\x10\t\x12\x32\n.COLUMN_ERROR_CODE_VFK_COLUMN_DATATYPE_MISMATCH\x10\n\x12\x32\n.COLUMN_ERROR_CODE_VFK_SOURCE_COLUMN_NOT_UNIQUE\x10\x0b\"\xdb\x03\n\rColumnWarning\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x16\n\x06\x63olumn\x18\x03 \x01(\tR\x06\x63olumn\x12\x1e\n\x08warnings\x18\x05 \x03(\tB\x02\x18\x01R\x08warnings\x12Y\n\x0fwarning_reports\x18\x06 \x03(\x0b\x32\x30.mgmt.v1alpha1.ColumnWarning.ColumnWarningReportR\x0ewarningReports\x1as\n\x13\x43olumnWarningReport\x12\x42\n\x04\x63ode\x18\x01 \x01(\x0e\x32..mgmt.v1alpha1.ColumnWarning.ColumnWarningCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\x93\x01\n\x11\x43olumnWarningCode\x12#\n\x1f\x43OLUMN_WARNING_CODE_UNSPECIFIED\x10\x00\x12+\n\'COLUMN_WARNING_CODE_NOT_FOUND_IN_SOURCE\x10\x01\x12,\n(COLUMN_WARNING_CODE_NOT_FOUND_IN_MAPPING\x10\x02\"\xae\x03\n\rDatabaseError\x12\x1a\n\x06\x65rrors\x18\x01 \x03(\tB\x02\x18\x01R\x06\x65rrors\x12U\n\rerror_reports\x18\x02 \x03(\x0b\x32\x30.mgmt.v1alpha1.DatabaseError.DatabaseErrorReportR\x0c\x65rrorReports\x1as\n\x13\x44\x61tabaseErrorReport\x12\x42\n\x04\x63ode\x18\x01 \x01(\x0e\x32..mgmt.v1alpha1.DatabaseError.DatabaseErrorCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\xb4\x01\n\x11\x44\x61tabaseErrorCode\x12#\n\x1f\x44\x41TABASE_ERROR_CODE_UNSPECIFIED\x10\x00\x12M\nIDATABASE_ERROR_CODE_UNSUPPORTED_CIRCULAR_DEPENDENCY_AT_LEAST_ONE_NULLABLE\x10\x01\x12+\n\'DATABASE_ERROR_CODE_VFK_COLUMN_MISMATCH\x10\x02\"\xca\x04\n\nTableError\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12O\n\rerror_reports\x18\x03 \x03(\x0b\x32*.mgmt.v1alpha1.TableError.TableErrorReportR\x0c\x65rrorReports\x1aj\n\x10TableErrorReport\x12<\n\x04\x63ode\x18\x01 \x01(\x0e\x32(.mgmt.v1alpha1.TableError.TableErrorCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\xd0\x02\n\x0eTableErrorCode\x12 \n\x1cTABLE_ERROR_CODE_UNSPECIFIED\x10\x00\x12.\n*TABLE_ERROR_CODE_TABLE_NOT_FOUND_IN_SOURCE\x10\x01\x12:\n6TABLE_ERROR_CODE_VFK_SOURCE_TABLE_NOT_FOUND_IN_MAPPING\x10\x02\x12\x39\n5TABLE_ERROR_CODE_VFK_SOURCE_TABLE_NOT_FOUND_IN_SOURCE\x10\x03\x12:\n6TABLE_ERROR_CODE_VFK_TARGET_TABLE_NOT_FOUND_IN_MAPPING\x10\x04\x12\x39\n5TABLE_ERROR_CODE_VFK_TARGET_TABLE_NOT_FOUND_IN_SOURCE\x10\x05\"\xaa\x02\n\x1bValidateJobMappingsResponse\x12?\n\rcolumn_errors\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.ColumnErrorR\x0c\x63olumnErrors\x12\x45\n\x0f\x64\x61tabase_errors\x18\x02 \x01(\x0b\x32\x1c.mgmt.v1alpha1.DatabaseErrorR\x0e\x64\x61tabaseErrors\x12\x45\n\x0f\x63olumn_warnings\x18\x03 \x03(\x0b\x32\x1c.mgmt.v1alpha1.ColumnWarningR\x0e\x63olumnWarnings\x12<\n\x0ctable_errors\x18\x04 \x03(\x0b\x32\x19.mgmt.v1alpha1.TableErrorR\x0btableErrors\"}\n\x15ValidateSchemaRequest\x12\x35\n\x08mappings\x18\x01 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12-\n\rconnection_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\"\xd8\x02\n\x16ValidateSchemaResponse\x12\x46\n\x0fmissing_columns\x18\x01 \x03(\x0b\x32\x1d.mgmt.v1alpha1.DatabaseColumnR\x0emissingColumns\x12\x42\n\rextra_columns\x18\x02 \x03(\x0b\x32\x1d.mgmt.v1alpha1.DatabaseColumnR\x0c\x65xtraColumns\x12R\n\x0emissing_tables\x18\x03 \x03(\x0b\x32+.mgmt.v1alpha1.ValidateSchemaResponse.TableR\rmissingTables\x12\'\n\x0fmissing_schemas\x18\x04 \x03(\tR\x0emissingSchemas\x1a\x35\n\x05Table\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\"[\n\x11VirtualForeignKey\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x18\n\x07\x63olumns\x18\x03 \x03(\tR\x07\x63olumns\"\xa5\x01\n\x18VirtualForeignConstraint\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x18\n\x07\x63olumns\x18\x03 \x03(\tR\x07\x63olumns\x12\x41\n\x0b\x66oreign_key\x18\x04 \x01(\x0b\x32 .mgmt.v1alpha1.VirtualForeignKeyR\nforeignKey\"\x88\x01\n\rRunContextKey\x12%\n\njob_run_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08jobRunId\x12(\n\x0b\x65xternal_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\nexternalId\x12&\n\naccount_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\taccountId\"D\n\x14GetRunContextRequest\x12,\n\x02id\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.RunContextKeyR\x02id\"-\n\x15GetRunContextResponse\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"Z\n\x14SetRunContextRequest\x12,\n\x02id\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.RunContextKeyR\x02id\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\"\x17\n\x15SetRunContextResponse\"[\n\x15SetRunContextsRequest\x12,\n\x02id\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.RunContextKeyR\x02id\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\"\x18\n\x16SetRunContextsResponse\"\xad\x03\n\x07JobHook\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12\x15\n\x06job_id\x18\x04 \x01(\tR\x05jobId\x12\x34\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobHookConfigR\x06\x63onfig\x12+\n\x12\x63reated_by_user_id\x18\x06 \x01(\tR\x0f\x63reatedByUserId\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x12updated_by_user_id\x18\x08 \x01(\tR\x0fupdatedByUserId\x12\x39\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x18\n\x07\x65nabled\x18\n \x01(\x08R\x07\x65nabled\x12%\n\x08priority\x18\x0b \x01(\rB\t\xbaH\x06*\x04\x18\x64(\x00R\x08priority\"\xdd\x01\n\nNewJobHook\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12)\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0b\x64\x65scription\x12\x34\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobHookConfigR\x06\x63onfig\x12\x18\n\x07\x65nabled\x18\x04 \x01(\x08R\x07\x65nabled\x12%\n\x08priority\x18\x05 \x01(\rB\t\xbaH\x06*\x04\x18\x64(\x00R\x08priority\"\xbd\x03\n\rJobHookConfig\x12;\n\x03sql\x18\x05 \x01(\x0b\x32\'.mgmt.v1alpha1.JobHookConfig.JobSqlHookH\x00R\x03sql\x1a\xc5\x02\n\nJobSqlHook\x12\x1d\n\x05query\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05query\x12-\n\rconnection_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12\x46\n\x06timing\x18\x03 \x01(\x0b\x32..mgmt.v1alpha1.JobHookConfig.JobSqlHook.TimingR\x06timing\x1a\xa0\x01\n\x06Timing\x12@\n\x08pre_sync\x18\x03 \x01(\x0b\x32#.mgmt.v1alpha1.JobHookTimingPreSyncH\x00R\x07preSync\x12\x43\n\tpost_sync\x18\x04 \x01(\x0b\x32$.mgmt.v1alpha1.JobHookTimingPostSyncH\x00R\x08postSyncB\x0f\n\x06timing\x12\x05\xbaH\x02\x08\x01\x42\x0f\n\x06\x63onfig\x12\x05\xbaH\x02\x08\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\"\x16\n\x14JobHookTimingPreSync\"\x17\n\x15JobHookTimingPostSync\"5\n\x12GetJobHooksRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"C\n\x13GetJobHooksResponse\x12,\n\x05hooks\x18\x01 \x03(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x05hooks\"-\n\x11GetJobHookRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"@\n\x12GetJobHookResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"\\\n\x14\x43reateJobHookRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12-\n\x04hook\x18\x02 \x01(\x0b\x32\x19.mgmt.v1alpha1.NewJobHookR\x04hook\"C\n\x15\x43reateJobHookResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"0\n\x14\x44\x65leteJobHookRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\x17\n\x15\x44\x65leteJobHookResponse\"J\n\x1dIsJobHookNameAvailableRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"C\n\x1eIsJobHookNameAvailableResponse\x12!\n\x0cis_available\x18\x01 \x01(\x08R\x0bisAvailable\"\x81\x02\n\x14UpdateJobHookRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12-\n\x04name\x18\x02 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12)\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0b\x64\x65scription\x12\x34\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobHookConfigR\x06\x63onfig\x12\x18\n\x07\x65nabled\x18\x05 \x01(\x08R\x07\x65nabled\x12%\n\x08priority\x18\x06 \x01(\rB\t\xbaH\x06*\x04\x18\x64(\x00R\x08priority\"C\n\x15UpdateJobHookResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"N\n\x18SetJobHookEnabledRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x18\n\x07\x65nabled\x18\x02 \x01(\x08R\x07\x65nabled\"G\n\x19SetJobHookEnabledResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"\xde\x01\n GetActiveJobHooksByTimingRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12N\n\x06timing\x18\x02 \x01(\x0e\x32\x36.mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.TimingR\x06timing\"I\n\x06Timing\x12\x16\n\x12TIMING_UNSPECIFIED\x10\x00\x12\x12\n\x0eTIMING_PRESYNC\x10\x01\x12\x13\n\x0fTIMING_POSTSYNC\x10\x02\"Q\n!GetActiveJobHooksByTimingResponse\x12,\n\x05hooks\x18\x01 \x03(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x05hooks\"n\n\x1cGetPiiDetectionReportRequest\x12%\n\njob_run_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"Z\n\x1dGetPiiDetectionReportResponse\x12\x39\n\x06report\x18\x01 \x01(\x0b\x32!.mgmt.v1alpha1.PiiDetectionReportR\x06report\"\xee\x04\n\x12PiiDetectionReport\x12\x45\n\x06tables\x18\x01 \x03(\x0b\x32-.mgmt.v1alpha1.PiiDetectionReport.TableReportR\x06tables\x1a\x90\x04\n\x0bTableReport\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12T\n\x07\x63olumns\x18\x03 \x03(\x0b\x32:.mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReportR\x07\x63olumns\x1a\xfc\x02\n\x0c\x43olumnReport\x12\x16\n\x06\x63olumn\x18\x01 \x01(\tR\x06\x63olumn\x12h\n\x0cregex_report\x18\x02 \x01(\x0b\x32@.mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.RegexH\x00R\x0bregexReport\x88\x01\x01\x12\x62\n\nllm_report\x18\x03 \x01(\x0b\x32>.mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLMH\x01R\tllmReport\x88\x01\x01\x1a#\n\x05Regex\x12\x1a\n\x08\x63\x61tegory\x18\x01 \x01(\tR\x08\x63\x61tegory\x1a\x41\n\x03LLM\x12\x1a\n\x08\x63\x61tegory\x18\x01 \x01(\tR\x08\x63\x61tegory\x12\x1e\n\nconfidence\x18\x02 \x01(\x02R\nconfidenceB\x0f\n\r_regex_reportB\r\n\x0b_llm_report*o\n\tJobStatus\x12\x1a\n\x16JOB_STATUS_UNSPECIFIED\x10\x00\x12\x16\n\x12JOB_STATUS_ENABLED\x10\x01\x12\x15\n\x11JOB_STATUS_PAUSED\x10\x03\x12\x17\n\x13JOB_STATUS_DISABLED\x10\x04*\xa7\x01\n\x0e\x41\x63tivityStatus\x12\x1f\n\x1b\x41\x43TIVITY_STATUS_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x41\x43TIVITY_STATUS_SCHEDULED\x10\x01\x12\x1b\n\x17\x41\x43TIVITY_STATUS_STARTED\x10\x02\x12\x1c\n\x18\x41\x43TIVITY_STATUS_CANCELED\x10\x03\x12\x1a\n\x16\x41\x43TIVITY_STATUS_FAILED\x10\x04*\x92\x02\n\x0cJobRunStatus\x12\x1e\n\x1aJOB_RUN_STATUS_UNSPECIFIED\x10\x00\x12\x1a\n\x16JOB_RUN_STATUS_PENDING\x10\x01\x12\x1a\n\x16JOB_RUN_STATUS_RUNNING\x10\x02\x12\x1b\n\x17JOB_RUN_STATUS_COMPLETE\x10\x03\x12\x18\n\x14JOB_RUN_STATUS_ERROR\x10\x04\x12\x1b\n\x17JOB_RUN_STATUS_CANCELED\x10\x05\x12\x1d\n\x19JOB_RUN_STATUS_TERMINATED\x10\x06\x12\x19\n\x15JOB_RUN_STATUS_FAILED\x10\x07\x12\x1c\n\x18JOB_RUN_STATUS_TIMED_OUT\x10\x08*|\n\tLogWindow\x12\"\n\x1eLOG_WINDOW_NO_TIME_UNSPECIFIED\x10\x00\x12\x1a\n\x16LOG_WINDOW_FIFTEEN_MIN\x10\x01\x12\x17\n\x13LOG_WINDOW_ONE_HOUR\x10\x02\x12\x16\n\x12LOG_WINDOW_ONE_DAY\x10\x03*w\n\x08LogLevel\x12\x19\n\x15LOG_LEVEL_UNSPECIFIED\x10\x00\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x01\x12\x12\n\x0eLOG_LEVEL_INFO\x10\x02\x12\x12\n\x0eLOG_LEVEL_WARN\x10\x03\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x04\x32\xb0!\n\nJobService\x12M\n\x07GetJobs\x12\x1d.mgmt.v1alpha1.GetJobsRequest\x1a\x1e.mgmt.v1alpha1.GetJobsResponse\"\x03\x90\x02\x01\x12J\n\x06GetJob\x12\x1c.mgmt.v1alpha1.GetJobRequest\x1a\x1d.mgmt.v1alpha1.GetJobResponse\"\x03\x90\x02\x01\x12P\n\tCreateJob\x12\x1f.mgmt.v1alpha1.CreateJobRequest\x1a .mgmt.v1alpha1.CreateJobResponse\"\x00\x12P\n\tDeleteJob\x12\x1f.mgmt.v1alpha1.DeleteJobRequest\x1a .mgmt.v1alpha1.DeleteJobResponse\"\x00\x12n\n\x12IsJobNameAvailable\x12(.mgmt.v1alpha1.IsJobNameAvailableRequest\x1a).mgmt.v1alpha1.IsJobNameAvailableResponse\"\x03\x90\x02\x01\x12h\n\x11UpdateJobSchedule\x12\'.mgmt.v1alpha1.UpdateJobScheduleRequest\x1a(.mgmt.v1alpha1.UpdateJobScheduleResponse\"\x00\x12\x80\x01\n\x19UpdateJobSourceConnection\x12/.mgmt.v1alpha1.UpdateJobSourceConnectionRequest\x1a\x30.mgmt.v1alpha1.UpdateJobSourceConnectionResponse\"\x00\x12\x95\x01\n SetJobSourceSqlConnectionSubsets\x12\x36.mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest\x1a\x37.mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse\"\x00\x12\x8f\x01\n\x1eUpdateJobDestinationConnection\x12\x34.mgmt.v1alpha1.UpdateJobDestinationConnectionRequest\x1a\x35.mgmt.v1alpha1.UpdateJobDestinationConnectionResponse\"\x00\x12\x8f\x01\n\x1e\x44\x65leteJobDestinationConnection\x12\x34.mgmt.v1alpha1.DeleteJobDestinationConnectionRequest\x1a\x35.mgmt.v1alpha1.DeleteJobDestinationConnectionResponse\"\x00\x12\x92\x01\n\x1f\x43reateJobDestinationConnections\x12\x35.mgmt.v1alpha1.CreateJobDestinationConnectionsRequest\x1a\x36.mgmt.v1alpha1.CreateJobDestinationConnectionsResponse\"\x00\x12M\n\x08PauseJob\x12\x1e.mgmt.v1alpha1.PauseJobRequest\x1a\x1f.mgmt.v1alpha1.PauseJobResponse\"\x00\x12h\n\x10GetJobRecentRuns\x12&.mgmt.v1alpha1.GetJobRecentRunsRequest\x1a\'.mgmt.v1alpha1.GetJobRecentRunsResponse\"\x03\x90\x02\x01\x12\x62\n\x0eGetJobNextRuns\x12$.mgmt.v1alpha1.GetJobNextRunsRequest\x1a%.mgmt.v1alpha1.GetJobNextRunsResponse\"\x03\x90\x02\x01\x12\\\n\x0cGetJobStatus\x12\".mgmt.v1alpha1.GetJobStatusRequest\x1a#.mgmt.v1alpha1.GetJobStatusResponse\"\x03\x90\x02\x01\x12\x62\n\x0eGetJobStatuses\x12$.mgmt.v1alpha1.GetJobStatusesRequest\x1a%.mgmt.v1alpha1.GetJobStatusesResponse\"\x03\x90\x02\x01\x12V\n\nGetJobRuns\x12 .mgmt.v1alpha1.GetJobRunsRequest\x1a!.mgmt.v1alpha1.GetJobRunsResponse\"\x03\x90\x02\x01\x12\x65\n\x0fGetJobRunEvents\x12%.mgmt.v1alpha1.GetJobRunEventsRequest\x1a&.mgmt.v1alpha1.GetJobRunEventsResponse\"\x03\x90\x02\x01\x12S\n\tGetJobRun\x12\x1f.mgmt.v1alpha1.GetJobRunRequest\x1a .mgmt.v1alpha1.GetJobRunResponse\"\x03\x90\x02\x01\x12Y\n\x0c\x44\x65leteJobRun\x12\".mgmt.v1alpha1.DeleteJobRunRequest\x1a#.mgmt.v1alpha1.DeleteJobRunResponse\"\x00\x12Y\n\x0c\x43reateJobRun\x12\".mgmt.v1alpha1.CreateJobRunRequest\x1a#.mgmt.v1alpha1.CreateJobRunResponse\"\x00\x12Y\n\x0c\x43\x61ncelJobRun\x12\".mgmt.v1alpha1.CancelJobRunRequest\x1a#.mgmt.v1alpha1.CancelJobRunResponse\"\x00\x12\x62\n\x0fTerminateJobRun\x12%.mgmt.v1alpha1.TerminateJobRunRequest\x1a&.mgmt.v1alpha1.TerminateJobRunResponse\"\x00\x12p\n\x13GetJobRunLogsStream\x12).mgmt.v1alpha1.GetJobRunLogsStreamRequest\x1a*.mgmt.v1alpha1.GetJobRunLogsStreamResponse\"\x00\x30\x01\x12\\\n\rGetJobRunLogs\x12#.mgmt.v1alpha1.GetJobRunLogsRequest\x1a$.mgmt.v1alpha1.GetJobRunLogsResponse\"\x00\x12t\n\x15SetJobWorkflowOptions\x12+.mgmt.v1alpha1.SetJobWorkflowOptionsRequest\x1a,.mgmt.v1alpha1.SetJobWorkflowOptionsResponse\"\x00\x12h\n\x11SetJobSyncOptions\x12\'.mgmt.v1alpha1.SetJobSyncOptionsRequest\x1a(.mgmt.v1alpha1.SetJobSyncOptionsResponse\"\x00\x12n\n\x13ValidateJobMappings\x12).mgmt.v1alpha1.ValidateJobMappingsRequest\x1a*.mgmt.v1alpha1.ValidateJobMappingsResponse\"\x00\x12_\n\x0eValidateSchema\x12$.mgmt.v1alpha1.ValidateSchemaRequest\x1a%.mgmt.v1alpha1.ValidateSchemaResponse\"\x00\x12\\\n\rGetRunContext\x12#.mgmt.v1alpha1.GetRunContextRequest\x1a$.mgmt.v1alpha1.GetRunContextResponse\"\x00\x12\\\n\rSetRunContext\x12#.mgmt.v1alpha1.SetRunContextRequest\x1a$.mgmt.v1alpha1.SetRunContextResponse\"\x00\x12\x61\n\x0eSetRunContexts\x12$.mgmt.v1alpha1.SetRunContextsRequest\x1a%.mgmt.v1alpha1.SetRunContextsResponse\"\x00(\x01\x12Y\n\x0bGetJobHooks\x12!.mgmt.v1alpha1.GetJobHooksRequest\x1a\".mgmt.v1alpha1.GetJobHooksResponse\"\x03\x90\x02\x01\x12V\n\nGetJobHook\x12 .mgmt.v1alpha1.GetJobHookRequest\x1a!.mgmt.v1alpha1.GetJobHookResponse\"\x03\x90\x02\x01\x12\\\n\rCreateJobHook\x12#.mgmt.v1alpha1.CreateJobHookRequest\x1a$.mgmt.v1alpha1.CreateJobHookResponse\"\x00\x12\\\n\rDeleteJobHook\x12#.mgmt.v1alpha1.DeleteJobHookRequest\x1a$.mgmt.v1alpha1.DeleteJobHookResponse\"\x00\x12w\n\x16IsJobHookNameAvailable\x12,.mgmt.v1alpha1.IsJobHookNameAvailableRequest\x1a-.mgmt.v1alpha1.IsJobHookNameAvailableResponse\"\x00\x12\\\n\rUpdateJobHook\x12#.mgmt.v1alpha1.UpdateJobHookRequest\x1a$.mgmt.v1alpha1.UpdateJobHookResponse\"\x00\x12h\n\x11SetJobHookEnabled\x12\'.mgmt.v1alpha1.SetJobHookEnabledRequest\x1a(.mgmt.v1alpha1.SetJobHookEnabledResponse\"\x00\x12\x83\x01\n\x19GetActiveJobHooksByTiming\x12/.mgmt.v1alpha1.GetActiveJobHooksByTimingRequest\x1a\x30.mgmt.v1alpha1.GetActiveJobHooksByTimingResponse\"\x03\x90\x02\x01\x12w\n\x15GetPiiDetectionReport\x12+.mgmt.v1alpha1.GetPiiDetectionReportRequest\x1a,.mgmt.v1alpha1.GetPiiDetectionReportResponse\"\x03\x90\x02\x01\x42\xc4\x01\n\x11\x63om.mgmt.v1alpha1B\x08JobProtoP\x01ZPgithub.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1;mgmtv1alpha1\xa2\x02\x03MXX\xaa\x02\rMgmt.V1alpha1\xca\x02\rMgmt\\V1alpha1\xe2\x02\x19Mgmt\\V1alpha1\\GPBMetadata\xea\x02\x0eMgmt::V1alpha1b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17mgmt/v1alpha1/job.proto\x12\rmgmt.v1alpha1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#mgmt/v1alpha1/connection_data.proto\x1a\x1fmgmt/v1alpha1/transformer.proto\"9\n\x0eGetJobsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"9\n\x0fGetJobsResponse\x12&\n\x04jobs\x18\x01 \x03(\x0b\x32\x12.mgmt.v1alpha1.JobR\x04jobs\"N\n\tJobSource\x12\x41\n\x07options\x18\x01 \x01(\x0b\x32\x1f.mgmt.v1alpha1.JobSourceOptionsB\x06\xbaH\x03\xc8\x01\x01R\x07options\"\xe9\x04\n\x10JobSourceOptions\x12L\n\x08postgres\x18\x01 \x01(\x0b\x32..mgmt.v1alpha1.PostgresSourceConnectionOptionsH\x00R\x08postgres\x12\x44\n\x06\x61ws_s3\x18\x02 \x01(\x0b\x32+.mgmt.v1alpha1.AwsS3SourceConnectionOptionsH\x00R\x05\x61wsS3\x12\x43\n\x05mysql\x18\x03 \x01(\x0b\x32+.mgmt.v1alpha1.MysqlSourceConnectionOptionsH\x00R\x05mysql\x12\x42\n\x08generate\x18\x04 \x01(\x0b\x32$.mgmt.v1alpha1.GenerateSourceOptionsH\x00R\x08generate\x12I\n\x0b\x61i_generate\x18\x05 \x01(\x0b\x32&.mgmt.v1alpha1.AiGenerateSourceOptionsH\x00R\naiGenerate\x12I\n\x07mongodb\x18\x06 \x01(\x0b\x32-.mgmt.v1alpha1.MongoDBSourceConnectionOptionsH\x00R\x07mongodb\x12L\n\x08\x64ynamodb\x18\x07 \x01(\x0b\x32..mgmt.v1alpha1.DynamoDBSourceConnectionOptionsH\x00R\x08\x64ynamodb\x12\x43\n\x05mssql\x18\x08 \x01(\x0b\x32+.mgmt.v1alpha1.MssqlSourceConnectionOptionsH\x00R\x05mssqlB\x0f\n\x06\x63onfig\x12\x05\xbaH\x02\x08\x01\"\x85\x01\n\x14\x43reateJobDestination\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12>\n\x07options\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.JobDestinationOptionsR\x07options\"\x8f\x01\n\x0eJobDestination\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12>\n\x07options\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.JobDestinationOptionsR\x07options\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02id\"\xb6\x03\n\x17\x41iGenerateSourceOptions\x12\x32\n\x10\x61i_connection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0e\x61iConnectionId\x12O\n\x07schemas\x18\x02 \x03(\x0b\x32+.mgmt.v1alpha1.AiGenerateSourceSchemaOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x07schemas\x12\x44\n\x17\x66k_source_connection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x14\x66kSourceConnectionId\x88\x01\x01\x12&\n\nmodel_name\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\tmodelName\x12$\n\x0buser_prompt\x18\x05 \x01(\tH\x01R\nuserPrompt\x88\x01\x01\x12>\n\x13generate_batch_size\x18\x06 \x01(\x03\x42\t\xbaH\x06\"\x04\x18\x64(\x01H\x02R\x11generateBatchSize\x88\x01\x01\x42\x1a\n\x18_fk_source_connection_idB\x0e\n\x0c_user_promptB\x16\n\x14_generate_batch_size\"\x8d\x01\n\x1c\x41iGenerateSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12L\n\x06tables\x18\x02 \x03(\x0b\x32*.mgmt.v1alpha1.AiGenerateSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"e\n\x1b\x41iGenerateSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12\'\n\trow_count\x18\x02 \x01(\x03\x42\n\xbaH\x07\"\x05\x18\xe8\x07(\x01R\x08rowCount\"\xce\x01\n\x15GenerateSourceOptions\x12M\n\x07schemas\x18\x01 \x03(\x0b\x32).mgmt.v1alpha1.GenerateSourceSchemaOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x07schemas\x12\x44\n\x17\x66k_source_connection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x14\x66kSourceConnectionId\x88\x01\x01\x42\x1a\n\x18_fk_source_connection_idJ\x04\x08\x02\x10\x03\"\x89\x01\n\x1aGenerateSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12J\n\x06tables\x18\x02 \x03(\x0b\x32(.mgmt.v1alpha1.GenerateSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"`\n\x19GenerateSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12$\n\trow_count\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01R\x08rowCount\"O\n\x1eMongoDBSourceConnectionOptions\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\"\xaf\x02\n\x1f\x44ynamoDBSourceConnectionOptions\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12@\n\x06tables\x18\x02 \x03(\x0b\x32(.mgmt.v1alpha1.DynamoDBSourceTableOptionR\x06tables\x12\x65\n\x13unmapped_transforms\x18\x03 \x01(\x0b\x32\x34.mgmt.v1alpha1.DynamoDBSourceUnmappedTransformConfigR\x12unmappedTransforms\x12\x34\n\x16\x65nable_consistent_read\x18\x04 \x01(\x08R\x14\x65nableConsistentRead\"\x8f\x02\n%DynamoDBSourceUnmappedTransformConfig\x12\x32\n\x01\x62\x18\x01 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x01\x62\x12>\n\x07\x62oolean\x18\x02 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x07\x62oolean\x12\x32\n\x01n\x18\x04 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x01n\x12\x32\n\x01s\x18\x06 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x01sJ\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"s\n\x19\x44ynamoDBSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"\xb8\t\n\x1fPostgresSourceConnectionOptions\x12\x43\n\x07schemas\x18\x02 \x03(\x0b\x32).mgmt.v1alpha1.PostgresSourceSchemaOptionR\x07schemas\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12H\n!subset_by_foreign_key_constraints\x18\x04 \x01(\x08R\x1dsubsetByForeignKeyConstraints\x12\x89\x01\n\x1cnew_column_addition_strategy\x18\x05 \x01(\x0b\x32H.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategyR\x19newColumnAdditionStrategy\x12|\n\x17\x63olumn_removal_strategy\x18\x06 \x01(\x0b\x32\x44.mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategyR\x15\x63olumnRemovalStrategy\x1a\xa4\x03\n\x19NewColumnAdditionStrategy\x12m\n\x08halt_job\x18\x01 \x01(\x0b\x32P.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJobH\x00R\x07haltJob\x12m\n\x08\x61uto_map\x18\x02 \x01(\x0b\x32P.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMapH\x00R\x07\x61utoMap\x12x\n\x0bpassthrough\x18\x03 \x01(\x0b\x32T.mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.PassthroughH\x00R\x0bpassthrough\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMap\x1a\r\n\x0bPassthroughB\n\n\x08strategy\x1a\x9f\x02\n\x15\x43olumnRemovalStrategy\x12i\n\x08halt_job\x18\x01 \x01(\x0b\x32L.mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJobH\x00R\x07haltJob\x12u\n\x0c\x63ontinue_job\x18\x02 \x01(\x0b\x32P.mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJobH\x00R\x0b\x63ontinueJob\x1a\t\n\x07HaltJob\x1a\r\n\x0b\x43ontinueJobB\n\n\x08strategyJ\x04\x08\x01\x10\x02\"\x89\x01\n\x1aPostgresSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12J\n\x06tables\x18\x02 \x03(\x0b\x32(.mgmt.v1alpha1.PostgresSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"s\n\x19PostgresSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"\xd9\t\n\x1cMysqlSourceConnectionOptions\x12@\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08\x42\x02\x18\x01R\x17haltOnNewColumnAddition\x12@\n\x07schemas\x18\x02 \x03(\x0b\x32&.mgmt.v1alpha1.MysqlSourceSchemaOptionR\x07schemas\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12H\n!subset_by_foreign_key_constraints\x18\x04 \x01(\x08R\x1dsubsetByForeignKeyConstraints\x12y\n\x17\x63olumn_removal_strategy\x18\x05 \x01(\x0b\x32\x41.mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategyR\x15\x63olumnRemovalStrategy\x12\x86\x01\n\x1cnew_column_addition_strategy\x18\x06 \x01(\x0b\x32\x45.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategyR\x19newColumnAdditionStrategy\x1a\x99\x02\n\x15\x43olumnRemovalStrategy\x12\x66\n\x08halt_job\x18\x01 \x01(\x0b\x32I.mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJobH\x00R\x07haltJob\x12r\n\x0c\x63ontinue_job\x18\x02 \x01(\x0b\x32M.mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJobH\x00R\x0b\x63ontinueJob\x1a\t\n\x07HaltJob\x1a\r\n\x0b\x43ontinueJobB\n\n\x08strategy\x1a\x9b\x03\n\x19NewColumnAdditionStrategy\x12j\n\x08halt_job\x18\x01 \x01(\x0b\x32M.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJobH\x00R\x07haltJob\x12j\n\x08\x61uto_map\x18\x02 \x01(\x0b\x32M.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMapH\x00R\x07\x61utoMap\x12u\n\x0bpassthrough\x18\x03 \x01(\x0b\x32Q.mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.PassthroughH\x00R\x0bpassthrough\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMap\x1a\r\n\x0bPassthroughB\n\n\x08strategy\"\x83\x01\n\x17MysqlSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12G\n\x06tables\x18\x02 \x03(\x0b\x32%.mgmt.v1alpha1.MysqlSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"p\n\x16MysqlSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"\xe2\x08\n\x1cMssqlSourceConnectionOptions\x12@\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08\x42\x02\x18\x01R\x17haltOnNewColumnAddition\x12@\n\x07schemas\x18\x02 \x03(\x0b\x32&.mgmt.v1alpha1.MssqlSourceSchemaOptionR\x07schemas\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12H\n!subset_by_foreign_key_constraints\x18\x04 \x01(\x08R\x1dsubsetByForeignKeyConstraints\x12y\n\x17\x63olumn_removal_strategy\x18\x05 \x01(\x0b\x32\x41.mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategyR\x15\x63olumnRemovalStrategy\x12\x86\x01\n\x1cnew_column_addition_strategy\x18\x06 \x01(\x0b\x32\x45.mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategyR\x19newColumnAdditionStrategy\x1a\x99\x02\n\x15\x43olumnRemovalStrategy\x12\x66\n\x08halt_job\x18\x01 \x01(\x0b\x32I.mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJobH\x00R\x07haltJob\x12r\n\x0c\x63ontinue_job\x18\x02 \x01(\x0b\x32M.mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJobH\x00R\x0b\x63ontinueJob\x1a\t\n\x07HaltJob\x1a\r\n\x0b\x43ontinueJobB\n\n\x08strategy\x1a\xa4\x02\n\x19NewColumnAdditionStrategy\x12j\n\x08halt_job\x18\x01 \x01(\x0b\x32M.mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJobH\x00R\x07haltJob\x12u\n\x0bpassthrough\x18\x02 \x01(\x0b\x32Q.mgmt.v1alpha1.MssqlSourceConnectionOptions.NewColumnAdditionStrategy.PassthroughH\x00R\x0bpassthrough\x1a\t\n\x07HaltJob\x1a\r\n\x0bPassthroughB\n\n\x08strategy\"\x83\x01\n\x17MssqlSourceSchemaOption\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12G\n\x06tables\x18\x02 \x03(\x0b\x32%.mgmt.v1alpha1.MssqlSourceTableOptionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x06tables\"p\n\x16MssqlSourceTableOption\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12&\n\x0cwhere_clause\x18\x02 \x01(\tH\x00R\x0bwhereClause\x88\x01\x01\x42\x0f\n\r_where_clause\"M\n\x1c\x41wsS3SourceConnectionOptions\x12-\n\rconnection_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\"\xcf\x05\n\x15JobDestinationOptions\x12`\n\x10postgres_options\x18\x01 \x01(\x0b\x32\x33.mgmt.v1alpha1.PostgresDestinationConnectionOptionsH\x00R\x0fpostgresOptions\x12X\n\x0e\x61ws_s3_options\x18\x02 \x01(\x0b\x32\x30.mgmt.v1alpha1.AwsS3DestinationConnectionOptionsH\x00R\x0c\x61wsS3Options\x12W\n\rmysql_options\x18\x03 \x01(\x0b\x32\x30.mgmt.v1alpha1.MysqlDestinationConnectionOptionsH\x00R\x0cmysqlOptions\x12]\n\x0fmongodb_options\x18\x04 \x01(\x0b\x32\x32.mgmt.v1alpha1.MongoDBDestinationConnectionOptionsH\x00R\x0emongodbOptions\x12v\n\x18gcp_cloudstorage_options\x18\x05 \x01(\x0b\x32:.mgmt.v1alpha1.GcpCloudStorageDestinationConnectionOptionsH\x00R\x16gcpCloudstorageOptions\x12`\n\x10\x64ynamodb_options\x18\x06 \x01(\x0b\x32\x33.mgmt.v1alpha1.DynamoDBDestinationConnectionOptionsH\x00R\x0f\x64ynamodbOptions\x12W\n\rmssql_options\x18\x07 \x01(\x0b\x32\x30.mgmt.v1alpha1.MssqlDestinationConnectionOptionsH\x00R\x0cmssqlOptionsB\x0f\n\x06\x63onfig\x12\x05\xbaH\x02\x08\x01\"%\n#MongoDBDestinationConnectionOptions\"-\n+GcpCloudStorageDestinationConnectionOptions\"}\n$DynamoDBDestinationConnectionOptions\x12U\n\x0etable_mappings\x18\x01 \x03(\x0b\x32..mgmt.v1alpha1.DynamoDBDestinationTableMappingR\rtableMappings\"q\n\x1f\x44ynamoDBDestinationTableMapping\x12!\n\x0csource_table\x18\x01 \x01(\tR\x0bsourceTable\x12+\n\x11\x64\x65stination_table\x18\x02 \x01(\tR\x10\x64\x65stinationTable\"\xa4\x03\n$PostgresDestinationConnectionOptions\x12Q\n\x0etruncate_table\x18\x01 \x01(\x0b\x32*.mgmt.v1alpha1.PostgresTruncateTableConfigR\rtruncateTable\x12*\n\x11init_table_schema\x18\x02 \x01(\x08R\x0finitTableSchema\x12H\n\x0bon_conflict\x18\x03 \x01(\x0b\x32\'.mgmt.v1alpha1.PostgresOnConflictConfigR\nonConflict\x12=\n\x1bskip_foreign_key_violations\x18\x04 \x01(\x08R\x18skipForeignKeyViolations\x12\x30\n\x05\x62\x61tch\x18\x05 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\x12\x30\n\rmax_in_flight\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x42\x10\n\x0e_max_in_flight\"\xc8\x02\n\x18PostgresOnConflictConfig\x12!\n\ndo_nothing\x18\x01 \x01(\x08\x42\x02\x18\x01R\tdoNothing\x12_\n\x07nothing\x18\x02 \x01(\x0b\x32\x43.mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothingH\x00R\x07nothing\x12Z\n\x06update\x18\x03 \x01(\x0b\x32@.mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdateH\x00R\x06update\x1a\x1d\n\x1bPostgresOnConflictDoNothing\x1a\x1a\n\x18PostgresOnConflictUpdateB\x11\n\x08strategy\x12\x05\xbaH\x02\x08\x00\"m\n\x1bPostgresTruncateTableConfig\x12\x34\n\x16truncate_before_insert\x18\x01 \x01(\x08R\x14truncateBeforeInsert\x12\x18\n\x07\x63\x61scade\x18\x02 \x01(\x08R\x07\x63\x61scade\"\x9b\x03\n!MysqlDestinationConnectionOptions\x12N\n\x0etruncate_table\x18\x01 \x01(\x0b\x32\'.mgmt.v1alpha1.MysqlTruncateTableConfigR\rtruncateTable\x12*\n\x11init_table_schema\x18\x02 \x01(\x08R\x0finitTableSchema\x12\x45\n\x0bon_conflict\x18\x03 \x01(\x0b\x32$.mgmt.v1alpha1.MysqlOnConflictConfigR\nonConflict\x12=\n\x1bskip_foreign_key_violations\x18\x04 \x01(\x08R\x18skipForeignKeyViolations\x12\x30\n\x05\x62\x61tch\x18\x05 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\x12\x30\n\rmax_in_flight\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x42\x10\n\x0e_max_in_flight\"P\n\x18MysqlTruncateTableConfig\x12\x34\n\x16truncate_before_insert\x18\x01 \x01(\x08R\x14truncateBeforeInsert\"\xaf\x02\n\x15MysqlOnConflictConfig\x12\x1d\n\ndo_nothing\x18\x01 \x01(\x08R\tdoNothing\x12Y\n\x07nothing\x18\x02 \x01(\x0b\x32=.mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothingH\x00R\x07nothing\x12T\n\x06update\x18\x03 \x01(\x0b\x32:.mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdateH\x00R\x06update\x1a\x1a\n\x18MysqlOnConflictDoNothing\x1a\x17\n\x15MysqlOnConflictUpdateB\x11\n\x08strategy\x12\x05\xbaH\x02\x08\x00\"\x9b\x03\n!MssqlDestinationConnectionOptions\x12N\n\x0etruncate_table\x18\x01 \x01(\x0b\x32\'.mgmt.v1alpha1.MssqlTruncateTableConfigR\rtruncateTable\x12*\n\x11init_table_schema\x18\x02 \x01(\x08R\x0finitTableSchema\x12\x45\n\x0bon_conflict\x18\x03 \x01(\x0b\x32$.mgmt.v1alpha1.MssqlOnConflictConfigR\nonConflict\x12=\n\x1bskip_foreign_key_violations\x18\x04 \x01(\x08R\x18skipForeignKeyViolations\x12\x30\n\x05\x62\x61tch\x18\x05 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\x12\x30\n\rmax_in_flight\x18\x06 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x42\x10\n\x0e_max_in_flight\"P\n\x18MssqlTruncateTableConfig\x12\x34\n\x16truncate_before_insert\x18\x01 \x01(\x08R\x14truncateBeforeInsert\"6\n\x15MssqlOnConflictConfig\x12\x1d\n\ndo_nothing\x18\x01 \x01(\x08R\tdoNothing\"\xb9\x04\n!AwsS3DestinationConnectionOptions\x12\x62\n\rstorage_class\x18\x01 \x01(\x0e\x32=.mgmt.v1alpha1.AwsS3DestinationConnectionOptions.StorageClassR\x0cstorageClass\x12\x30\n\rmax_in_flight\x18\x02 \x01(\rB\x07\xbaH\x04*\x02(\x01H\x00R\x0bmaxInFlight\x88\x01\x01\x12\x1d\n\x07timeout\x18\x03 \x01(\tH\x01R\x07timeout\x88\x01\x01\x12\x30\n\x05\x62\x61tch\x18\x04 \x01(\x0b\x32\x1a.mgmt.v1alpha1.BatchConfigR\x05\x62\x61tch\"\x8e\x02\n\x0cStorageClass\x12\x1d\n\x19STORAGE_CLASS_UNSPECIFIED\x10\x00\x12\x1a\n\x16STORAGE_CLASS_STANDARD\x10\x01\x12$\n STORAGE_CLASS_REDUCED_REDUNDANCY\x10\x02\x12\x19\n\x15STORAGE_CLASS_GLACIER\x10\x03\x12\x1d\n\x19STORAGE_CLASS_STANDARD_IA\x10\x04\x12\x1c\n\x18STORAGE_CLASS_ONEZONE_IA\x10\x05\x12%\n!STORAGE_CLASS_INTELLIGENT_TIERING\x10\x06\x12\x1e\n\x1aSTORAGE_CLASS_DEEP_ARCHIVE\x10\x07\x42\x10\n\x0e_max_in_flightB\n\n\x08_timeout\"Z\n\x0b\x42\x61tchConfig\x12\x19\n\x05\x63ount\x18\x01 \x01(\rH\x00R\x05\x63ount\x88\x01\x01\x12\x1b\n\x06period\x18\x02 \x01(\tH\x01R\x06period\x88\x01\x01\x42\x08\n\x06_countB\t\n\x07_period\"\xf2\x06\n\x10\x43reateJobRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x34\n\x08job_name\x18\x02 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x07jobName\x12(\n\rcron_schedule\x18\x03 \x01(\tH\x00R\x0c\x63ronSchedule\x88\x01\x01\x12\x35\n\x08mappings\x18\x04 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12\x30\n\x06source\x18\x05 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceR\x06source\x12G\n\x0c\x64\x65stinations\x18\x06 \x03(\x0b\x32#.mgmt.v1alpha1.CreateJobDestinationR\x0c\x64\x65stinations\x12(\n\x10initiate_job_run\x18\x07 \x01(\x08R\x0einitiateJobRun\x12I\n\x10workflow_options\x18\x08 \x01(\x0b\x32\x1e.mgmt.v1alpha1.WorkflowOptionsR\x0fworkflowOptions\x12\x41\n\x0csync_options\x18\t \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityOptionsR\x0bsyncOptions\x12Y\n\x14virtual_foreign_keys\x18\n \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12<\n\x08job_type\x18\x0b \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobTypeConfigH\x01R\x07jobType\x88\x01\x01:\xb2\x01\xbaH\xae\x01\x1a\xab\x01\n\x1e\x64\x65stinations_required_for_sync\x12\x33\x46or sync jobs, at least one destination is required\x1aT!has(this.job_type) || has(this.job_type.sync) ? size(this.destinations) >= 1 : trueB\x10\n\x0e_cron_scheduleB\x0b\n\t_job_type\"\xdc\x35\n\rJobTypeConfig\x12>\n\x04sync\x18\x01 \x01(\x0b\x32(.mgmt.v1alpha1.JobTypeConfig.JobTypeSyncH\x00R\x04sync\x12N\n\npii_detect\x18\x02 \x01(\x0b\x32-.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetectH\x00R\tpiiDetect\x1a\xab,\n\x0bJobTypeSync\x12_\n\rschema_change\x18\x01 \x01(\x0b\x32\x35.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaChangeH\x00R\x0cschemaChange\x88\x01\x01\x12_\n\x0fschema_mappings\x18\x02 \x03(\x0b\x32\x36.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMappingR\x0eschemaMappings\x1a\xfb\x02\n\x0cSchemaChange\x12\x65\n\x0fschema_strategy\x18\x01 \x01(\x0b\x32\x37.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategyH\x00R\x0eschemaStrategy\x88\x01\x01\x12\x62\n\x0etable_strategy\x18\x02 \x01(\x0b\x32\x36.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategyH\x01R\rtableStrategy\x88\x01\x01\x12\x65\n\x0f\x63olumn_strategy\x18\x03 \x01(\x0b\x32\x37.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategyH\x02R\x0e\x63olumnStrategy\x88\x01\x01\x42\x12\n\x10_schema_strategyB\x11\n\x0f_table_strategyB\x12\n\x10_column_strategy\x1a\xb7\x02\n\x0eSchemaStrategy\x12o\n\x0fmap_all_schemas\x18\x01 \x01(\x0b\x32\x45.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemasH\x00R\rmapAllSchemas\x12{\n\x13map_defined_schemas\x18\x02 \x01(\x0b\x32I.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemasH\x00R\x11mapDefinedSchemas\x1a\x0f\n\rMapAllSchemas\x1a\x13\n\x11MapDefinedSchemasB\x11\n\x08strategy\x12\x05\xbaH\x02\x08\x00\x1a\xac\x02\n\rTableStrategy\x12k\n\x0emap_all_tables\x18\x01 \x01(\x0b\x32\x43.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapAllTablesH\x00R\x0cmapAllTables\x12w\n\x12map_defined_tables\x18\x02 \x01(\x0b\x32G.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTablesH\x00R\x10mapDefinedTables\x1a\x0e\n\x0cMapAllTables\x1a\x12\n\x10MapDefinedTablesB\x11\n\x08strategy\x12\x05\xbaH\x02\x08\x00\x1a\x89\x1b\n\x0e\x43olumnStrategy\x12o\n\x0fmap_all_columns\x18\x01 \x01(\x0b\x32\x45.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumnsH\x00R\rmapAllColumns\x12{\n\x13map_defined_columns\x18\x02 \x01(\x0b\x32I.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumnsH\x00R\x11mapDefinedColumns\x1a\xea\x06\n\rMapAllColumns\x12\x9a\x01\n\x1b\x63olumn_in_source_not_mapped\x18\x01 \x01(\x0b\x32W.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategyH\x00R\x17\x63olumnInSourceNotMapped\x88\x01\x01\x12\x9a\x01\n\x1b\x63olumn_mapped_not_in_source\x18\x02 \x01(\x0b\x32W.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategyH\x01R\x17\x63olumnMappedNotInSource\x88\x01\x01\x12\xc3\x01\n*column_in_source_mapped_not_in_destination\x18\x03 \x01(\x0b\x32\x64.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategyH\x02R$columnInSourceMappedNotInDestination\x88\x01\x01\x12\xbb\x01\n)column_in_destination_no_longer_in_source\x18\x04 \x01(\x0b\x32^.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategyH\x03R#columnInDestinationNoLongerInSource\x88\x01\x01\x42\x1e\n\x1c_column_in_source_not_mappedB\x1e\n\x1c_column_mapped_not_in_sourceB-\n+_column_in_source_mapped_not_in_destinationB,\n*_column_in_destination_no_longer_in_source\x1a\xc5\x03\n\x11MapDefinedColumns\x12\x9a\x01\n\x1b\x63olumn_mapped_not_in_source\x18\x01 \x01(\x0b\x32W.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategyH\x00R\x17\x63olumnMappedNotInSource\x88\x01\x01\x12\xc3\x01\n*column_in_source_mapped_not_in_destination\x18\x02 \x01(\x0b\x32\x64.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategyH\x01R$columnInSourceMappedNotInDestination\x88\x01\x01\x42\x1e\n\x1c_column_mapped_not_in_sourceB-\n+_column_in_source_mapped_not_in_destination\x1a\xc7\x04\n\x1f\x43olumnInSourceNotMappedStrategy\x12\x87\x01\n\x0bpassthrough\x18\x01 \x01(\x0b\x32\x63.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.PassthroughH\x00R\x0bpassthrough\x12|\n\x08\x61uto_map\x18\x02 \x01(\x0b\x32_.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMapH\x00R\x07\x61utoMap\x12r\n\x04halt\x18\x03 \x01(\x0b\x32\\.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.HaltH\x00R\x04halt\x12r\n\x04\x64rop\x18\x04 \x01(\x0b\x32\\.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.DropH\x00R\x04\x64rop\x1a\r\n\x0bPassthrough\x1a\t\n\x07\x41utoMap\x1a\x06\n\x04Halt\x1a\x06\n\x04\x44ropB\n\n\x08strategy\x1a\xb5\x02\n\x1f\x43olumnMappedNotInSourceStrategy\x12~\n\x08\x63ontinue\x18\x01 \x01(\x0b\x32`.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.ContinueH\x00R\x08\x63ontinue\x12r\n\x04halt\x18\x02 \x01(\x0b\x32\\.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.HaltH\x00R\x04halt\x1a\n\n\x08\x43ontinue\x1a\x06\n\x04HaltB\n\n\x08strategy\x1a\xe6\x03\n,ColumnInSourceMappedNotInDestinationStrategy\x12\x8b\x01\n\x08\x63ontinue\x18\x01 \x01(\x0b\x32m.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.ContinueH\x00R\x08\x63ontinue\x12\x7f\n\x04\x64rop\x18\x02 \x01(\x0b\x32i.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.DropH\x00R\x04\x64rop\x12\x7f\n\x04halt\x18\x03 \x01(\x0b\x32i.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.HaltH\x00R\x04halt\x1a\n\n\x08\x43ontinue\x1a\x06\n\x04\x44rop\x1a\x06\n\x04HaltB\n\n\x08strategy\x1a\xdc\x03\n&ColumnInDestinationNotInSourceStrategy\x12\x85\x01\n\x08\x63ontinue\x18\x01 \x01(\x0b\x32g.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.ContinueH\x00R\x08\x63ontinue\x12y\n\x04halt\x18\x02 \x01(\x0b\x32\x63.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.HaltH\x00R\x04halt\x12\x83\x01\n\x08\x61uto_map\x18\x03 \x01(\x0b\x32\x66.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMapH\x00R\x07\x61utoMap\x1a\n\n\x08\x43ontinue\x1a\x06\n\x04Halt\x1a\t\n\x07\x41utoMapB\n\n\x08strategyB\n\n\x08strategy\x1a\xd4\x07\n\rSchemaMapping\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12\x32\n\x12\x64\x65stination_schema\x18\x02 \x01(\tH\x00R\x11\x64\x65stinationSchema\x88\x01\x01\x12j\n\x0etable_mappings\x18\x03 \x03(\x0b\x32\x43.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMappingR\rtableMappings\x12\x62\n\x0etable_strategy\x18\x04 \x01(\x0b\x32\x36.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.TableStrategyH\x01R\rtableStrategy\x88\x01\x01\x12\x65\n\x0f\x63olumn_strategy\x18\x05 \x01(\x0b\x32\x37.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategyH\x02R\x0e\x63olumnStrategy\x88\x01\x01\x1a\xf8\x03\n\x0cTableMapping\x12\x1d\n\x05table\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12\x30\n\x11\x64\x65stination_table\x18\x02 \x01(\tH\x00R\x10\x64\x65stinationTable\x88\x01\x01\x12z\n\x0f\x63olumn_mappings\x18\x03 \x03(\x0b\x32Q.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMappingR\x0e\x63olumnMappings\x12\x65\n\x0f\x63olumn_strategy\x18\x04 \x01(\x0b\x32\x37.mgmt.v1alpha1.JobTypeConfig.JobTypeSync.ColumnStrategyH\x01R\x0e\x63olumnStrategy\x88\x01\x01\x1a\x89\x01\n\rColumnMapping\x12\x1f\n\x06\x63olumn\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x63olumn\x12G\n\x0btransformer\x18\x02 \x01(\x0b\x32 .mgmt.v1alpha1.TransformerConfigH\x00R\x0btransformer\x88\x01\x01\x42\x0e\n\x0c_transformerB\x14\n\x12_destination_tableB\x12\n\x10_column_strategyB\x15\n\x13_destination_schemaB\x11\n\x0f_table_strategyB\x12\n\x10_column_strategyB\x10\n\x0e_schema_change\x1a\xf9\x07\n\x10JobTypePiiDetect\x12_\n\rdata_sampling\x18\x01 \x01(\x0b\x32:.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSamplingR\x0c\x64\x61taSampling\x12i\n\x11table_scan_filter\x18\x02 \x01(\x0b\x32=.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilterR\x0ftableScanFilter\x12$\n\x0buser_prompt\x18\x03 \x01(\tH\x00R\nuserPrompt\x88\x01\x01\x12`\n\x0bincremental\x18\x04 \x01(\x0b\x32\x39.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncrementalH\x01R\x0bincremental\x88\x01\x01\x1a,\n\x0bIncremental\x12\x1d\n\nis_enabled\x18\x01 \x01(\x08R\tisEnabled\x1a-\n\x0c\x44\x61taSampling\x12\x1d\n\nis_enabled\x18\x01 \x01(\x08R\tisEnabled\x1a\xaf\x02\n\x0fTableScanFilter\x12[\n\x0binclude_all\x18\x01 \x01(\x0b\x32\x38.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAllH\x00R\nincludeAll\x12W\n\x07include\x18\x02 \x01(\x0b\x32;.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatternsH\x00R\x07include\x12W\n\x07\x65xclude\x18\x03 \x01(\x0b\x32;.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatternsH\x00R\x07\x65xcludeB\r\n\x04mode\x12\x05\xbaH\x02\x08\x01\x1a\x0c\n\nIncludeAll\x1a\x80\x01\n\rTablePatterns\x12\x18\n\x07schemas\x18\x01 \x03(\tR\x07schemas\x12U\n\x06tables\x18\x02 \x03(\x0b\x32=.mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifierR\x06tables\x1aQ\n\x0fTableIdentifier\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12\x1d\n\x05table\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05tableB\x0e\n\x0c_user_promptB\x0e\n\x0c_incrementalB\x11\n\x08job_type\x12\x05\xbaH\x02\x08\x00\"q\n\x0fWorkflowOptions\x12$\n\x0brun_timeout\x18\x08 \x01(\x03H\x00R\nrunTimeout\x88\x01\x01\x42\x0e\n\x0c_run_timeoutJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08\"\x95\x02\n\x0f\x41\x63tivityOptions\x12G\n\x19schedule_to_close_timeout\x18\x01 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x00R\x16scheduleToCloseTimeout\x88\x01\x01\x12\x41\n\x16start_to_close_timeout\x18\x02 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x01R\x13startToCloseTimeout\x88\x01\x01\x12=\n\x0cretry_policy\x18\x03 \x01(\x0b\x32\x1a.mgmt.v1alpha1.RetryPolicyR\x0bretryPolicyB\x1c\n\x1a_schedule_to_close_timeoutB\x19\n\x17_start_to_close_timeout\"[\n\x0bRetryPolicy\x12\x37\n\x10maximum_attempts\x18\x01 \x01(\x05\x42\x07\xbaH\x04\x1a\x02(\x00H\x00R\x0fmaximumAttempts\x88\x01\x01\x42\x13\n\x11_maximum_attempts\"9\n\x11\x43reateJobResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"W\n\x15JobMappingTransformer\x12\x38\n\x06\x63onfig\x18\x03 \x01(\x0b\x32 .mgmt.v1alpha1.TransformerConfigR\x06\x63onfigJ\x04\x08\x01\x10\x02\"\xb5\x01\n\nJobMapping\x12\x1f\n\x06schema\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06schema\x12\x1d\n\x05table\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05table\x12\x1f\n\x06\x63olumn\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x63olumn\x12\x46\n\x0btransformer\x18\x05 \x01(\x0b\x32$.mgmt.v1alpha1.JobMappingTransformerR\x0btransformer\")\n\rGetJobRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"6\n\x0eGetJobResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"p\n\x18UpdateJobScheduleRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12(\n\rcron_schedule\x18\x02 \x01(\tH\x00R\x0c\x63ronSchedule\x88\x01\x01\x42\x10\n\x0e_cron_schedule\"A\n\x19UpdateJobScheduleResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"c\n\x0fPauseJobRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x14\n\x05pause\x18\x02 \x01(\x08R\x05pause\x12\x17\n\x04note\x18\x03 \x01(\tH\x00R\x04note\x88\x01\x01\x42\x07\n\x05_note\"8\n\x10PauseJobResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"\xb9\x02\n UpdateJobSourceConnectionRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x30\n\x06source\x18\x02 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceR\x06source\x12\x35\n\x08mappings\x18\x03 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12Y\n\x14virtual_foreign_keys\x18\x04 \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12\x37\n\x08job_type\x18\x05 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobTypeConfigR\x07jobType\"I\n!UpdateJobSourceConnectionResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"r\n\x1aPostgresSourceSchemaSubset\x12T\n\x10postgres_schemas\x18\x01 \x03(\x0b\x32).mgmt.v1alpha1.PostgresSourceSchemaOptionR\x0fpostgresSchemas\"f\n\x17MysqlSourceSchemaSubset\x12K\n\rmysql_schemas\x18\x01 \x03(\x0b\x32&.mgmt.v1alpha1.MysqlSourceSchemaOptionR\x0cmysqlSchemas\"^\n\x1a\x44ynamoDBSourceSchemaSubset\x12@\n\x06tables\x18\x01 \x03(\x0b\x32(.mgmt.v1alpha1.DynamoDBSourceTableOptionR\x06tables\"f\n\x17MssqlSourceSchemaSubset\x12K\n\rmssql_schemas\x18\x01 \x03(\x0b\x32&.mgmt.v1alpha1.MssqlSourceSchemaOptionR\x0cmssqlSchemas\"\xf8\x02\n\x18JobSourceSqlSubetSchemas\x12T\n\x0fpostgres_subset\x18\x02 \x01(\x0b\x32).mgmt.v1alpha1.PostgresSourceSchemaSubsetH\x00R\x0epostgresSubset\x12K\n\x0cmysql_subset\x18\x03 \x01(\x0b\x32&.mgmt.v1alpha1.MysqlSourceSchemaSubsetH\x00R\x0bmysqlSubset\x12T\n\x0f\x64ynamodb_subset\x18\x04 \x01(\x0b\x32).mgmt.v1alpha1.DynamoDBSourceSchemaSubsetH\x00R\x0e\x64ynamodbSubset\x12K\n\x0cmssql_subset\x18\x05 \x01(\x0b\x32&.mgmt.v1alpha1.MssqlSourceSchemaSubsetH\x00R\x0bmssqlSubsetB\x10\n\x07schemas\x12\x05\xbaH\x02\x08\x01J\x04\x08\x01\x10\x02\"\xd0\x01\n\'SetJobSourceSqlConnectionSubsetsRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x41\n\x07schemas\x18\x02 \x01(\x0b\x32\'.mgmt.v1alpha1.JobSourceSqlSubetSchemasR\x07schemas\x12H\n!subset_by_foreign_key_constraints\x18\x03 \x01(\x08R\x1dsubsetByForeignKeyConstraints\"P\n(SetJobSourceSqlConnectionSubsetsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"\xde\x01\n%UpdateJobDestinationConnectionRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12-\n\rconnection_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12>\n\x07options\x18\x03 \x01(\x0b\x32$.mgmt.v1alpha1.JobDestinationOptionsR\x07options\x12%\n\x0e\x64\x65stination_id\x18\x04 \x01(\tR\rdestinationId\"N\n&UpdateJobDestinationConnectionResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"X\n%DeleteJobDestinationConnectionRequest\x12/\n\x0e\x64\x65stination_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\rdestinationId\"(\n&DeleteJobDestinationConnectionResponse\"\x9c\x01\n&CreateJobDestinationConnectionsRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12Q\n\x0c\x64\x65stinations\x18\x02 \x03(\x0b\x32#.mgmt.v1alpha1.CreateJobDestinationB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0c\x64\x65stinations\"O\n\'CreateJobDestinationConnectionsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\",\n\x10\x44\x65leteJobRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\x13\n\x11\x44\x65leteJobResponse\"s\n\x19IsJobNameAvailableRequest\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"?\n\x1aIsJobNameAvailableResponse\x12!\n\x0cis_available\x18\x01 \x01(\x08R\x0bisAvailable\"g\n\x11GetJobRunsRequest\x12!\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05jobId\x12)\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\taccountIdB\x04\n\x02id\"F\n\x12GetJobRunsResponse\x12\x30\n\x08job_runs\x18\x01 \x03(\x0b\x32\x15.mgmt.v1alpha1.JobRunR\x07jobRuns\"Y\n\x10GetJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"C\n\x11GetJobRunResponse\x12.\n\x07job_run\x18\x01 \x01(\x0b\x32\x15.mgmt.v1alpha1.JobRunR\x06jobRun\"6\n\x13\x43reateJobRunRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"\x16\n\x14\x43reateJobRunResponse\"\\\n\x13\x43\x61ncelJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\x16\n\x14\x43\x61ncelJobRunResponse\"\xa2\x06\n\x03Job\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12+\n\x12\x63reated_by_user_id\x18\x02 \x01(\tR\x0f\x63reatedByUserId\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x12updated_by_user_id\x18\x04 \x01(\tR\x0fupdatedByUserId\x12\x39\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x12\n\x04name\x18\x06 \x01(\tR\x04name\x12\x30\n\x06source\x18\x07 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceR\x06source\x12\x41\n\x0c\x64\x65stinations\x18\x08 \x03(\x0b\x32\x1d.mgmt.v1alpha1.JobDestinationR\x0c\x64\x65stinations\x12\x35\n\x08mappings\x18\t \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12(\n\rcron_schedule\x18\n \x01(\tH\x00R\x0c\x63ronSchedule\x88\x01\x01\x12\x1d\n\naccount_id\x18\x0b \x01(\tR\taccountId\x12\x41\n\x0csync_options\x18\x0c \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityOptionsR\x0bsyncOptions\x12I\n\x10workflow_options\x18\r \x01(\x0b\x32\x1e.mgmt.v1alpha1.WorkflowOptionsR\x0fworkflowOptions\x12Y\n\x14virtual_foreign_keys\x18\x0e \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12\x37\n\x08job_type\x18\x0f \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobTypeConfigR\x07jobTypeB\x10\n\x0e_cron_schedule\"g\n\x0cJobRecentRun\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x1c\n\njob_run_id\x18\x02 \x01(\tR\x08jobRunId\":\n\x17GetJobRecentRunsRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"X\n\x18GetJobRecentRunsResponse\x12<\n\x0brecent_runs\x18\x01 \x03(\x0b\x32\x1b.mgmt.v1alpha1.JobRecentRunR\nrecentRuns\"O\n\x0bJobNextRuns\x12@\n\x0enext_run_times\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.TimestampR\x0cnextRunTimes\"8\n\x15GetJobNextRunsRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"Q\n\x16GetJobNextRunsResponse\x12\x37\n\tnext_runs\x18\x01 \x01(\x0b\x32\x1a.mgmt.v1alpha1.JobNextRunsR\x08nextRuns\"6\n\x13GetJobStatusRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"H\n\x14GetJobStatusResponse\x12\x30\n\x06status\x18\x01 \x01(\x0e\x32\x18.mgmt.v1alpha1.JobStatusR\x06status\"d\n\x0fJobStatusRecord\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12\x30\n\x06status\x18\x02 \x01(\x0e\x32\x18.mgmt.v1alpha1.JobStatusR\x06status\"@\n\x15GetJobStatusesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"T\n\x16GetJobStatusesResponse\x12:\n\x08statuses\x18\x01 \x03(\x0b\x32\x1e.mgmt.v1alpha1.JobStatusRecordR\x08statuses\"+\n\x0f\x41\x63tivityFailure\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\"\xc6\x01\n\x0fPendingActivity\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32\x1d.mgmt.v1alpha1.ActivityStatusR\x06status\x12#\n\ractivity_name\x18\x02 \x01(\tR\x0c\x61\x63tivityName\x12\x46\n\x0clast_failure\x18\x03 \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityFailureH\x00R\x0blastFailure\x88\x01\x01\x42\x0f\n\r_last_failure\"\xdd\x02\n\x06JobRun\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x33\n\x06status\x18\x04 \x01(\x0e\x32\x1b.mgmt.v1alpha1.JobRunStatusR\x06status\x12\x39\n\nstarted_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x42\n\x0c\x63ompleted_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x0b\x63ompletedAt\x88\x01\x01\x12M\n\x12pending_activities\x18\x08 \x03(\x0b\x32\x1e.mgmt.v1alpha1.PendingActivityR\x11pendingActivitiesB\x0f\n\r_completed_atJ\x04\x08\x05\x10\x06\"Q\n\x14JobRunEventTaskError\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\x12\x1f\n\x0bretry_state\x18\x02 \x01(\tR\nretryState\"\xab\x01\n\x0fJobRunEventTask\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x39\n\nevent_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\teventTime\x12\x39\n\x05\x65rror\x18\x04 \x01(\x0b\x32#.mgmt.v1alpha1.JobRunEventTaskErrorR\x05\x65rror\"B\n\x12JobRunSyncMetadata\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\"r\n\x13JobRunEventMetadata\x12H\n\rsync_metadata\x18\x01 \x01(\x0b\x32!.mgmt.v1alpha1.JobRunSyncMetadataH\x00R\x0csyncMetadataB\x11\n\x08metadata\x12\x05\xbaH\x02\x08\x01\"\x9d\x02\n\x0bJobRunEvent\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n\x04type\x18\x02 \x01(\tR\x04type\x12\x39\n\nstart_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x39\n\nclose_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcloseTime\x12>\n\x08metadata\x18\x05 \x01(\x0b\x32\".mgmt.v1alpha1.JobRunEventMetadataR\x08metadata\x12\x34\n\x05tasks\x18\x06 \x03(\x0b\x32\x1e.mgmt.v1alpha1.JobRunEventTaskR\x05tasks\"_\n\x16GetJobRunEventsRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"u\n\x17GetJobRunEventsResponse\x12\x32\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.JobRunEventR\x06\x65vents\x12&\n\x0fis_run_complete\x18\x02 \x01(\x08R\risRunComplete\"\\\n\x13\x44\x65leteJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\x16\n\x14\x44\x65leteJobRunResponse\"_\n\x16TerminateJobRunRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"\x19\n\x17TerminateJobRunResponse\"\xb2\x02\n\x1aGetJobRunLogsStreamRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x30\n\x06window\x18\x03 \x01(\x0e\x32\x18.mgmt.v1alpha1.LogWindowR\x06window\x12\x1f\n\x0bshould_tail\x18\x04 \x01(\x08R\nshouldTail\x12\x30\n\rmax_log_lines\x18\x05 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x00R\x0bmaxLogLines\x88\x01\x01\x12\x36\n\nlog_levels\x18\x06 \x03(\x0e\x32\x17.mgmt.v1alpha1.LogLevelR\tlogLevelsB\x10\n\x0e_max_log_lines\"\x90\x02\n\x1bGetJobRunLogsStreamResponse\x12\x19\n\x08log_line\x18\x01 \x01(\tR\x07logLine\x12=\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x88\x01\x01\x12N\n\x06labels\x18\x03 \x03(\x0b\x32\x36.mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0c\n\n_timestamp\"\x8b\x02\n\x14GetJobRunLogsRequest\x12\x1c\n\njob_run_id\x18\x01 \x01(\tR\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x30\n\x06window\x18\x03 \x01(\x0e\x32\x18.mgmt.v1alpha1.LogWindowR\x06window\x12\x30\n\rmax_log_lines\x18\x04 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x01H\x00R\x0bmaxLogLines\x88\x01\x01\x12\x36\n\nlog_levels\x18\x05 \x03(\x0e\x32\x17.mgmt.v1alpha1.LogLevelR\tlogLevelsB\x10\n\x0e_max_log_lines\"\xe3\x02\n\x15GetJobRunLogsResponse\x12I\n\tlog_lines\x18\x01 \x03(\x0b\x32,.mgmt.v1alpha1.GetJobRunLogsResponse.LogLineR\x08logLines\x1a\xfe\x01\n\x07LogLine\x12\x19\n\x08log_line\x18\x01 \x01(\tR\x07logLine\x12=\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\ttimestamp\x88\x01\x01\x12P\n\x06labels\x18\x03 \x03(\x0b\x32\x38.mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0c\n\n_timestamp\"\x83\x01\n\x1cSetJobWorkflowOptionsRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12I\n\x10worfklow_options\x18\x02 \x01(\x0b\x32\x1e.mgmt.v1alpha1.WorkflowOptionsR\x0fworfklowOptions\"E\n\x1dSetJobWorkflowOptionsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"w\n\x18SetJobSyncOptionsRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x41\n\x0csync_options\x18\x02 \x01(\x0b\x32\x1e.mgmt.v1alpha1.ActivityOptionsR\x0bsyncOptions\"A\n\x19SetJobSyncOptionsResponse\x12$\n\x03job\x18\x01 \x01(\x0b\x32\x12.mgmt.v1alpha1.JobR\x03job\"\xd3\x02\n\x1aValidateJobMappingsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12\x35\n\x08mappings\x18\x02 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12-\n\rconnection_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12Y\n\x14virtual_foreign_keys\x18\x04 \x03(\x0b\x32\'.mgmt.v1alpha1.VirtualForeignConstraintR\x12virtualForeignKeys\x12<\n\njob_source\x18\x05 \x01(\x0b\x32\x18.mgmt.v1alpha1.JobSourceH\x00R\tjobSource\x88\x01\x01\x42\r\n\x0b_job_source\"\xe7\x07\n\x0b\x43olumnError\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x16\n\x06\x63olumn\x18\x03 \x01(\tR\x06\x63olumn\x12\x1a\n\x06\x65rrors\x18\x04 \x03(\tB\x02\x18\x01R\x06\x65rrors\x12Q\n\rerror_reports\x18\x05 \x03(\x0b\x32,.mgmt.v1alpha1.ColumnError.ColumnErrorReportR\x0c\x65rrorReports\x1am\n\x11\x43olumnErrorReport\x12>\n\x04\x63ode\x18\x01 \x01(\x0e\x32*.mgmt.v1alpha1.ColumnError.ColumnErrorCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\xb3\x05\n\x0f\x43olumnErrorCode\x12!\n\x1d\x43OLUMN_ERROR_CODE_UNSPECIFIED\x10\x00\x12)\n%COLUMN_ERROR_CODE_NOT_FOUND_IN_SOURCE\x10\x01\x12*\n&COLUMN_ERROR_CODE_NOT_FOUND_IN_MAPPING\x10\x02\x12:\n6COLUMN_ERROR_CODE_REQUIRED_COLUMN_NOT_FOUND_IN_MAPPING\x10\x03\x12?\n;COLUMN_ERROR_CODE_REQUIRED_FOREIGN_KEY_NOT_FOUND_IN_MAPPING\x10\x04\x12K\nGCOLUMN_ERROR_CODE_UNSUPPORTED_CIRCULAR_DEPENDENCY_AT_LEAST_ONE_NULLABLE\x10\x05\x12<\n8COLUMN_ERROR_CODE_VFK_SOURCE_COLUMN_NOT_FOUND_IN_MAPPING\x10\x06\x12;\n7COLUMN_ERROR_CODE_VFK_SOURCE_COLUMN_NOT_FOUND_IN_SOURCE\x10\x07\x12<\n8COLUMN_ERROR_CODE_VFK_TARGET_COLUMN_NOT_FOUND_IN_MAPPING\x10\x08\x12;\n7COLUMN_ERROR_CODE_VFK_TARGET_COLUMN_NOT_FOUND_IN_SOURCE\x10\t\x12\x32\n.COLUMN_ERROR_CODE_VFK_COLUMN_DATATYPE_MISMATCH\x10\n\x12\x32\n.COLUMN_ERROR_CODE_VFK_SOURCE_COLUMN_NOT_UNIQUE\x10\x0b\"\xdb\x03\n\rColumnWarning\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x16\n\x06\x63olumn\x18\x03 \x01(\tR\x06\x63olumn\x12\x1e\n\x08warnings\x18\x05 \x03(\tB\x02\x18\x01R\x08warnings\x12Y\n\x0fwarning_reports\x18\x06 \x03(\x0b\x32\x30.mgmt.v1alpha1.ColumnWarning.ColumnWarningReportR\x0ewarningReports\x1as\n\x13\x43olumnWarningReport\x12\x42\n\x04\x63ode\x18\x01 \x01(\x0e\x32..mgmt.v1alpha1.ColumnWarning.ColumnWarningCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\x93\x01\n\x11\x43olumnWarningCode\x12#\n\x1f\x43OLUMN_WARNING_CODE_UNSPECIFIED\x10\x00\x12+\n\'COLUMN_WARNING_CODE_NOT_FOUND_IN_SOURCE\x10\x01\x12,\n(COLUMN_WARNING_CODE_NOT_FOUND_IN_MAPPING\x10\x02\"\xae\x03\n\rDatabaseError\x12\x1a\n\x06\x65rrors\x18\x01 \x03(\tB\x02\x18\x01R\x06\x65rrors\x12U\n\rerror_reports\x18\x02 \x03(\x0b\x32\x30.mgmt.v1alpha1.DatabaseError.DatabaseErrorReportR\x0c\x65rrorReports\x1as\n\x13\x44\x61tabaseErrorReport\x12\x42\n\x04\x63ode\x18\x01 \x01(\x0e\x32..mgmt.v1alpha1.DatabaseError.DatabaseErrorCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\xb4\x01\n\x11\x44\x61tabaseErrorCode\x12#\n\x1f\x44\x41TABASE_ERROR_CODE_UNSPECIFIED\x10\x00\x12M\nIDATABASE_ERROR_CODE_UNSUPPORTED_CIRCULAR_DEPENDENCY_AT_LEAST_ONE_NULLABLE\x10\x01\x12+\n\'DATABASE_ERROR_CODE_VFK_COLUMN_MISMATCH\x10\x02\"\xca\x04\n\nTableError\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12O\n\rerror_reports\x18\x03 \x03(\x0b\x32*.mgmt.v1alpha1.TableError.TableErrorReportR\x0c\x65rrorReports\x1aj\n\x10TableErrorReport\x12<\n\x04\x63ode\x18\x01 \x01(\x0e\x32(.mgmt.v1alpha1.TableError.TableErrorCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"\xd0\x02\n\x0eTableErrorCode\x12 \n\x1cTABLE_ERROR_CODE_UNSPECIFIED\x10\x00\x12.\n*TABLE_ERROR_CODE_TABLE_NOT_FOUND_IN_SOURCE\x10\x01\x12:\n6TABLE_ERROR_CODE_VFK_SOURCE_TABLE_NOT_FOUND_IN_MAPPING\x10\x02\x12\x39\n5TABLE_ERROR_CODE_VFK_SOURCE_TABLE_NOT_FOUND_IN_SOURCE\x10\x03\x12:\n6TABLE_ERROR_CODE_VFK_TARGET_TABLE_NOT_FOUND_IN_MAPPING\x10\x04\x12\x39\n5TABLE_ERROR_CODE_VFK_TARGET_TABLE_NOT_FOUND_IN_SOURCE\x10\x05\"\xaa\x02\n\x1bValidateJobMappingsResponse\x12?\n\rcolumn_errors\x18\x01 \x03(\x0b\x32\x1a.mgmt.v1alpha1.ColumnErrorR\x0c\x63olumnErrors\x12\x45\n\x0f\x64\x61tabase_errors\x18\x02 \x01(\x0b\x32\x1c.mgmt.v1alpha1.DatabaseErrorR\x0e\x64\x61tabaseErrors\x12\x45\n\x0f\x63olumn_warnings\x18\x03 \x03(\x0b\x32\x1c.mgmt.v1alpha1.ColumnWarningR\x0e\x63olumnWarnings\x12<\n\x0ctable_errors\x18\x04 \x03(\x0b\x32\x19.mgmt.v1alpha1.TableErrorR\x0btableErrors\"}\n\x15ValidateSchemaRequest\x12\x35\n\x08mappings\x18\x01 \x03(\x0b\x32\x19.mgmt.v1alpha1.JobMappingR\x08mappings\x12-\n\rconnection_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\"\xd8\x02\n\x16ValidateSchemaResponse\x12\x46\n\x0fmissing_columns\x18\x01 \x03(\x0b\x32\x1d.mgmt.v1alpha1.DatabaseColumnR\x0emissingColumns\x12\x42\n\rextra_columns\x18\x02 \x03(\x0b\x32\x1d.mgmt.v1alpha1.DatabaseColumnR\x0c\x65xtraColumns\x12R\n\x0emissing_tables\x18\x03 \x03(\x0b\x32+.mgmt.v1alpha1.ValidateSchemaResponse.TableR\rmissingTables\x12\'\n\x0fmissing_schemas\x18\x04 \x03(\tR\x0emissingSchemas\x1a\x35\n\x05Table\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\"[\n\x11VirtualForeignKey\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x18\n\x07\x63olumns\x18\x03 \x03(\tR\x07\x63olumns\"\xa5\x01\n\x18VirtualForeignConstraint\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12\x18\n\x07\x63olumns\x18\x03 \x03(\tR\x07\x63olumns\x12\x41\n\x0b\x66oreign_key\x18\x04 \x01(\x0b\x32 .mgmt.v1alpha1.VirtualForeignKeyR\nforeignKey\"\x88\x01\n\rRunContextKey\x12%\n\njob_run_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08jobRunId\x12(\n\x0b\x65xternal_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\nexternalId\x12&\n\naccount_id\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\taccountId\"D\n\x14GetRunContextRequest\x12,\n\x02id\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.RunContextKeyR\x02id\"-\n\x15GetRunContextResponse\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\"Z\n\x14SetRunContextRequest\x12,\n\x02id\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.RunContextKeyR\x02id\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\"\x17\n\x15SetRunContextResponse\"[\n\x15SetRunContextsRequest\x12,\n\x02id\x18\x01 \x01(\x0b\x32\x1c.mgmt.v1alpha1.RunContextKeyR\x02id\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\"\x18\n\x16SetRunContextsResponse\"\xad\x03\n\x07JobHook\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12\x15\n\x06job_id\x18\x04 \x01(\tR\x05jobId\x12\x34\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobHookConfigR\x06\x63onfig\x12+\n\x12\x63reated_by_user_id\x18\x06 \x01(\tR\x0f\x63reatedByUserId\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12+\n\x12updated_by_user_id\x18\x08 \x01(\tR\x0fupdatedByUserId\x12\x39\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x18\n\x07\x65nabled\x18\n \x01(\x08R\x07\x65nabled\x12%\n\x08priority\x18\x0b \x01(\rB\t\xbaH\x06*\x04\x18\x64(\x00R\x08priority\"\xdd\x01\n\nNewJobHook\x12-\n\x04name\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12)\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0b\x64\x65scription\x12\x34\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobHookConfigR\x06\x63onfig\x12\x18\n\x07\x65nabled\x18\x04 \x01(\x08R\x07\x65nabled\x12%\n\x08priority\x18\x05 \x01(\rB\t\xbaH\x06*\x04\x18\x64(\x00R\x08priority\"\xbd\x03\n\rJobHookConfig\x12;\n\x03sql\x18\x05 \x01(\x0b\x32\'.mgmt.v1alpha1.JobHookConfig.JobSqlHookH\x00R\x03sql\x1a\xc5\x02\n\nJobSqlHook\x12\x1d\n\x05query\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05query\x12-\n\rconnection_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0c\x63onnectionId\x12\x46\n\x06timing\x18\x03 \x01(\x0b\x32..mgmt.v1alpha1.JobHookConfig.JobSqlHook.TimingR\x06timing\x1a\xa0\x01\n\x06Timing\x12@\n\x08pre_sync\x18\x03 \x01(\x0b\x32#.mgmt.v1alpha1.JobHookTimingPreSyncH\x00R\x07preSync\x12\x43\n\tpost_sync\x18\x04 \x01(\x0b\x32$.mgmt.v1alpha1.JobHookTimingPostSyncH\x00R\x08postSyncB\x0f\n\x06timing\x12\x05\xbaH\x02\x08\x01\x42\x0f\n\x06\x63onfig\x12\x05\xbaH\x02\x08\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\"\x16\n\x14JobHookTimingPreSync\"\x17\n\x15JobHookTimingPostSync\"5\n\x12GetJobHooksRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\"C\n\x13GetJobHooksResponse\x12,\n\x05hooks\x18\x01 \x03(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x05hooks\"-\n\x11GetJobHookRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"@\n\x12GetJobHookResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"\\\n\x14\x43reateJobHookRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12-\n\x04hook\x18\x02 \x01(\x0b\x32\x19.mgmt.v1alpha1.NewJobHookR\x04hook\"C\n\x15\x43reateJobHookResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"0\n\x14\x44\x65leteJobHookRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\x17\n\x15\x44\x65leteJobHookResponse\"J\n\x1dIsJobHookNameAvailableRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"C\n\x1eIsJobHookNameAvailableResponse\x12!\n\x0cis_available\x18\x01 \x01(\x08R\x0bisAvailable\"\x81\x02\n\x14UpdateJobHookRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12-\n\x04name\x18\x02 \x01(\tB\x19\xbaH\x16r\x14\x32\x12^[a-z0-9-]{3,100}$R\x04name\x12)\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0b\x64\x65scription\x12\x34\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x1c.mgmt.v1alpha1.JobHookConfigR\x06\x63onfig\x12\x18\n\x07\x65nabled\x18\x05 \x01(\x08R\x07\x65nabled\x12%\n\x08priority\x18\x06 \x01(\rB\t\xbaH\x06*\x04\x18\x64(\x00R\x08priority\"C\n\x15UpdateJobHookResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"N\n\x18SetJobHookEnabledRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x18\n\x07\x65nabled\x18\x02 \x01(\x08R\x07\x65nabled\"G\n\x19SetJobHookEnabledResponse\x12*\n\x04hook\x18\x01 \x01(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x04hook\"\xde\x01\n GetActiveJobHooksByTimingRequest\x12\x1f\n\x06job_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05jobId\x12N\n\x06timing\x18\x02 \x01(\x0e\x32\x36.mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.TimingR\x06timing\"I\n\x06Timing\x12\x16\n\x12TIMING_UNSPECIFIED\x10\x00\x12\x12\n\x0eTIMING_PRESYNC\x10\x01\x12\x13\n\x0fTIMING_POSTSYNC\x10\x02\"Q\n!GetActiveJobHooksByTimingResponse\x12,\n\x05hooks\x18\x01 \x03(\x0b\x32\x16.mgmt.v1alpha1.JobHookR\x05hooks\"n\n\x1cGetPiiDetectionReportRequest\x12%\n\njob_run_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08jobRunId\x12\'\n\naccount_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"Z\n\x1dGetPiiDetectionReportResponse\x12\x39\n\x06report\x18\x01 \x01(\x0b\x32!.mgmt.v1alpha1.PiiDetectionReportR\x06report\"\xee\x04\n\x12PiiDetectionReport\x12\x45\n\x06tables\x18\x01 \x03(\x0b\x32-.mgmt.v1alpha1.PiiDetectionReport.TableReportR\x06tables\x1a\x90\x04\n\x0bTableReport\x12\x16\n\x06schema\x18\x01 \x01(\tR\x06schema\x12\x14\n\x05table\x18\x02 \x01(\tR\x05table\x12T\n\x07\x63olumns\x18\x03 \x03(\x0b\x32:.mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReportR\x07\x63olumns\x1a\xfc\x02\n\x0c\x43olumnReport\x12\x16\n\x06\x63olumn\x18\x01 \x01(\tR\x06\x63olumn\x12h\n\x0cregex_report\x18\x02 \x01(\x0b\x32@.mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.RegexH\x00R\x0bregexReport\x88\x01\x01\x12\x62\n\nllm_report\x18\x03 \x01(\x0b\x32>.mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLMH\x01R\tllmReport\x88\x01\x01\x1a#\n\x05Regex\x12\x1a\n\x08\x63\x61tegory\x18\x01 \x01(\tR\x08\x63\x61tegory\x1a\x41\n\x03LLM\x12\x1a\n\x08\x63\x61tegory\x18\x01 \x01(\tR\x08\x63\x61tegory\x12\x1e\n\nconfidence\x18\x02 \x01(\x02R\nconfidenceB\x0f\n\r_regex_reportB\r\n\x0b_llm_report*o\n\tJobStatus\x12\x1a\n\x16JOB_STATUS_UNSPECIFIED\x10\x00\x12\x16\n\x12JOB_STATUS_ENABLED\x10\x01\x12\x15\n\x11JOB_STATUS_PAUSED\x10\x03\x12\x17\n\x13JOB_STATUS_DISABLED\x10\x04*\xa7\x01\n\x0e\x41\x63tivityStatus\x12\x1f\n\x1b\x41\x43TIVITY_STATUS_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x41\x43TIVITY_STATUS_SCHEDULED\x10\x01\x12\x1b\n\x17\x41\x43TIVITY_STATUS_STARTED\x10\x02\x12\x1c\n\x18\x41\x43TIVITY_STATUS_CANCELED\x10\x03\x12\x1a\n\x16\x41\x43TIVITY_STATUS_FAILED\x10\x04*\x92\x02\n\x0cJobRunStatus\x12\x1e\n\x1aJOB_RUN_STATUS_UNSPECIFIED\x10\x00\x12\x1a\n\x16JOB_RUN_STATUS_PENDING\x10\x01\x12\x1a\n\x16JOB_RUN_STATUS_RUNNING\x10\x02\x12\x1b\n\x17JOB_RUN_STATUS_COMPLETE\x10\x03\x12\x18\n\x14JOB_RUN_STATUS_ERROR\x10\x04\x12\x1b\n\x17JOB_RUN_STATUS_CANCELED\x10\x05\x12\x1d\n\x19JOB_RUN_STATUS_TERMINATED\x10\x06\x12\x19\n\x15JOB_RUN_STATUS_FAILED\x10\x07\x12\x1c\n\x18JOB_RUN_STATUS_TIMED_OUT\x10\x08*|\n\tLogWindow\x12\"\n\x1eLOG_WINDOW_NO_TIME_UNSPECIFIED\x10\x00\x12\x1a\n\x16LOG_WINDOW_FIFTEEN_MIN\x10\x01\x12\x17\n\x13LOG_WINDOW_ONE_HOUR\x10\x02\x12\x16\n\x12LOG_WINDOW_ONE_DAY\x10\x03*w\n\x08LogLevel\x12\x19\n\x15LOG_LEVEL_UNSPECIFIED\x10\x00\x12\x13\n\x0fLOG_LEVEL_DEBUG\x10\x01\x12\x12\n\x0eLOG_LEVEL_INFO\x10\x02\x12\x12\n\x0eLOG_LEVEL_WARN\x10\x03\x12\x13\n\x0fLOG_LEVEL_ERROR\x10\x04\x32\xb0!\n\nJobService\x12M\n\x07GetJobs\x12\x1d.mgmt.v1alpha1.GetJobsRequest\x1a\x1e.mgmt.v1alpha1.GetJobsResponse\"\x03\x90\x02\x01\x12J\n\x06GetJob\x12\x1c.mgmt.v1alpha1.GetJobRequest\x1a\x1d.mgmt.v1alpha1.GetJobResponse\"\x03\x90\x02\x01\x12P\n\tCreateJob\x12\x1f.mgmt.v1alpha1.CreateJobRequest\x1a .mgmt.v1alpha1.CreateJobResponse\"\x00\x12P\n\tDeleteJob\x12\x1f.mgmt.v1alpha1.DeleteJobRequest\x1a .mgmt.v1alpha1.DeleteJobResponse\"\x00\x12n\n\x12IsJobNameAvailable\x12(.mgmt.v1alpha1.IsJobNameAvailableRequest\x1a).mgmt.v1alpha1.IsJobNameAvailableResponse\"\x03\x90\x02\x01\x12h\n\x11UpdateJobSchedule\x12\'.mgmt.v1alpha1.UpdateJobScheduleRequest\x1a(.mgmt.v1alpha1.UpdateJobScheduleResponse\"\x00\x12\x80\x01\n\x19UpdateJobSourceConnection\x12/.mgmt.v1alpha1.UpdateJobSourceConnectionRequest\x1a\x30.mgmt.v1alpha1.UpdateJobSourceConnectionResponse\"\x00\x12\x95\x01\n SetJobSourceSqlConnectionSubsets\x12\x36.mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest\x1a\x37.mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse\"\x00\x12\x8f\x01\n\x1eUpdateJobDestinationConnection\x12\x34.mgmt.v1alpha1.UpdateJobDestinationConnectionRequest\x1a\x35.mgmt.v1alpha1.UpdateJobDestinationConnectionResponse\"\x00\x12\x8f\x01\n\x1e\x44\x65leteJobDestinationConnection\x12\x34.mgmt.v1alpha1.DeleteJobDestinationConnectionRequest\x1a\x35.mgmt.v1alpha1.DeleteJobDestinationConnectionResponse\"\x00\x12\x92\x01\n\x1f\x43reateJobDestinationConnections\x12\x35.mgmt.v1alpha1.CreateJobDestinationConnectionsRequest\x1a\x36.mgmt.v1alpha1.CreateJobDestinationConnectionsResponse\"\x00\x12M\n\x08PauseJob\x12\x1e.mgmt.v1alpha1.PauseJobRequest\x1a\x1f.mgmt.v1alpha1.PauseJobResponse\"\x00\x12h\n\x10GetJobRecentRuns\x12&.mgmt.v1alpha1.GetJobRecentRunsRequest\x1a\'.mgmt.v1alpha1.GetJobRecentRunsResponse\"\x03\x90\x02\x01\x12\x62\n\x0eGetJobNextRuns\x12$.mgmt.v1alpha1.GetJobNextRunsRequest\x1a%.mgmt.v1alpha1.GetJobNextRunsResponse\"\x03\x90\x02\x01\x12\\\n\x0cGetJobStatus\x12\".mgmt.v1alpha1.GetJobStatusRequest\x1a#.mgmt.v1alpha1.GetJobStatusResponse\"\x03\x90\x02\x01\x12\x62\n\x0eGetJobStatuses\x12$.mgmt.v1alpha1.GetJobStatusesRequest\x1a%.mgmt.v1alpha1.GetJobStatusesResponse\"\x03\x90\x02\x01\x12V\n\nGetJobRuns\x12 .mgmt.v1alpha1.GetJobRunsRequest\x1a!.mgmt.v1alpha1.GetJobRunsResponse\"\x03\x90\x02\x01\x12\x65\n\x0fGetJobRunEvents\x12%.mgmt.v1alpha1.GetJobRunEventsRequest\x1a&.mgmt.v1alpha1.GetJobRunEventsResponse\"\x03\x90\x02\x01\x12S\n\tGetJobRun\x12\x1f.mgmt.v1alpha1.GetJobRunRequest\x1a .mgmt.v1alpha1.GetJobRunResponse\"\x03\x90\x02\x01\x12Y\n\x0c\x44\x65leteJobRun\x12\".mgmt.v1alpha1.DeleteJobRunRequest\x1a#.mgmt.v1alpha1.DeleteJobRunResponse\"\x00\x12Y\n\x0c\x43reateJobRun\x12\".mgmt.v1alpha1.CreateJobRunRequest\x1a#.mgmt.v1alpha1.CreateJobRunResponse\"\x00\x12Y\n\x0c\x43\x61ncelJobRun\x12\".mgmt.v1alpha1.CancelJobRunRequest\x1a#.mgmt.v1alpha1.CancelJobRunResponse\"\x00\x12\x62\n\x0fTerminateJobRun\x12%.mgmt.v1alpha1.TerminateJobRunRequest\x1a&.mgmt.v1alpha1.TerminateJobRunResponse\"\x00\x12p\n\x13GetJobRunLogsStream\x12).mgmt.v1alpha1.GetJobRunLogsStreamRequest\x1a*.mgmt.v1alpha1.GetJobRunLogsStreamResponse\"\x00\x30\x01\x12\\\n\rGetJobRunLogs\x12#.mgmt.v1alpha1.GetJobRunLogsRequest\x1a$.mgmt.v1alpha1.GetJobRunLogsResponse\"\x00\x12t\n\x15SetJobWorkflowOptions\x12+.mgmt.v1alpha1.SetJobWorkflowOptionsRequest\x1a,.mgmt.v1alpha1.SetJobWorkflowOptionsResponse\"\x00\x12h\n\x11SetJobSyncOptions\x12\'.mgmt.v1alpha1.SetJobSyncOptionsRequest\x1a(.mgmt.v1alpha1.SetJobSyncOptionsResponse\"\x00\x12n\n\x13ValidateJobMappings\x12).mgmt.v1alpha1.ValidateJobMappingsRequest\x1a*.mgmt.v1alpha1.ValidateJobMappingsResponse\"\x00\x12_\n\x0eValidateSchema\x12$.mgmt.v1alpha1.ValidateSchemaRequest\x1a%.mgmt.v1alpha1.ValidateSchemaResponse\"\x00\x12\\\n\rGetRunContext\x12#.mgmt.v1alpha1.GetRunContextRequest\x1a$.mgmt.v1alpha1.GetRunContextResponse\"\x00\x12\\\n\rSetRunContext\x12#.mgmt.v1alpha1.SetRunContextRequest\x1a$.mgmt.v1alpha1.SetRunContextResponse\"\x00\x12\x61\n\x0eSetRunContexts\x12$.mgmt.v1alpha1.SetRunContextsRequest\x1a%.mgmt.v1alpha1.SetRunContextsResponse\"\x00(\x01\x12Y\n\x0bGetJobHooks\x12!.mgmt.v1alpha1.GetJobHooksRequest\x1a\".mgmt.v1alpha1.GetJobHooksResponse\"\x03\x90\x02\x01\x12V\n\nGetJobHook\x12 .mgmt.v1alpha1.GetJobHookRequest\x1a!.mgmt.v1alpha1.GetJobHookResponse\"\x03\x90\x02\x01\x12\\\n\rCreateJobHook\x12#.mgmt.v1alpha1.CreateJobHookRequest\x1a$.mgmt.v1alpha1.CreateJobHookResponse\"\x00\x12\\\n\rDeleteJobHook\x12#.mgmt.v1alpha1.DeleteJobHookRequest\x1a$.mgmt.v1alpha1.DeleteJobHookResponse\"\x00\x12w\n\x16IsJobHookNameAvailable\x12,.mgmt.v1alpha1.IsJobHookNameAvailableRequest\x1a-.mgmt.v1alpha1.IsJobHookNameAvailableResponse\"\x00\x12\\\n\rUpdateJobHook\x12#.mgmt.v1alpha1.UpdateJobHookRequest\x1a$.mgmt.v1alpha1.UpdateJobHookResponse\"\x00\x12h\n\x11SetJobHookEnabled\x12\'.mgmt.v1alpha1.SetJobHookEnabledRequest\x1a(.mgmt.v1alpha1.SetJobHookEnabledResponse\"\x00\x12\x83\x01\n\x19GetActiveJobHooksByTiming\x12/.mgmt.v1alpha1.GetActiveJobHooksByTimingRequest\x1a\x30.mgmt.v1alpha1.GetActiveJobHooksByTimingResponse\"\x03\x90\x02\x01\x12w\n\x15GetPiiDetectionReport\x12+.mgmt.v1alpha1.GetPiiDetectionReportRequest\x1a,.mgmt.v1alpha1.GetPiiDetectionReportResponse\"\x03\x90\x02\x01\x42\xc4\x01\n\x11\x63om.mgmt.v1alpha1B\x08JobProtoP\x01ZPgithub.com/nucleuscloud/neosync/backend/gen/go/protos/mgmt/v1alpha1;mgmtv1alpha1\xa2\x02\x03MXX\xaa\x02\rMgmt.V1alpha1\xca\x02\rMgmt\\V1alpha1\xe2\x02\x19Mgmt\\V1alpha1\\GPBMetadata\xea\x02\x0eMgmt::V1alpha1b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -133,7 +133,17 @@
_globals['_CREATEJOBREQUEST'].fields_by_name['job_name']._loaded_options = None
_globals['_CREATEJOBREQUEST'].fields_by_name['job_name']._serialized_options = b'\272H\026r\0242\022^[a-z0-9-]{3,100}$'
_globals['_CREATEJOBREQUEST']._loaded_options = None
- _globals['_CREATEJOBREQUEST']._serialized_options = b'\272H\320\002\032\237\001\n\032mappings_required_for_sync\022/For sync jobs, at least one mapping is required\032P!has(this.job_type) || has(this.job_type.sync) ? size(this.mappings) >= 1 : true\032\253\001\n\036destinations_required_for_sync\0223For sync jobs, at least one destination is required\032T!has(this.job_type) || has(this.job_type.sync) ? size(this.destinations) >= 1 : true'
+ _globals['_CREATEJOBREQUEST']._serialized_options = b'\272H\256\001\032\253\001\n\036destinations_required_for_sync\0223For sync jobs, at least one destination is required\032T!has(this.job_type) || has(this.job_type.sync) ? size(this.destinations) >= 1 : true'
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY'].oneofs_by_name['strategy']._loaded_options = None
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY'].oneofs_by_name['strategy']._serialized_options = b'\272H\002\010\000'
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY'].oneofs_by_name['strategy']._loaded_options = None
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY'].oneofs_by_name['strategy']._serialized_options = b'\272H\002\010\000'
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING_COLUMNMAPPING'].fields_by_name['column']._loaded_options = None
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING_COLUMNMAPPING'].fields_by_name['column']._serialized_options = b'\272H\004r\002\020\001'
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING'].fields_by_name['table']._loaded_options = None
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING'].fields_by_name['table']._serialized_options = b'\272H\004r\002\020\001'
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING'].fields_by_name['schema']._loaded_options = None
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING'].fields_by_name['schema']._serialized_options = b'\272H\004r\002\020\001'
_globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER'].oneofs_by_name['mode']._loaded_options = None
_globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER'].oneofs_by_name['mode']._serialized_options = b'\272H\002\010\001'
_globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER'].fields_by_name['schema']._loaded_options = None
@@ -310,16 +320,16 @@
_globals['_JOBSERVICE'].methods_by_name['GetActiveJobHooksByTiming']._serialized_options = b'\220\002\001'
_globals['_JOBSERVICE'].methods_by_name['GetPiiDetectionReport']._loaded_options = None
_globals['_JOBSERVICE'].methods_by_name['GetPiiDetectionReport']._serialized_options = b'\220\002\001'
- _globals['_JOBSTATUS']._serialized_start=30818
- _globals['_JOBSTATUS']._serialized_end=30929
- _globals['_ACTIVITYSTATUS']._serialized_start=30932
- _globals['_ACTIVITYSTATUS']._serialized_end=31099
- _globals['_JOBRUNSTATUS']._serialized_start=31102
- _globals['_JOBRUNSTATUS']._serialized_end=31376
- _globals['_LOGWINDOW']._serialized_start=31378
- _globals['_LOGWINDOW']._serialized_end=31502
- _globals['_LOGLEVEL']._serialized_start=31504
- _globals['_LOGLEVEL']._serialized_end=31623
+ _globals['_JOBSTATUS']._serialized_start=36319
+ _globals['_JOBSTATUS']._serialized_end=36430
+ _globals['_ACTIVITYSTATUS']._serialized_start=36433
+ _globals['_ACTIVITYSTATUS']._serialized_end=36600
+ _globals['_JOBRUNSTATUS']._serialized_start=36603
+ _globals['_JOBRUNSTATUS']._serialized_end=36877
+ _globals['_LOGWINDOW']._serialized_start=36879
+ _globals['_LOGWINDOW']._serialized_end=37003
+ _globals['_LOGLEVEL']._serialized_start=37005
+ _globals['_LOGLEVEL']._serialized_end=37124
_globals['_GETJOBSREQUEST']._serialized_start=174
_globals['_GETJOBSREQUEST']._serialized_end=231
_globals['_GETJOBSRESPONSE']._serialized_start=233
@@ -455,291 +465,349 @@
_globals['_BATCHCONFIG']._serialized_start=11440
_globals['_BATCHCONFIG']._serialized_end=11530
_globals['_CREATEJOBREQUEST']._serialized_start=11533
- _globals['_CREATEJOBREQUEST']._serialized_end=12577
- _globals['_JOBTYPECONFIG']._serialized_start=12580
- _globals['_JOBTYPECONFIG']._serialized_end=13793
- _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_start=12741
- _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_end=12754
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_start=12757
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_end=13774
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_start=13117
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_end=13161
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_start=13163
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_end=13208
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_start=13211
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_end=13514
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_start=13516
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_end=13528
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_start=13531
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_end=13659
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_start=13661
- _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_end=13742
- _globals['_WORKFLOWOPTIONS']._serialized_start=13795
- _globals['_WORKFLOWOPTIONS']._serialized_end=13908
- _globals['_ACTIVITYOPTIONS']._serialized_start=13911
- _globals['_ACTIVITYOPTIONS']._serialized_end=14188
- _globals['_RETRYPOLICY']._serialized_start=14190
- _globals['_RETRYPOLICY']._serialized_end=14281
- _globals['_CREATEJOBRESPONSE']._serialized_start=14283
- _globals['_CREATEJOBRESPONSE']._serialized_end=14340
- _globals['_JOBMAPPINGTRANSFORMER']._serialized_start=14342
- _globals['_JOBMAPPINGTRANSFORMER']._serialized_end=14429
- _globals['_JOBMAPPING']._serialized_start=14432
- _globals['_JOBMAPPING']._serialized_end=14613
- _globals['_GETJOBREQUEST']._serialized_start=14615
- _globals['_GETJOBREQUEST']._serialized_end=14656
- _globals['_GETJOBRESPONSE']._serialized_start=14658
- _globals['_GETJOBRESPONSE']._serialized_end=14712
- _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_start=14714
- _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_end=14826
- _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_start=14828
- _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_end=14893
- _globals['_PAUSEJOBREQUEST']._serialized_start=14895
- _globals['_PAUSEJOBREQUEST']._serialized_end=14994
- _globals['_PAUSEJOBRESPONSE']._serialized_start=14996
- _globals['_PAUSEJOBRESPONSE']._serialized_end=15052
- _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_start=15055
- _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_end=15368
- _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_start=15370
- _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_end=15443
- _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_start=15445
- _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_end=15559
- _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_start=15561
- _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_end=15663
- _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_start=15665
- _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_end=15759
- _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_start=15761
- _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_end=15863
- _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_start=15866
- _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_end=16242
- _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_start=16245
- _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_end=16453
- _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_start=16455
- _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_end=16535
- _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=16538
- _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=16760
- _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=16762
- _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=16840
- _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=16842
- _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=16930
- _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=16932
- _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=16972
- _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_start=16975
- _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_end=17131
- _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_start=17133
- _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_end=17212
- _globals['_DELETEJOBREQUEST']._serialized_start=17214
- _globals['_DELETEJOBREQUEST']._serialized_end=17258
- _globals['_DELETEJOBRESPONSE']._serialized_start=17260
- _globals['_DELETEJOBRESPONSE']._serialized_end=17279
- _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_start=17281
- _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_end=17396
- _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_start=17398
- _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_end=17461
- _globals['_GETJOBRUNSREQUEST']._serialized_start=17463
- _globals['_GETJOBRUNSREQUEST']._serialized_end=17566
- _globals['_GETJOBRUNSRESPONSE']._serialized_start=17568
- _globals['_GETJOBRUNSRESPONSE']._serialized_end=17638
- _globals['_GETJOBRUNREQUEST']._serialized_start=17640
- _globals['_GETJOBRUNREQUEST']._serialized_end=17729
- _globals['_GETJOBRUNRESPONSE']._serialized_start=17731
- _globals['_GETJOBRUNRESPONSE']._serialized_end=17798
- _globals['_CREATEJOBRUNREQUEST']._serialized_start=17800
- _globals['_CREATEJOBRUNREQUEST']._serialized_end=17854
- _globals['_CREATEJOBRUNRESPONSE']._serialized_start=17856
- _globals['_CREATEJOBRUNRESPONSE']._serialized_end=17878
- _globals['_CANCELJOBRUNREQUEST']._serialized_start=17880
- _globals['_CANCELJOBRUNREQUEST']._serialized_end=17972
- _globals['_CANCELJOBRUNRESPONSE']._serialized_start=17974
- _globals['_CANCELJOBRUNRESPONSE']._serialized_end=17996
- _globals['_JOB']._serialized_start=17999
- _globals['_JOB']._serialized_end=18801
- _globals['_JOBRECENTRUN']._serialized_start=18803
- _globals['_JOBRECENTRUN']._serialized_end=18906
- _globals['_GETJOBRECENTRUNSREQUEST']._serialized_start=18908
- _globals['_GETJOBRECENTRUNSREQUEST']._serialized_end=18966
- _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_start=18968
- _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_end=19056
- _globals['_JOBNEXTRUNS']._serialized_start=19058
- _globals['_JOBNEXTRUNS']._serialized_end=19137
- _globals['_GETJOBNEXTRUNSREQUEST']._serialized_start=19139
- _globals['_GETJOBNEXTRUNSREQUEST']._serialized_end=19195
- _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_start=19197
- _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_end=19278
- _globals['_GETJOBSTATUSREQUEST']._serialized_start=19280
- _globals['_GETJOBSTATUSREQUEST']._serialized_end=19334
- _globals['_GETJOBSTATUSRESPONSE']._serialized_start=19336
- _globals['_GETJOBSTATUSRESPONSE']._serialized_end=19408
- _globals['_JOBSTATUSRECORD']._serialized_start=19410
- _globals['_JOBSTATUSRECORD']._serialized_end=19510
- _globals['_GETJOBSTATUSESREQUEST']._serialized_start=19512
- _globals['_GETJOBSTATUSESREQUEST']._serialized_end=19576
- _globals['_GETJOBSTATUSESRESPONSE']._serialized_start=19578
- _globals['_GETJOBSTATUSESRESPONSE']._serialized_end=19662
- _globals['_ACTIVITYFAILURE']._serialized_start=19664
- _globals['_ACTIVITYFAILURE']._serialized_end=19707
- _globals['_PENDINGACTIVITY']._serialized_start=19710
- _globals['_PENDINGACTIVITY']._serialized_end=19908
- _globals['_JOBRUN']._serialized_start=19911
- _globals['_JOBRUN']._serialized_end=20260
- _globals['_JOBRUNEVENTTASKERROR']._serialized_start=20262
- _globals['_JOBRUNEVENTTASKERROR']._serialized_end=20343
- _globals['_JOBRUNEVENTTASK']._serialized_start=20346
- _globals['_JOBRUNEVENTTASK']._serialized_end=20517
- _globals['_JOBRUNSYNCMETADATA']._serialized_start=20519
- _globals['_JOBRUNSYNCMETADATA']._serialized_end=20585
- _globals['_JOBRUNEVENTMETADATA']._serialized_start=20587
- _globals['_JOBRUNEVENTMETADATA']._serialized_end=20701
- _globals['_JOBRUNEVENT']._serialized_start=20704
- _globals['_JOBRUNEVENT']._serialized_end=20989
- _globals['_GETJOBRUNEVENTSREQUEST']._serialized_start=20991
- _globals['_GETJOBRUNEVENTSREQUEST']._serialized_end=21086
- _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_start=21088
- _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_end=21205
- _globals['_DELETEJOBRUNREQUEST']._serialized_start=21207
- _globals['_DELETEJOBRUNREQUEST']._serialized_end=21299
- _globals['_DELETEJOBRUNRESPONSE']._serialized_start=21301
- _globals['_DELETEJOBRUNRESPONSE']._serialized_end=21323
- _globals['_TERMINATEJOBRUNREQUEST']._serialized_start=21325
- _globals['_TERMINATEJOBRUNREQUEST']._serialized_end=21420
- _globals['_TERMINATEJOBRUNRESPONSE']._serialized_start=21422
- _globals['_TERMINATEJOBRUNRESPONSE']._serialized_end=21447
- _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_start=21450
- _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_end=21756
- _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_start=21759
- _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_end=22031
- _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_start=21960
- _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_end=22017
- _globals['_GETJOBRUNLOGSREQUEST']._serialized_start=22034
- _globals['_GETJOBRUNLOGSREQUEST']._serialized_end=22301
- _globals['_GETJOBRUNLOGSRESPONSE']._serialized_start=22304
- _globals['_GETJOBRUNLOGSRESPONSE']._serialized_end=22659
- _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_start=22405
- _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_end=22659
- _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_start=21960
- _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_end=22017
- _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_start=22662
- _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_end=22793
- _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_start=22795
- _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_end=22864
- _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_start=22866
- _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_end=22985
- _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_start=22987
- _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_end=23052
- _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_start=23055
- _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_end=23394
- _globals['_COLUMNERROR']._serialized_start=23397
- _globals['_COLUMNERROR']._serialized_end=24396
- _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_start=23593
- _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_end=23702
- _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_start=23705
- _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_end=24396
- _globals['_COLUMNWARNING']._serialized_start=24399
- _globals['_COLUMNWARNING']._serialized_end=24874
- _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_start=24609
- _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_end=24724
- _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_start=24727
- _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_end=24874
- _globals['_DATABASEERROR']._serialized_start=24877
- _globals['_DATABASEERROR']._serialized_end=25307
- _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_start=25009
- _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_end=25124
- _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_start=25127
- _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_end=25307
- _globals['_TABLEERROR']._serialized_start=25310
- _globals['_TABLEERROR']._serialized_end=25896
- _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_start=25451
- _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_end=25557
- _globals['_TABLEERROR_TABLEERRORCODE']._serialized_start=25560
- _globals['_TABLEERROR_TABLEERRORCODE']._serialized_end=25896
- _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_start=25899
- _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_end=26197
- _globals['_VALIDATESCHEMAREQUEST']._serialized_start=26199
- _globals['_VALIDATESCHEMAREQUEST']._serialized_end=26324
- _globals['_VALIDATESCHEMARESPONSE']._serialized_start=26327
- _globals['_VALIDATESCHEMARESPONSE']._serialized_end=26671
- _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_start=26618
- _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_end=26671
- _globals['_VIRTUALFOREIGNKEY']._serialized_start=26673
- _globals['_VIRTUALFOREIGNKEY']._serialized_end=26764
- _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_start=26767
- _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_end=26932
- _globals['_RUNCONTEXTKEY']._serialized_start=26935
- _globals['_RUNCONTEXTKEY']._serialized_end=27071
- _globals['_GETRUNCONTEXTREQUEST']._serialized_start=27073
- _globals['_GETRUNCONTEXTREQUEST']._serialized_end=27141
- _globals['_GETRUNCONTEXTRESPONSE']._serialized_start=27143
- _globals['_GETRUNCONTEXTRESPONSE']._serialized_end=27188
- _globals['_SETRUNCONTEXTREQUEST']._serialized_start=27190
- _globals['_SETRUNCONTEXTREQUEST']._serialized_end=27280
- _globals['_SETRUNCONTEXTRESPONSE']._serialized_start=27282
- _globals['_SETRUNCONTEXTRESPONSE']._serialized_end=27305
- _globals['_SETRUNCONTEXTSREQUEST']._serialized_start=27307
- _globals['_SETRUNCONTEXTSREQUEST']._serialized_end=27398
- _globals['_SETRUNCONTEXTSRESPONSE']._serialized_start=27400
- _globals['_SETRUNCONTEXTSRESPONSE']._serialized_end=27424
- _globals['_JOBHOOK']._serialized_start=27427
- _globals['_JOBHOOK']._serialized_end=27856
- _globals['_NEWJOBHOOK']._serialized_start=27859
- _globals['_NEWJOBHOOK']._serialized_end=28080
- _globals['_JOBHOOKCONFIG']._serialized_start=28083
- _globals['_JOBHOOKCONFIG']._serialized_end=28528
- _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_start=28162
- _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_end=28487
- _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_start=28327
- _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_end=28487
- _globals['_JOBHOOKTIMINGPRESYNC']._serialized_start=28530
- _globals['_JOBHOOKTIMINGPRESYNC']._serialized_end=28552
- _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_start=28554
- _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_end=28577
- _globals['_GETJOBHOOKSREQUEST']._serialized_start=28579
- _globals['_GETJOBHOOKSREQUEST']._serialized_end=28632
- _globals['_GETJOBHOOKSRESPONSE']._serialized_start=28634
- _globals['_GETJOBHOOKSRESPONSE']._serialized_end=28701
- _globals['_GETJOBHOOKREQUEST']._serialized_start=28703
- _globals['_GETJOBHOOKREQUEST']._serialized_end=28748
- _globals['_GETJOBHOOKRESPONSE']._serialized_start=28750
- _globals['_GETJOBHOOKRESPONSE']._serialized_end=28814
- _globals['_CREATEJOBHOOKREQUEST']._serialized_start=28816
- _globals['_CREATEJOBHOOKREQUEST']._serialized_end=28908
- _globals['_CREATEJOBHOOKRESPONSE']._serialized_start=28910
- _globals['_CREATEJOBHOOKRESPONSE']._serialized_end=28977
- _globals['_DELETEJOBHOOKREQUEST']._serialized_start=28979
- _globals['_DELETEJOBHOOKREQUEST']._serialized_end=29027
- _globals['_DELETEJOBHOOKRESPONSE']._serialized_start=29029
- _globals['_DELETEJOBHOOKRESPONSE']._serialized_end=29052
- _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_start=29054
- _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_end=29128
- _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_start=29130
- _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_end=29197
- _globals['_UPDATEJOBHOOKREQUEST']._serialized_start=29200
- _globals['_UPDATEJOBHOOKREQUEST']._serialized_end=29457
- _globals['_UPDATEJOBHOOKRESPONSE']._serialized_start=29459
- _globals['_UPDATEJOBHOOKRESPONSE']._serialized_end=29526
- _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_start=29528
- _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_end=29606
- _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_start=29608
- _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_end=29679
- _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_start=29682
- _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_end=29904
- _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_start=29831
- _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_end=29904
- _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_start=29906
- _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_end=29987
- _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_start=29989
- _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_end=30099
- _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_start=30101
- _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_end=30191
- _globals['_PIIDETECTIONREPORT']._serialized_start=30194
- _globals['_PIIDETECTIONREPORT']._serialized_end=30816
- _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_start=30288
- _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_end=30816
- _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_start=30436
- _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_end=30816
- _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_start=30682
- _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_end=30717
- _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_start=30719
- _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_end=30784
- _globals['_JOBSERVICE']._serialized_start=31626
- _globals['_JOBSERVICE']._serialized_end=35898
+ _globals['_CREATEJOBREQUEST']._serialized_end=12415
+ _globals['_JOBTYPECONFIG']._serialized_start=12418
+ _globals['_JOBTYPECONFIG']._serialized_end=19294
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_start=12580
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_end=18255
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMACHANGE']._serialized_start=12790
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMACHANGE']._serialized_end=13169
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY']._serialized_start=13172
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY']._serialized_end=13483
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY_MAPALLSCHEMAS']._serialized_start=13428
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY_MAPALLSCHEMAS']._serialized_end=13443
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY_MAPDEFINEDSCHEMAS']._serialized_start=13445
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMASTRATEGY_MAPDEFINEDSCHEMAS']._serialized_end=13464
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY']._serialized_start=13486
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY']._serialized_end=13786
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY_MAPALLTABLES']._serialized_start=13733
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY_MAPALLTABLES']._serialized_end=13747
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY_MAPDEFINEDTABLES']._serialized_start=13749
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_TABLESTRATEGY_MAPDEFINEDTABLES']._serialized_end=13767
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY']._serialized_start=13789
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY']._serialized_end=17254
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_MAPALLCOLUMNS']._serialized_start=14046
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_MAPALLCOLUMNS']._serialized_end=14920
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_MAPDEFINEDCOLUMNS']._serialized_start=14923
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_MAPDEFINEDCOLUMNS']._serialized_end=15376
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY']._serialized_start=15379
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY']._serialized_end=15962
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_PASSTHROUGH']._serialized_start=4075
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_PASSTHROUGH']._serialized_end=4088
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_AUTOMAP']._serialized_start=4064
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_AUTOMAP']._serialized_end=4073
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_HALT']._serialized_start=15936
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_HALT']._serialized_end=15942
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_DROP']._serialized_start=15944
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCENOTMAPPEDSTRATEGY_DROP']._serialized_end=15950
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNMAPPEDNOTINSOURCESTRATEGY']._serialized_start=15965
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNMAPPEDNOTINSOURCESTRATEGY']._serialized_end=16274
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNMAPPEDNOTINSOURCESTRATEGY_CONTINUE']._serialized_start=16244
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNMAPPEDNOTINSOURCESTRATEGY_CONTINUE']._serialized_end=16254
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNMAPPEDNOTINSOURCESTRATEGY_HALT']._serialized_start=15936
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNMAPPEDNOTINSOURCESTRATEGY_HALT']._serialized_end=15942
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY']._serialized_start=16277
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY']._serialized_end=16763
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY_CONTINUE']._serialized_start=16244
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY_CONTINUE']._serialized_end=16254
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY_DROP']._serialized_start=15944
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY_DROP']._serialized_end=15950
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY_HALT']._serialized_start=15936
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINSOURCEMAPPEDNOTINDESTINATIONSTRATEGY_HALT']._serialized_end=15942
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY']._serialized_start=16766
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY']._serialized_end=17242
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY_CONTINUE']._serialized_start=16244
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY_CONTINUE']._serialized_end=16254
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY_HALT']._serialized_start=15936
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY_HALT']._serialized_end=15942
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY_AUTOMAP']._serialized_start=4064
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_COLUMNSTRATEGY_COLUMNINDESTINATIONNOTINSOURCESTRATEGY_AUTOMAP']._serialized_end=4073
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING']._serialized_start=17257
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING']._serialized_end=18237
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING']._serialized_start=17671
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING']._serialized_end=18175
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING_COLUMNMAPPING']._serialized_start=17996
+ _globals['_JOBTYPECONFIG_JOBTYPESYNC_SCHEMAMAPPING_TABLEMAPPING_COLUMNMAPPING']._serialized_end=18133
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_start=18258
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_end=19275
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_start=18618
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_end=18662
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_start=18664
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_end=18709
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_start=18712
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_end=19015
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_start=19017
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_end=19029
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_start=19032
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_end=19160
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_start=19162
+ _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_end=19243
+ _globals['_WORKFLOWOPTIONS']._serialized_start=19296
+ _globals['_WORKFLOWOPTIONS']._serialized_end=19409
+ _globals['_ACTIVITYOPTIONS']._serialized_start=19412
+ _globals['_ACTIVITYOPTIONS']._serialized_end=19689
+ _globals['_RETRYPOLICY']._serialized_start=19691
+ _globals['_RETRYPOLICY']._serialized_end=19782
+ _globals['_CREATEJOBRESPONSE']._serialized_start=19784
+ _globals['_CREATEJOBRESPONSE']._serialized_end=19841
+ _globals['_JOBMAPPINGTRANSFORMER']._serialized_start=19843
+ _globals['_JOBMAPPINGTRANSFORMER']._serialized_end=19930
+ _globals['_JOBMAPPING']._serialized_start=19933
+ _globals['_JOBMAPPING']._serialized_end=20114
+ _globals['_GETJOBREQUEST']._serialized_start=20116
+ _globals['_GETJOBREQUEST']._serialized_end=20157
+ _globals['_GETJOBRESPONSE']._serialized_start=20159
+ _globals['_GETJOBRESPONSE']._serialized_end=20213
+ _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_start=20215
+ _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_end=20327
+ _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_start=20329
+ _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_end=20394
+ _globals['_PAUSEJOBREQUEST']._serialized_start=20396
+ _globals['_PAUSEJOBREQUEST']._serialized_end=20495
+ _globals['_PAUSEJOBRESPONSE']._serialized_start=20497
+ _globals['_PAUSEJOBRESPONSE']._serialized_end=20553
+ _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_start=20556
+ _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_end=20869
+ _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_start=20871
+ _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_end=20944
+ _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_start=20946
+ _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_end=21060
+ _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_start=21062
+ _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_end=21164
+ _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_start=21166
+ _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_end=21260
+ _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_start=21262
+ _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_end=21364
+ _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_start=21367
+ _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_end=21743
+ _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_start=21746
+ _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_end=21954
+ _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_start=21956
+ _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_end=22036
+ _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=22039
+ _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=22261
+ _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=22263
+ _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=22341
+ _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=22343
+ _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=22431
+ _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=22433
+ _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=22473
+ _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_start=22476
+ _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_end=22632
+ _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_start=22634
+ _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_end=22713
+ _globals['_DELETEJOBREQUEST']._serialized_start=22715
+ _globals['_DELETEJOBREQUEST']._serialized_end=22759
+ _globals['_DELETEJOBRESPONSE']._serialized_start=22761
+ _globals['_DELETEJOBRESPONSE']._serialized_end=22780
+ _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_start=22782
+ _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_end=22897
+ _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_start=22899
+ _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_end=22962
+ _globals['_GETJOBRUNSREQUEST']._serialized_start=22964
+ _globals['_GETJOBRUNSREQUEST']._serialized_end=23067
+ _globals['_GETJOBRUNSRESPONSE']._serialized_start=23069
+ _globals['_GETJOBRUNSRESPONSE']._serialized_end=23139
+ _globals['_GETJOBRUNREQUEST']._serialized_start=23141
+ _globals['_GETJOBRUNREQUEST']._serialized_end=23230
+ _globals['_GETJOBRUNRESPONSE']._serialized_start=23232
+ _globals['_GETJOBRUNRESPONSE']._serialized_end=23299
+ _globals['_CREATEJOBRUNREQUEST']._serialized_start=23301
+ _globals['_CREATEJOBRUNREQUEST']._serialized_end=23355
+ _globals['_CREATEJOBRUNRESPONSE']._serialized_start=23357
+ _globals['_CREATEJOBRUNRESPONSE']._serialized_end=23379
+ _globals['_CANCELJOBRUNREQUEST']._serialized_start=23381
+ _globals['_CANCELJOBRUNREQUEST']._serialized_end=23473
+ _globals['_CANCELJOBRUNRESPONSE']._serialized_start=23475
+ _globals['_CANCELJOBRUNRESPONSE']._serialized_end=23497
+ _globals['_JOB']._serialized_start=23500
+ _globals['_JOB']._serialized_end=24302
+ _globals['_JOBRECENTRUN']._serialized_start=24304
+ _globals['_JOBRECENTRUN']._serialized_end=24407
+ _globals['_GETJOBRECENTRUNSREQUEST']._serialized_start=24409
+ _globals['_GETJOBRECENTRUNSREQUEST']._serialized_end=24467
+ _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_start=24469
+ _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_end=24557
+ _globals['_JOBNEXTRUNS']._serialized_start=24559
+ _globals['_JOBNEXTRUNS']._serialized_end=24638
+ _globals['_GETJOBNEXTRUNSREQUEST']._serialized_start=24640
+ _globals['_GETJOBNEXTRUNSREQUEST']._serialized_end=24696
+ _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_start=24698
+ _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_end=24779
+ _globals['_GETJOBSTATUSREQUEST']._serialized_start=24781
+ _globals['_GETJOBSTATUSREQUEST']._serialized_end=24835
+ _globals['_GETJOBSTATUSRESPONSE']._serialized_start=24837
+ _globals['_GETJOBSTATUSRESPONSE']._serialized_end=24909
+ _globals['_JOBSTATUSRECORD']._serialized_start=24911
+ _globals['_JOBSTATUSRECORD']._serialized_end=25011
+ _globals['_GETJOBSTATUSESREQUEST']._serialized_start=25013
+ _globals['_GETJOBSTATUSESREQUEST']._serialized_end=25077
+ _globals['_GETJOBSTATUSESRESPONSE']._serialized_start=25079
+ _globals['_GETJOBSTATUSESRESPONSE']._serialized_end=25163
+ _globals['_ACTIVITYFAILURE']._serialized_start=25165
+ _globals['_ACTIVITYFAILURE']._serialized_end=25208
+ _globals['_PENDINGACTIVITY']._serialized_start=25211
+ _globals['_PENDINGACTIVITY']._serialized_end=25409
+ _globals['_JOBRUN']._serialized_start=25412
+ _globals['_JOBRUN']._serialized_end=25761
+ _globals['_JOBRUNEVENTTASKERROR']._serialized_start=25763
+ _globals['_JOBRUNEVENTTASKERROR']._serialized_end=25844
+ _globals['_JOBRUNEVENTTASK']._serialized_start=25847
+ _globals['_JOBRUNEVENTTASK']._serialized_end=26018
+ _globals['_JOBRUNSYNCMETADATA']._serialized_start=26020
+ _globals['_JOBRUNSYNCMETADATA']._serialized_end=26086
+ _globals['_JOBRUNEVENTMETADATA']._serialized_start=26088
+ _globals['_JOBRUNEVENTMETADATA']._serialized_end=26202
+ _globals['_JOBRUNEVENT']._serialized_start=26205
+ _globals['_JOBRUNEVENT']._serialized_end=26490
+ _globals['_GETJOBRUNEVENTSREQUEST']._serialized_start=26492
+ _globals['_GETJOBRUNEVENTSREQUEST']._serialized_end=26587
+ _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_start=26589
+ _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_end=26706
+ _globals['_DELETEJOBRUNREQUEST']._serialized_start=26708
+ _globals['_DELETEJOBRUNREQUEST']._serialized_end=26800
+ _globals['_DELETEJOBRUNRESPONSE']._serialized_start=26802
+ _globals['_DELETEJOBRUNRESPONSE']._serialized_end=26824
+ _globals['_TERMINATEJOBRUNREQUEST']._serialized_start=26826
+ _globals['_TERMINATEJOBRUNREQUEST']._serialized_end=26921
+ _globals['_TERMINATEJOBRUNRESPONSE']._serialized_start=26923
+ _globals['_TERMINATEJOBRUNRESPONSE']._serialized_end=26948
+ _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_start=26951
+ _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_end=27257
+ _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_start=27260
+ _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_end=27532
+ _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_start=27461
+ _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_end=27518
+ _globals['_GETJOBRUNLOGSREQUEST']._serialized_start=27535
+ _globals['_GETJOBRUNLOGSREQUEST']._serialized_end=27802
+ _globals['_GETJOBRUNLOGSRESPONSE']._serialized_start=27805
+ _globals['_GETJOBRUNLOGSRESPONSE']._serialized_end=28160
+ _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_start=27906
+ _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_end=28160
+ _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_start=27461
+ _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_end=27518
+ _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_start=28163
+ _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_end=28294
+ _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_start=28296
+ _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_end=28365
+ _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_start=28367
+ _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_end=28486
+ _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_start=28488
+ _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_end=28553
+ _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_start=28556
+ _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_end=28895
+ _globals['_COLUMNERROR']._serialized_start=28898
+ _globals['_COLUMNERROR']._serialized_end=29897
+ _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_start=29094
+ _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_end=29203
+ _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_start=29206
+ _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_end=29897
+ _globals['_COLUMNWARNING']._serialized_start=29900
+ _globals['_COLUMNWARNING']._serialized_end=30375
+ _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_start=30110
+ _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_end=30225
+ _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_start=30228
+ _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_end=30375
+ _globals['_DATABASEERROR']._serialized_start=30378
+ _globals['_DATABASEERROR']._serialized_end=30808
+ _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_start=30510
+ _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_end=30625
+ _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_start=30628
+ _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_end=30808
+ _globals['_TABLEERROR']._serialized_start=30811
+ _globals['_TABLEERROR']._serialized_end=31397
+ _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_start=30952
+ _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_end=31058
+ _globals['_TABLEERROR_TABLEERRORCODE']._serialized_start=31061
+ _globals['_TABLEERROR_TABLEERRORCODE']._serialized_end=31397
+ _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_start=31400
+ _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_end=31698
+ _globals['_VALIDATESCHEMAREQUEST']._serialized_start=31700
+ _globals['_VALIDATESCHEMAREQUEST']._serialized_end=31825
+ _globals['_VALIDATESCHEMARESPONSE']._serialized_start=31828
+ _globals['_VALIDATESCHEMARESPONSE']._serialized_end=32172
+ _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_start=32119
+ _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_end=32172
+ _globals['_VIRTUALFOREIGNKEY']._serialized_start=32174
+ _globals['_VIRTUALFOREIGNKEY']._serialized_end=32265
+ _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_start=32268
+ _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_end=32433
+ _globals['_RUNCONTEXTKEY']._serialized_start=32436
+ _globals['_RUNCONTEXTKEY']._serialized_end=32572
+ _globals['_GETRUNCONTEXTREQUEST']._serialized_start=32574
+ _globals['_GETRUNCONTEXTREQUEST']._serialized_end=32642
+ _globals['_GETRUNCONTEXTRESPONSE']._serialized_start=32644
+ _globals['_GETRUNCONTEXTRESPONSE']._serialized_end=32689
+ _globals['_SETRUNCONTEXTREQUEST']._serialized_start=32691
+ _globals['_SETRUNCONTEXTREQUEST']._serialized_end=32781
+ _globals['_SETRUNCONTEXTRESPONSE']._serialized_start=32783
+ _globals['_SETRUNCONTEXTRESPONSE']._serialized_end=32806
+ _globals['_SETRUNCONTEXTSREQUEST']._serialized_start=32808
+ _globals['_SETRUNCONTEXTSREQUEST']._serialized_end=32899
+ _globals['_SETRUNCONTEXTSRESPONSE']._serialized_start=32901
+ _globals['_SETRUNCONTEXTSRESPONSE']._serialized_end=32925
+ _globals['_JOBHOOK']._serialized_start=32928
+ _globals['_JOBHOOK']._serialized_end=33357
+ _globals['_NEWJOBHOOK']._serialized_start=33360
+ _globals['_NEWJOBHOOK']._serialized_end=33581
+ _globals['_JOBHOOKCONFIG']._serialized_start=33584
+ _globals['_JOBHOOKCONFIG']._serialized_end=34029
+ _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_start=33663
+ _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_end=33988
+ _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_start=33828
+ _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_end=33988
+ _globals['_JOBHOOKTIMINGPRESYNC']._serialized_start=34031
+ _globals['_JOBHOOKTIMINGPRESYNC']._serialized_end=34053
+ _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_start=34055
+ _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_end=34078
+ _globals['_GETJOBHOOKSREQUEST']._serialized_start=34080
+ _globals['_GETJOBHOOKSREQUEST']._serialized_end=34133
+ _globals['_GETJOBHOOKSRESPONSE']._serialized_start=34135
+ _globals['_GETJOBHOOKSRESPONSE']._serialized_end=34202
+ _globals['_GETJOBHOOKREQUEST']._serialized_start=34204
+ _globals['_GETJOBHOOKREQUEST']._serialized_end=34249
+ _globals['_GETJOBHOOKRESPONSE']._serialized_start=34251
+ _globals['_GETJOBHOOKRESPONSE']._serialized_end=34315
+ _globals['_CREATEJOBHOOKREQUEST']._serialized_start=34317
+ _globals['_CREATEJOBHOOKREQUEST']._serialized_end=34409
+ _globals['_CREATEJOBHOOKRESPONSE']._serialized_start=34411
+ _globals['_CREATEJOBHOOKRESPONSE']._serialized_end=34478
+ _globals['_DELETEJOBHOOKREQUEST']._serialized_start=34480
+ _globals['_DELETEJOBHOOKREQUEST']._serialized_end=34528
+ _globals['_DELETEJOBHOOKRESPONSE']._serialized_start=34530
+ _globals['_DELETEJOBHOOKRESPONSE']._serialized_end=34553
+ _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_start=34555
+ _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_end=34629
+ _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_start=34631
+ _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_end=34698
+ _globals['_UPDATEJOBHOOKREQUEST']._serialized_start=34701
+ _globals['_UPDATEJOBHOOKREQUEST']._serialized_end=34958
+ _globals['_UPDATEJOBHOOKRESPONSE']._serialized_start=34960
+ _globals['_UPDATEJOBHOOKRESPONSE']._serialized_end=35027
+ _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_start=35029
+ _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_end=35107
+ _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_start=35109
+ _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_end=35180
+ _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_start=35183
+ _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_end=35405
+ _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_start=35332
+ _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_end=35405
+ _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_start=35407
+ _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_end=35488
+ _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_start=35490
+ _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_end=35600
+ _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_start=35602
+ _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_end=35692
+ _globals['_PIIDETECTIONREPORT']._serialized_start=35695
+ _globals['_PIIDETECTIONREPORT']._serialized_end=36317
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_start=35789
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_end=36317
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_start=35937
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_end=36317
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_start=36183
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_end=36218
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_start=36220
+ _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_end=36285
+ _globals['_JOBSERVICE']._serialized_start=37127
+ _globals['_JOBSERVICE']._serialized_end=41399
# @@protoc_insertion_point(module_scope)
diff --git a/python/src/neosync/mgmt/v1alpha1/job_pb2.pyi b/python/src/neosync/mgmt/v1alpha1/job_pb2.pyi
index bbec6e6cbd..a60c59be6b 100644
--- a/python/src/neosync/mgmt/v1alpha1/job_pb2.pyi
+++ b/python/src/neosync/mgmt/v1alpha1/job_pb2.pyi
@@ -630,8 +630,172 @@ class CreateJobRequest(_message.Message):
class JobTypeConfig(_message.Message):
__slots__ = ("sync", "pii_detect")
class JobTypeSync(_message.Message):
- __slots__ = ()
- def __init__(self) -> None: ...
+ __slots__ = ("schema_change", "schema_mappings")
+ class SchemaChange(_message.Message):
+ __slots__ = ("schema_strategy", "table_strategy", "column_strategy")
+ SCHEMA_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ TABLE_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ schema_strategy: JobTypeConfig.JobTypeSync.SchemaStrategy
+ table_strategy: JobTypeConfig.JobTypeSync.TableStrategy
+ column_strategy: JobTypeConfig.JobTypeSync.ColumnStrategy
+ def __init__(self, schema_strategy: _Optional[_Union[JobTypeConfig.JobTypeSync.SchemaStrategy, _Mapping]] = ..., table_strategy: _Optional[_Union[JobTypeConfig.JobTypeSync.TableStrategy, _Mapping]] = ..., column_strategy: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy, _Mapping]] = ...) -> None: ...
+ class SchemaStrategy(_message.Message):
+ __slots__ = ("map_all_schemas", "map_defined_schemas")
+ class MapAllSchemas(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class MapDefinedSchemas(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ MAP_ALL_SCHEMAS_FIELD_NUMBER: _ClassVar[int]
+ MAP_DEFINED_SCHEMAS_FIELD_NUMBER: _ClassVar[int]
+ map_all_schemas: JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas
+ map_defined_schemas: JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas
+ def __init__(self, map_all_schemas: _Optional[_Union[JobTypeConfig.JobTypeSync.SchemaStrategy.MapAllSchemas, _Mapping]] = ..., map_defined_schemas: _Optional[_Union[JobTypeConfig.JobTypeSync.SchemaStrategy.MapDefinedSchemas, _Mapping]] = ...) -> None: ...
+ class TableStrategy(_message.Message):
+ __slots__ = ("map_all_tables", "map_defined_tables")
+ class MapAllTables(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class MapDefinedTables(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ MAP_ALL_TABLES_FIELD_NUMBER: _ClassVar[int]
+ MAP_DEFINED_TABLES_FIELD_NUMBER: _ClassVar[int]
+ map_all_tables: JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables
+ map_defined_tables: JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables
+ def __init__(self, map_all_tables: _Optional[_Union[JobTypeConfig.JobTypeSync.TableStrategy.MapAllTables, _Mapping]] = ..., map_defined_tables: _Optional[_Union[JobTypeConfig.JobTypeSync.TableStrategy.MapDefinedTables, _Mapping]] = ...) -> None: ...
+ class ColumnStrategy(_message.Message):
+ __slots__ = ("map_all_columns", "map_defined_columns")
+ class MapAllColumns(_message.Message):
+ __slots__ = ("column_in_source_not_mapped", "column_mapped_not_in_source", "column_in_source_mapped_not_in_destination", "column_in_destination_no_longer_in_source")
+ COLUMN_IN_SOURCE_NOT_MAPPED_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_MAPPED_NOT_IN_SOURCE_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_IN_SOURCE_MAPPED_NOT_IN_DESTINATION_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_IN_DESTINATION_NO_LONGER_IN_SOURCE_FIELD_NUMBER: _ClassVar[int]
+ column_in_source_not_mapped: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy
+ column_mapped_not_in_source: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ column_in_source_mapped_not_in_destination: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ column_in_destination_no_longer_in_source: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy
+ def __init__(self, column_in_source_not_mapped: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy, _Mapping]] = ..., column_mapped_not_in_source: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy, _Mapping]] = ..., column_in_source_mapped_not_in_destination: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy, _Mapping]] = ..., column_in_destination_no_longer_in_source: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy, _Mapping]] = ...) -> None: ...
+ class MapDefinedColumns(_message.Message):
+ __slots__ = ("column_mapped_not_in_source", "column_in_source_mapped_not_in_destination")
+ COLUMN_MAPPED_NOT_IN_SOURCE_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_IN_SOURCE_MAPPED_NOT_IN_DESTINATION_FIELD_NUMBER: _ClassVar[int]
+ column_mapped_not_in_source: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy
+ column_in_source_mapped_not_in_destination: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy
+ def __init__(self, column_mapped_not_in_source: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy, _Mapping]] = ..., column_in_source_mapped_not_in_destination: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy, _Mapping]] = ...) -> None: ...
+ class ColumnInSourceNotMappedStrategy(_message.Message):
+ __slots__ = ("passthrough", "auto_map", "halt", "drop")
+ class Passthrough(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class AutoMap(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class Halt(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class Drop(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ PASSTHROUGH_FIELD_NUMBER: _ClassVar[int]
+ AUTO_MAP_FIELD_NUMBER: _ClassVar[int]
+ HALT_FIELD_NUMBER: _ClassVar[int]
+ DROP_FIELD_NUMBER: _ClassVar[int]
+ passthrough: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough
+ auto_map: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap
+ halt: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt
+ drop: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop
+ def __init__(self, passthrough: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Passthrough, _Mapping]] = ..., auto_map: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.AutoMap, _Mapping]] = ..., halt: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Halt, _Mapping]] = ..., drop: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceNotMappedStrategy.Drop, _Mapping]] = ...) -> None: ...
+ class ColumnMappedNotInSourceStrategy(_message.Message):
+ __slots__ = ("halt",)
+ class Continue(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class Halt(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ CONTINUE_FIELD_NUMBER: _ClassVar[int]
+ HALT_FIELD_NUMBER: _ClassVar[int]
+ halt: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt
+ def __init__(self, halt: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnMappedNotInSourceStrategy.Halt, _Mapping]] = ..., **kwargs) -> None: ...
+ class ColumnInSourceMappedNotInDestinationStrategy(_message.Message):
+ __slots__ = ("drop", "halt")
+ class Continue(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class Drop(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class Halt(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ CONTINUE_FIELD_NUMBER: _ClassVar[int]
+ DROP_FIELD_NUMBER: _ClassVar[int]
+ HALT_FIELD_NUMBER: _ClassVar[int]
+ drop: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop
+ halt: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt
+ def __init__(self, drop: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Drop, _Mapping]] = ..., halt: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInSourceMappedNotInDestinationStrategy.Halt, _Mapping]] = ..., **kwargs) -> None: ...
+ class ColumnInDestinationNotInSourceStrategy(_message.Message):
+ __slots__ = ("halt", "auto_map")
+ class Continue(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class Halt(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ class AutoMap(_message.Message):
+ __slots__ = ()
+ def __init__(self) -> None: ...
+ CONTINUE_FIELD_NUMBER: _ClassVar[int]
+ HALT_FIELD_NUMBER: _ClassVar[int]
+ AUTO_MAP_FIELD_NUMBER: _ClassVar[int]
+ halt: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt
+ auto_map: JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap
+ def __init__(self, halt: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.Halt, _Mapping]] = ..., auto_map: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.ColumnInDestinationNotInSourceStrategy.AutoMap, _Mapping]] = ..., **kwargs) -> None: ...
+ MAP_ALL_COLUMNS_FIELD_NUMBER: _ClassVar[int]
+ MAP_DEFINED_COLUMNS_FIELD_NUMBER: _ClassVar[int]
+ map_all_columns: JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns
+ map_defined_columns: JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns
+ def __init__(self, map_all_columns: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.MapAllColumns, _Mapping]] = ..., map_defined_columns: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy.MapDefinedColumns, _Mapping]] = ...) -> None: ...
+ class SchemaMapping(_message.Message):
+ __slots__ = ("schema", "destination_schema", "table_mappings", "table_strategy", "column_strategy")
+ class TableMapping(_message.Message):
+ __slots__ = ("table", "destination_table", "column_mappings", "column_strategy")
+ class ColumnMapping(_message.Message):
+ __slots__ = ("column", "transformer")
+ COLUMN_FIELD_NUMBER: _ClassVar[int]
+ TRANSFORMER_FIELD_NUMBER: _ClassVar[int]
+ column: str
+ transformer: _transformer_pb2.TransformerConfig
+ def __init__(self, column: _Optional[str] = ..., transformer: _Optional[_Union[_transformer_pb2.TransformerConfig, _Mapping]] = ...) -> None: ...
+ TABLE_FIELD_NUMBER: _ClassVar[int]
+ DESTINATION_TABLE_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_MAPPINGS_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ table: str
+ destination_table: str
+ column_mappings: _containers.RepeatedCompositeFieldContainer[JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping]
+ column_strategy: JobTypeConfig.JobTypeSync.ColumnStrategy
+ def __init__(self, table: _Optional[str] = ..., destination_table: _Optional[str] = ..., column_mappings: _Optional[_Iterable[_Union[JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping.ColumnMapping, _Mapping]]] = ..., column_strategy: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy, _Mapping]] = ...) -> None: ...
+ SCHEMA_FIELD_NUMBER: _ClassVar[int]
+ DESTINATION_SCHEMA_FIELD_NUMBER: _ClassVar[int]
+ TABLE_MAPPINGS_FIELD_NUMBER: _ClassVar[int]
+ TABLE_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ COLUMN_STRATEGY_FIELD_NUMBER: _ClassVar[int]
+ schema: str
+ destination_schema: str
+ table_mappings: _containers.RepeatedCompositeFieldContainer[JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping]
+ table_strategy: JobTypeConfig.JobTypeSync.TableStrategy
+ column_strategy: JobTypeConfig.JobTypeSync.ColumnStrategy
+ def __init__(self, schema: _Optional[str] = ..., destination_schema: _Optional[str] = ..., table_mappings: _Optional[_Iterable[_Union[JobTypeConfig.JobTypeSync.SchemaMapping.TableMapping, _Mapping]]] = ..., table_strategy: _Optional[_Union[JobTypeConfig.JobTypeSync.TableStrategy, _Mapping]] = ..., column_strategy: _Optional[_Union[JobTypeConfig.JobTypeSync.ColumnStrategy, _Mapping]] = ...) -> None: ...
+ SCHEMA_CHANGE_FIELD_NUMBER: _ClassVar[int]
+ SCHEMA_MAPPINGS_FIELD_NUMBER: _ClassVar[int]
+ schema_change: JobTypeConfig.JobTypeSync.SchemaChange
+ schema_mappings: _containers.RepeatedCompositeFieldContainer[JobTypeConfig.JobTypeSync.SchemaMapping]
+ def __init__(self, schema_change: _Optional[_Union[JobTypeConfig.JobTypeSync.SchemaChange, _Mapping]] = ..., schema_mappings: _Optional[_Iterable[_Union[JobTypeConfig.JobTypeSync.SchemaMapping, _Mapping]]] = ...) -> None: ...
class JobTypePiiDetect(_message.Message):
__slots__ = ("data_sampling", "table_scan_filter", "user_prompt", "incremental")
class Incremental(_message.Message):
diff --git a/worker/pkg/workflows/datasync/activities/shared/shared.go b/worker/pkg/workflows/datasync/activities/shared/shared.go
index 6c310e1762..10948d4c74 100644
--- a/worker/pkg/workflows/datasync/activities/shared/shared.go
+++ b/worker/pkg/workflows/datasync/activities/shared/shared.go
@@ -92,15 +92,28 @@ func GetUniqueSchemasFromJob(job *mgmtv1alpha1.Job) []string {
}
return schemas
default:
- return GetUniqueSchemasFromMappings(job.GetMappings())
+ jtms := make([]*JobTransformationMapping, 0, len(job.GetMappings()))
+ for _, mapping := range job.GetMappings() {
+ jtms = append(jtms, &JobTransformationMapping{
+ JobMapping: mapping,
+ })
+ }
+ return GetUniqueSchemasFromMappings(jtms)
}
}
+type JobTransformationMapping struct {
+ *mgmtv1alpha1.JobMapping
+
+ DestinationSchema string
+ DestinationTable string
+}
+
// Parses the job mappings and returns the unique set of schemas found
-func GetUniqueSchemasFromMappings(mappings []*mgmtv1alpha1.JobMapping) []string {
+func GetUniqueSchemasFromMappings(mappings []*JobTransformationMapping) []string {
schemas := map[string]struct{}{}
for _, mapping := range mappings {
- schemas[mapping.Schema] = struct{}{}
+ schemas[mapping.GetSchema()] = struct{}{}
}
output := make([]string, 0, len(schemas))
@@ -148,7 +161,7 @@ func GetUniqueTablesFromMappings(mappings []*mgmtv1alpha1.JobMapping) map[string
return filteredTables
}
-func GetSchemaTablesMapFromMappings(mappings []*mgmtv1alpha1.JobMapping) map[string][]string {
+func GetSchemaTablesMapFromMappings(mappings []*JobTransformationMapping) map[string][]string {
schemaTablesMap := map[string]map[string]struct{}{}
for _, mapping := range mappings {
_, ok := schemaTablesMap[mapping.Schema]