diff --git a/backend/gen/go/db/dbschemas/mysql/system.sql.go b/backend/gen/go/db/dbschemas/mysql/system.sql.go index ef14256faf..9f20bac777 100644 --- a/backend/gen/go/db/dbschemas/mysql/system.sql.go +++ b/backend/gen/go/db/dbschemas/mysql/system.sql.go @@ -251,6 +251,7 @@ SELECT IFNULL(REPLACE(REPLACE(REPLACE(REPLACE(c.COLUMN_DEFAULT, '_utf8mb4\\\'', '_utf8mb4\''), '_utf8mb3\\\'', '_utf8mb3\''), '\\\'', '\''), '\\\'', '\''), '') AS column_default, -- hack to fix this bug https://bugs.mysql.com/bug.php? c.is_nullable, c.data_type, + c.column_type, -- same as data_type but includes things like the length, or set/enum information c.character_maximum_length, c.numeric_precision, c.numeric_scale, @@ -273,6 +274,7 @@ type GetDatabaseSchemaRow struct { ColumnDefault interface{} IsNullable string DataType string + ColumnType string CharacterMaximumLength sql.NullInt64 NumericPrecision sql.NullInt64 NumericScale sql.NullInt64 @@ -297,6 +299,7 @@ func (q *Queries) GetDatabaseSchema(ctx context.Context, db DBTX) ([]*GetDatabas &i.ColumnDefault, &i.IsNullable, &i.DataType, + &i.ColumnType, &i.CharacterMaximumLength, &i.NumericPrecision, &i.NumericScale, @@ -322,6 +325,7 @@ SELECT c.TABLE_NAME AS table_name, c.COLUMN_NAME AS column_name, c.COLUMN_TYPE AS data_type, + c.COLUMN_TYPE AS column_type, -- same as data_type but includes things like the length, or set/enum information IFNULL(REPLACE(REPLACE(REPLACE(REPLACE(c.COLUMN_DEFAULT, '_utf8mb4\\\'', '_utf8mb4\''), '_utf8mb3\\\'', '_utf8mb3\''), '\\\'', '\''), '\\\'', '\''), '') AS column_default, -- hack to fix this bug https://bugs.mysql.com/bug.php? CASE WHEN c.IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS is_nullable, CAST(IF(c.DATA_TYPE IN ('varchar', 'char'), c.CHARACTER_MAXIMUM_LENGTH, -1) AS SIGNED) AS character_maximum_length, @@ -355,6 +359,7 @@ type GetDatabaseTableSchemasBySchemasAndTablesRow struct { TableName string ColumnName string DataType string + ColumnType string ColumnDefault interface{} IsNullable int32 CharacterMaximumLength int64 @@ -392,6 +397,7 @@ func (q *Queries) GetDatabaseTableSchemasBySchemasAndTables(ctx context.Context, &i.TableName, &i.ColumnName, &i.DataType, + &i.ColumnType, &i.ColumnDefault, &i.IsNullable, &i.CharacterMaximumLength, diff --git a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go index 1dd4918a3e..2e282c1116 100644 --- a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go +++ b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.go @@ -1927,6 +1927,9 @@ type MysqlSourceConnectionOptions struct { unknownFields protoimpl.UnknownFields // Whether to halt the job if a new column is added + // Deprecated: Use new_column_addition_strategy instead + // + // Deprecated: Marked as deprecated in mgmt/v1alpha1/job.proto. HaltOnNewColumnAddition bool `protobuf:"varint,1,opt,name=halt_on_new_column_addition,json=haltOnNewColumnAddition,proto3" json:"halt_on_new_column_addition,omitempty"` // The list of schemas (and their tables) along with any configuration options that will be used. Schemas []*MysqlSourceSchemaOption `protobuf:"bytes,2,rep,name=schemas,proto3" json:"schemas,omitempty"` @@ -1936,6 +1939,8 @@ type MysqlSourceConnectionOptions struct { SubsetByForeignKeyConstraints bool `protobuf:"varint,4,opt,name=subset_by_foreign_key_constraints,json=subsetByForeignKeyConstraints,proto3" json:"subset_by_foreign_key_constraints,omitempty"` // Provide a strategy of what to do in the event Neosync encounters a column that is removed from the source table. ColumnRemovalStrategy *MysqlSourceConnectionOptions_ColumnRemovalStrategy `protobuf:"bytes,5,opt,name=column_removal_strategy,json=columnRemovalStrategy,proto3" json:"column_removal_strategy,omitempty"` + // Provide a strategy of what to do in the event Neosync encounters an unmapped column for the job's mapped tables. + NewColumnAdditionStrategy *MysqlSourceConnectionOptions_NewColumnAdditionStrategy `protobuf:"bytes,6,opt,name=new_column_addition_strategy,json=newColumnAdditionStrategy,proto3" json:"new_column_addition_strategy,omitempty"` } func (x *MysqlSourceConnectionOptions) Reset() { @@ -1968,6 +1973,7 @@ func (*MysqlSourceConnectionOptions) Descriptor() ([]byte, []int) { return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{19} } +// Deprecated: Marked as deprecated in mgmt/v1alpha1/job.proto. func (x *MysqlSourceConnectionOptions) GetHaltOnNewColumnAddition() bool { if x != nil { return x.HaltOnNewColumnAddition @@ -2003,6 +2009,13 @@ func (x *MysqlSourceConnectionOptions) GetColumnRemovalStrategy() *MysqlSourceCo return nil } +func (x *MysqlSourceConnectionOptions) GetNewColumnAdditionStrategy() *MysqlSourceConnectionOptions_NewColumnAdditionStrategy { + if x != nil { + return x.NewColumnAdditionStrategy + } + return nil +} + type MysqlSourceSchemaOption struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -10519,6 +10532,91 @@ func (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob_) isMysqlSourc func (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob_) isMysqlSourceConnectionOptions_ColumnRemovalStrategy_Strategy() { } +type MysqlSourceConnectionOptions_NewColumnAdditionStrategy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Strategy: + // + // *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_ + // *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_ + Strategy isMysqlSourceConnectionOptions_NewColumnAdditionStrategy_Strategy `protobuf_oneof:"strategy"` +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) Reset() { + *x = MysqlSourceConnectionOptions_NewColumnAdditionStrategy{} + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[165] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy) ProtoMessage() {} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) ProtoReflect() protoreflect.Message { + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[165] + 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 MysqlSourceConnectionOptions_NewColumnAdditionStrategy.ProtoReflect.Descriptor instead. +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy) Descriptor() ([]byte, []int) { + return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{19, 1} +} + +func (m *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) GetStrategy() isMysqlSourceConnectionOptions_NewColumnAdditionStrategy_Strategy { + if m != nil { + return m.Strategy + } + return nil +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) GetHaltJob() *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob { + if x, ok := x.GetStrategy().(*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_); ok { + return x.HaltJob + } + return nil +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) GetAutoMap() *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap { + if x, ok := x.GetStrategy().(*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_); ok { + return x.AutoMap + } + return nil +} + +type isMysqlSourceConnectionOptions_NewColumnAdditionStrategy_Strategy interface { + isMysqlSourceConnectionOptions_NewColumnAdditionStrategy_Strategy() +} + +type MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_ struct { + // halt job if a new column is detected. + HaltJob *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob `protobuf:"bytes,1,opt,name=halt_job,json=haltJob,proto3,oneof"` +} + +type MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_ struct { + // automatically handle unmapped columns. It handles this by using the DBs default/nullable values. + // If this doesn't exist, will fall back to configuring generators for supported datatypes. + // If none of the criteria above can be met, the job run will fail to prevent leaking of PII. + AutoMap *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap `protobuf:"bytes,2,opt,name=auto_map,json=autoMap,proto3,oneof"` +} + +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_) isMysqlSourceConnectionOptions_NewColumnAdditionStrategy_Strategy() { +} + +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_) isMysqlSourceConnectionOptions_NewColumnAdditionStrategy_Strategy() { +} + // Configuration for the HaltJob strategy type MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob struct { state protoimpl.MessageState @@ -10528,7 +10626,7 @@ type MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob struct { func (x *MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) Reset() { *x = MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[165] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10540,7 +10638,7 @@ func (x *MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) String() st func (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) ProtoMessage() {} func (x *MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[165] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[166] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10565,7 +10663,7 @@ type MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob struct { func (x *MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) Reset() { *x = MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[166] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10577,7 +10675,7 @@ func (x *MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) String( func (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) ProtoMessage() {} func (x *MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[166] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[167] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10593,6 +10691,80 @@ func (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) Descripto return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{19, 0, 1} } +// Configuration for the HaltJob strategy +type MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) Reset() { + *x = MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob{} + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) ProtoMessage() {} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) ProtoReflect() protoreflect.Message { + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[168] + 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 MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob.ProtoReflect.Descriptor instead. +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) Descriptor() ([]byte, []int) { + return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{19, 1, 0} +} + +// Configuration for the AutoMap strategy +type MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) Reset() { + *x = MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap{} + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) ProtoMessage() {} + +func (x *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) ProtoReflect() protoreflect.Message { + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[169] + 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 MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap.ProtoReflect.Descriptor instead. +func (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) Descriptor() ([]byte, []int) { + return file_mgmt_v1alpha1_job_proto_rawDescGZIP(), []int{19, 1, 1} +} + type MssqlSourceConnectionOptions_ColumnRemovalStrategy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -10607,7 +10779,7 @@ type MssqlSourceConnectionOptions_ColumnRemovalStrategy struct { func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy) Reset() { *x = MssqlSourceConnectionOptions_ColumnRemovalStrategy{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[167] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10619,7 +10791,7 @@ func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy) String() string { func (*MssqlSourceConnectionOptions_ColumnRemovalStrategy) ProtoMessage() {} func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[167] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[170] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10685,7 +10857,7 @@ type MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob struct { func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) Reset() { *x = MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[168] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10697,7 +10869,7 @@ func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) String() st func (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) ProtoMessage() {} func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[168] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[171] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10722,7 +10894,7 @@ type MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob struct { func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) Reset() { *x = MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[169] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10734,7 +10906,7 @@ func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) String( func (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) ProtoMessage() {} func (x *MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[169] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[172] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10759,7 +10931,7 @@ type PostgresOnConflictConfig_PostgresOnConflictDoNothing struct { func (x *PostgresOnConflictConfig_PostgresOnConflictDoNothing) Reset() { *x = PostgresOnConflictConfig_PostgresOnConflictDoNothing{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[170] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10771,7 +10943,7 @@ func (x *PostgresOnConflictConfig_PostgresOnConflictDoNothing) String() string { func (*PostgresOnConflictConfig_PostgresOnConflictDoNothing) ProtoMessage() {} func (x *PostgresOnConflictConfig_PostgresOnConflictDoNothing) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[170] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[173] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10796,7 +10968,7 @@ type PostgresOnConflictConfig_PostgresOnConflictUpdate struct { func (x *PostgresOnConflictConfig_PostgresOnConflictUpdate) Reset() { *x = PostgresOnConflictConfig_PostgresOnConflictUpdate{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[171] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10808,7 +10980,7 @@ func (x *PostgresOnConflictConfig_PostgresOnConflictUpdate) String() string { func (*PostgresOnConflictConfig_PostgresOnConflictUpdate) ProtoMessage() {} func (x *PostgresOnConflictConfig_PostgresOnConflictUpdate) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[171] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[174] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10833,7 +11005,7 @@ type MysqlOnConflictConfig_MysqlOnConflictDoNothing struct { func (x *MysqlOnConflictConfig_MysqlOnConflictDoNothing) Reset() { *x = MysqlOnConflictConfig_MysqlOnConflictDoNothing{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[172] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10845,7 +11017,7 @@ func (x *MysqlOnConflictConfig_MysqlOnConflictDoNothing) String() string { func (*MysqlOnConflictConfig_MysqlOnConflictDoNothing) ProtoMessage() {} func (x *MysqlOnConflictConfig_MysqlOnConflictDoNothing) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[172] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[175] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10870,7 +11042,7 @@ type MysqlOnConflictConfig_MysqlOnConflictUpdate struct { func (x *MysqlOnConflictConfig_MysqlOnConflictUpdate) Reset() { *x = MysqlOnConflictConfig_MysqlOnConflictUpdate{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[173] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10882,7 +11054,7 @@ func (x *MysqlOnConflictConfig_MysqlOnConflictUpdate) String() string { func (*MysqlOnConflictConfig_MysqlOnConflictUpdate) ProtoMessage() {} func (x *MysqlOnConflictConfig_MysqlOnConflictUpdate) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[173] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[176] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10907,7 +11079,7 @@ type JobTypeConfig_JobTypeSync struct { func (x *JobTypeConfig_JobTypeSync) Reset() { *x = JobTypeConfig_JobTypeSync{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[174] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10919,7 +11091,7 @@ func (x *JobTypeConfig_JobTypeSync) String() string { func (*JobTypeConfig_JobTypeSync) ProtoMessage() {} func (x *JobTypeConfig_JobTypeSync) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[174] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[177] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10952,7 +11124,7 @@ type JobTypeConfig_JobTypePiiDetect struct { func (x *JobTypeConfig_JobTypePiiDetect) Reset() { *x = JobTypeConfig_JobTypePiiDetect{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[175] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10964,7 +11136,7 @@ func (x *JobTypeConfig_JobTypePiiDetect) String() string { func (*JobTypeConfig_JobTypePiiDetect) ProtoMessage() {} func (x *JobTypeConfig_JobTypePiiDetect) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[175] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[178] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11020,7 +11192,7 @@ type JobTypeConfig_JobTypePiiDetect_Incremental struct { func (x *JobTypeConfig_JobTypePiiDetect_Incremental) Reset() { *x = JobTypeConfig_JobTypePiiDetect_Incremental{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[176] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11032,7 +11204,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[176] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[179] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11067,7 +11239,7 @@ type JobTypeConfig_JobTypePiiDetect_DataSampling struct { func (x *JobTypeConfig_JobTypePiiDetect_DataSampling) Reset() { *x = JobTypeConfig_JobTypePiiDetect_DataSampling{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[177] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11079,7 +11251,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[177] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[180] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11118,7 +11290,7 @@ type JobTypeConfig_JobTypePiiDetect_TableScanFilter struct { func (x *JobTypeConfig_JobTypePiiDetect_TableScanFilter) Reset() { *x = JobTypeConfig_JobTypePiiDetect_TableScanFilter{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[178] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11130,7 +11302,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[178] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[181] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11211,7 +11383,7 @@ type JobTypeConfig_JobTypePiiDetect_IncludeAll struct { func (x *JobTypeConfig_JobTypePiiDetect_IncludeAll) Reset() { *x = JobTypeConfig_JobTypePiiDetect_IncludeAll{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[179] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11223,7 +11395,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[179] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[182] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11253,7 +11425,7 @@ type JobTypeConfig_JobTypePiiDetect_TablePatterns struct { func (x *JobTypeConfig_JobTypePiiDetect_TablePatterns) Reset() { *x = JobTypeConfig_JobTypePiiDetect_TablePatterns{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[180] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11265,7 +11437,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[180] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11309,7 +11481,7 @@ type JobTypeConfig_JobTypePiiDetect_TableIdentifier struct { func (x *JobTypeConfig_JobTypePiiDetect_TableIdentifier) Reset() { *x = JobTypeConfig_JobTypePiiDetect_TableIdentifier{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[181] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11321,7 +11493,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[181] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[184] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11366,7 +11538,7 @@ type GetJobRunLogsResponse_LogLine struct { func (x *GetJobRunLogsResponse_LogLine) Reset() { *x = GetJobRunLogsResponse_LogLine{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[183] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11378,7 +11550,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[183] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11429,7 +11601,7 @@ type ColumnError_ColumnErrorReport struct { func (x *ColumnError_ColumnErrorReport) Reset() { *x = ColumnError_ColumnErrorReport{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[185] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11441,7 +11613,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[185] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11485,7 +11657,7 @@ type ColumnWarning_ColumnWarningReport struct { func (x *ColumnWarning_ColumnWarningReport) Reset() { *x = ColumnWarning_ColumnWarningReport{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[186] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11497,7 +11669,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[186] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11541,7 +11713,7 @@ type DatabaseError_DatabaseErrorReport struct { func (x *DatabaseError_DatabaseErrorReport) Reset() { *x = DatabaseError_DatabaseErrorReport{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[187] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11553,7 +11725,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[187] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[190] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11597,7 +11769,7 @@ type TableError_TableErrorReport struct { func (x *TableError_TableErrorReport) Reset() { *x = TableError_TableErrorReport{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[188] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11609,7 +11781,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[188] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11652,7 +11824,7 @@ type ValidateSchemaResponse_Table struct { func (x *ValidateSchemaResponse_Table) Reset() { *x = ValidateSchemaResponse_Table{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[189] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11664,7 +11836,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[189] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[192] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11710,7 +11882,7 @@ type JobHookConfig_JobSqlHook struct { func (x *JobHookConfig_JobSqlHook) Reset() { *x = JobHookConfig_JobSqlHook{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[190] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11722,7 +11894,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[190] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11773,7 +11945,7 @@ type JobHookConfig_JobSqlHook_Timing struct { func (x *JobHookConfig_JobSqlHook_Timing) Reset() { *x = JobHookConfig_JobSqlHook_Timing{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[191] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11785,7 +11957,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[191] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[194] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11859,7 +12031,7 @@ type PiiDetectionReport_TableReport struct { func (x *PiiDetectionReport_TableReport) Reset() { *x = PiiDetectionReport_TableReport{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[192] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11871,7 +12043,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[192] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[195] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11924,7 +12096,7 @@ type PiiDetectionReport_TableReport_ColumnReport struct { func (x *PiiDetectionReport_TableReport_ColumnReport) Reset() { *x = PiiDetectionReport_TableReport_ColumnReport{} - mi := &file_mgmt_v1alpha1_job_proto_msgTypes[193] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11936,7 +12108,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[193] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[196] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11985,7 +12157,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[194] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11997,7 +12169,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[194] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[197] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12034,7 +12206,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[195] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12046,7 +12218,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[195] + mi := &file_mgmt_v1alpha1_job_proto_msgTypes[198] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12361,1911 +12533,1937 @@ var file_mgmt_v1alpha1_job_proto_rawDesc = []byte{ 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x22, 0xae, 0x05, 0x0a, 0x1c, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, + 0x61, 0x75, 0x73, 0x65, 0x22, 0xd3, 0x08, 0x0a, 0x1c, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6f, 0x6e, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x1b, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x68, 0x61, 0x6c, 0x74, - 0x4f, 0x6e, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x17, + 0x68, 0x61, 0x6c, 0x74, 0x4f, 0x6e, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x73, 0x18, 0x02, 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, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 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, 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, 0x04, 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, 0x12, 0x79, 0x0a, 0x17, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x41, 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, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x15, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x86, 0x01, + 0x0a, 0x1c, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x61, 0x64, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 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, 0x07, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 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, 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, 0x04, 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, 0x12, 0x79, - 0x0a, 0x17, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, - 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x41, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x52, 0x15, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, - 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x99, 0x02, 0x0a, 0x15, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x66, 0x0a, 0x08, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, - 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, - 0x48, 0x00, 0x52, 0x07, 0x68, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x72, 0x0a, 0x0c, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x4d, 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, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, - 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x1a, - 0x09, 0x0a, 0x07, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x1a, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 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, 0x47, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x25, 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, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, - 0x02, 0x08, 0x01, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x16, 0x4d, - 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x26, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, - 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x68, - 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0xae, 0x05, - 0x0a, 0x1c, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, - 0x0a, 0x1b, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x17, 0x68, 0x61, 0x6c, 0x74, 0x4f, 0x6e, 0x4e, 0x65, 0x77, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x07, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x02, 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, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 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, 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, 0x04, 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, 0x12, 0x79, 0x0a, 0x17, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x15, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x1a, 0x99, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x66, 0x0a, 0x08, - 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x19, 0x6e, 0x65, 0x77, + 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x99, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x12, 0x66, 0x0a, 0x08, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x49, 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, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, + 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, + 0x07, 0x68, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x72, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x07, 0x68, 0x61, 0x6c, - 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x72, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, - 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x1a, 0x09, 0x0a, 0x07, 0x48, 0x61, 0x6c, 0x74, - 0x4a, 0x6f, 0x62, 0x1a, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, - 0x6f, 0x62, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x83, - 0x01, 0x0a, 0x17, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x47, 0x0a, 0x06, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 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, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x16, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x26, 0x0a, - 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, - 0x73, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, - 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x1c, 0x41, 0x77, 0x73, 0x53, 0x33, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 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, 0xcf, 0x05, 0x0a, 0x15, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x60, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, - 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x33, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x61, - 0x77, 0x73, 0x53, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x57, 0x0a, 0x0d, 0x6d, - 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x6f, - 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x76, 0x0a, 0x18, 0x67, 0x63, 0x70, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x63, 0x70, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x48, 0x00, 0x52, 0x16, 0x67, 0x63, 0x70, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x10, 0x64, - 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x64, 0x62, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x79, - 0x6e, 0x61, 0x6d, 0x6f, 0x64, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x57, 0x0a, - 0x0d, 0x6d, 0x73, 0x73, 0x71, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x73, 0x73, 0x71, 0x6c, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x25, 0x0a, 0x23, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2d, - 0x0a, 0x2b, 0x47, 0x63, 0x70, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7d, 0x0a, - 0x24, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x79, - 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 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, 0x22, 0x71, 0x0a, 0x1f, - 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x2b, 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, 0x52, 0x10, 0x64, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, - 0xa4, 0x03, 0x0a, 0x24, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x74, 0x72, 0x75, 0x6e, - 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x74, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, - 0x6e, 0x69, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x48, 0x0a, 0x0b, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, - 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, - 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, - 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x6f, 0x72, 0x65, - 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, - 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, - 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x18, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x64, 0x6f, 0x4e, - 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x5f, 0x0a, 0x07, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, - 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, - 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x5a, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, - 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x1a, 0x1d, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, - 0x6e, 0x67, 0x1a, 0x1a, 0x0a, 0x18, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x11, - 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, - 0x00, 0x22, 0x6d, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x54, 0x72, 0x75, - 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x34, 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x66, - 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, - 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, - 0x22, 0x9b, 0x03, 0x0a, 0x21, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x00, 0x52, + 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x1a, 0x09, 0x0a, 0x07, + 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x1a, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x79, 0x1a, 0x95, 0x02, 0x0a, 0x19, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x12, 0x6a, 0x0a, 0x08, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x4d, 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, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, + 0x62, 0x48, 0x00, 0x52, 0x07, 0x68, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x6a, 0x0a, 0x08, + 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, - 0x79, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x12, 0x45, 0x0a, 0x0b, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x6b, 0x69, - 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x69, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, - 0x73, 0x6b, 0x69, 0x70, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x56, 0x69, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, - 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, - 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, - 0x78, 0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x22, 0x50, - 0x0a, 0x18, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x6e, - 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x74, 0x72, 0x75, 0x6e, - 0x63, 0x61, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, - 0x22, 0xaf, 0x02, 0x0a, 0x15, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6f, - 0x5f, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x59, 0x0a, 0x07, 0x6e, 0x6f, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, - 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, - 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x6f, 0x74, - 0x68, 0x69, 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, - 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x1a, 0x0a, 0x18, 0x4d, 0x79, - 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x44, 0x6f, 0x4e, - 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x17, 0x0a, 0x15, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x11, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, - 0x08, 0x00, 0x22, 0x9b, 0x03, 0x0a, 0x21, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x74, 0x72, 0x75, 0x6e, - 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x12, 0x45, 0x0a, 0x0b, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x4f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0a, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, - 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x0d, - 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, - 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, - 0x22, 0x50, 0x0a, 0x18, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, - 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x74, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x73, 0x65, - 0x72, 0x74, 0x22, 0x36, 0x0a, 0x15, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x64, - 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x22, 0xb9, 0x04, 0x0a, 0x21, 0x41, + 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x77, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x09, 0x0a, 0x07, 0x48, 0x61, 0x6c, 0x74, + 0x4a, 0x6f, 0x62, 0x1a, 0x09, 0x0a, 0x07, 0x41, 0x75, 0x74, 0x6f, 0x4d, 0x61, 0x70, 0x42, 0x0a, + 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x4d, + 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x47, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 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, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x22, 0x70, 0x0a, 0x16, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x26, 0x0a, 0x0c, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x22, 0xae, 0x05, 0x0a, 0x1c, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, + 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x68, 0x61, 0x6c, 0x74, 0x4f, 0x6e, + 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x18, 0x02, 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, 0x07, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 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, 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, 0x04, 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, 0x12, 0x79, 0x0a, 0x17, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x5f, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x52, 0x15, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x99, 0x02, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, + 0x79, 0x12, 0x66, 0x0a, 0x08, 0x68, 0x61, 0x6c, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x49, 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, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x48, 0x00, + 0x52, 0x07, 0x68, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x72, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4d, 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, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x48, 0x00, + 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x1a, 0x09, 0x0a, + 0x07, 0x48, 0x61, 0x6c, 0x74, 0x4a, 0x6f, 0x62, 0x1a, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x65, 0x4a, 0x6f, 0x62, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x17, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x47, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 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, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, + 0x01, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x70, 0x0a, 0x16, 0x4d, 0x73, 0x73, + 0x71, 0x6c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x26, 0x0a, 0x0c, 0x77, 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, + 0x68, 0x65, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x1c, 0x41, + 0x77, 0x73, 0x53, 0x33, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x0d, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 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, 0xcf, 0x05, 0x0a, 0x15, 0x4a, + 0x6f, 0x62, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x60, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x33, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x33, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x62, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x77, 0x73, 0x53, 0x33, 0x44, 0x65, 0x73, + 0x48, 0x00, 0x52, 0x0c, 0x61, 0x77, 0x73, 0x53, 0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x57, 0x0a, 0x0d, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, - 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x2a, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x46, 0x6c, 0x69, - 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, + 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x79, 0x73, + 0x71, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5d, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, + 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x76, 0x0a, 0x18, 0x67, 0x63, 0x70, 0x5f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x63, 0x70, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x16, 0x67, 0x63, 0x70, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x60, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x64, 0x62, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, + 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, + 0x00, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x64, 0x62, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x57, 0x0a, 0x0d, 0x6d, 0x73, 0x73, 0x71, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x44, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6d, + 0x73, 0x73, 0x71, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x25, 0x0a, 0x23, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0x2d, 0x0a, 0x2b, 0x47, 0x63, 0x70, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x7d, 0x0a, 0x24, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x22, 0x71, 0x0a, 0x1f, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x6f, 0x44, 0x42, 0x44, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2b, 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, 0x52, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0xa4, 0x03, 0x0a, 0x24, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, + 0x0e, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x54, 0x72, + 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, + 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x48, 0x0a, 0x0b, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x66, + 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x6b, 0x69, + 0x70, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x56, 0x69, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x22, 0x8e, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x54, 0x4f, 0x52, - 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, - 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, - 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, - 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x44, - 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x59, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, - 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x47, 0x4c, 0x41, 0x43, 0x49, - 0x45, 0x52, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, - 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x5f, 0x49, - 0x41, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, - 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4f, 0x4e, 0x45, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, 0x49, 0x41, 0x10, - 0x05, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, - 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x4c, 0x49, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x49, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x4f, 0x52, - 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x45, 0x50, 0x5f, 0x41, - 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10, 0x07, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x5a, 0x0a, 0x0b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 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, 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, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x34, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 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, 0x07, 0x6a, - 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 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, 0x30, 0x0a, 0x06, 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, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 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, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x6a, - 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, 0x6e, 0x12, 0x49, 0x0a, 0x10, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x08, 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, 0x41, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 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, 0x59, 0x0a, 0x14, 0x76, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, 0x65, - 0x79, 0x73, 0x18, 0x0a, 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, 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, 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, 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, + 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x69, + 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, + 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, + 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x18, + 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, 0x6e, + 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x09, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x5f, 0x0a, 0x07, 0x6e, + 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x5a, 0x0a, 0x06, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, + 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x1d, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x44, 0x6f, + 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x1a, 0x0a, 0x18, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x73, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, + 0x05, 0xba, 0x48, 0x02, 0x08, 0x00, 0x22, 0x6d, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, + 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, + 0x65, 0x66, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, + 0x73, 0x63, 0x61, 0x64, 0x65, 0x22, 0x9b, 0x03, 0x0a, 0x21, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x44, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x74, 0x72, + 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, + 0x6e, 0x69, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x45, 0x0a, 0x0b, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, + 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x3d, + 0x0a, 0x1b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, + 0x4b, 0x65, 0x79, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, + 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, + 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, + 0x67, 0x68, 0x74, 0x22, 0x50, 0x0a, 0x18, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x34, 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x14, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x49, + 0x6e, 0x73, 0x65, 0x72, 0x74, 0x22, 0xaf, 0x02, 0x0a, 0x15, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1d, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x59, + 0x0a, 0x07, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x48, 0x00, + 0x52, 0x07, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x06, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, + 0x1a, 0x0a, 0x18, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x44, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x1a, 0x17, 0x0a, 0x15, 0x4d, + 0x79, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x00, 0x22, 0x9b, 0x03, 0x0a, 0x21, 0x4d, 0x73, 0x73, 0x71, + 0x6c, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4e, 0x0a, + 0x0e, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x54, 0x72, 0x75, 0x6e, 0x63, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, + 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, + 0x11, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x45, 0x0a, 0x0b, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, + 0x73, 0x73, 0x71, 0x6c, 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, + 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x6f, 0x72, 0x65, 0x69, + 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x30, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x28, + 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, + 0x6c, 0x69, 0x67, 0x68, 0x74, 0x22, 0x50, 0x0a, 0x18, 0x4d, 0x73, 0x73, 0x71, 0x6c, 0x54, 0x72, + 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, + 0x66, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x22, 0x36, 0x0a, 0x15, 0x4d, 0x73, 0x73, 0x71, 0x6c, + 0x4f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x6f, 0x5f, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x6f, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x22, + 0xb9, 0x04, 0x0a, 0x21, 0x41, 0x77, 0x73, 0x53, 0x33, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x77, 0x73, + 0x53, 0x33, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x0d, 0x6d, 0x61, 0x78, + 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, + 0x49, 0x6e, 0x46, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x22, 0x8e, 0x02, 0x0a, + 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1d, 0x0a, + 0x19, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x53, 0x54, + 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x54, 0x4f, 0x52, + 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, + 0x44, 0x5f, 0x52, 0x45, 0x44, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x59, 0x10, 0x02, 0x12, 0x19, + 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, + 0x47, 0x4c, 0x41, 0x43, 0x49, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x54, 0x4f, + 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, + 0x41, 0x52, 0x44, 0x5f, 0x49, 0x41, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x4f, 0x52, + 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4f, 0x4e, 0x45, 0x5a, 0x4f, 0x4e, + 0x45, 0x5f, 0x49, 0x41, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, + 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x4c, 0x49, 0x47, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x49, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x1e, 0x0a, + 0x1a, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x44, + 0x45, 0x45, 0x50, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10, 0x07, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x5a, 0x0a, 0x0b, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 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, 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, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 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, 0x07, 0x6a, 0x6f, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x63, + 0x72, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x72, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x04, 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, 0x30, 0x0a, 0x06, + 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, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x47, + 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, + 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, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x75, + 0x6e, 0x12, 0x49, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 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, 0x41, 0x0a, 0x0c, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 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, + 0x59, 0x0a, 0x14, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, + 0x67, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x0a, 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, 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, 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, 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, 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, + 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, 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, 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, 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, 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, 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, + 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, 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, + 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, + 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, 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, 0x48, 0x00, 0x52, 0x05, - 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 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, 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 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, 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, 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, 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, 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, + 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, + 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, 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, 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, + 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, 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, 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, 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, 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, + 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, - 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, 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, 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, + 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, 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, 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, + 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, 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, 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, - 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, 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, + 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, 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, + 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, - 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, 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, + 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, 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, 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, + 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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 ( @@ -14281,7 +14479,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, 196) +var file_mgmt_v1alpha1_job_proto_msgTypes = make([]protoimpl.MessageInfo, 199) var file_mgmt_v1alpha1_job_proto_goTypes = []any{ (JobStatus)(0), // 0: mgmt.v1alpha1.JobStatus (ActivityStatus)(0), // 1: mgmt.v1alpha1.ActivityStatus @@ -14459,40 +14657,43 @@ var file_mgmt_v1alpha1_job_proto_goTypes = []any{ (*PostgresSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 173: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJob (*PostgresSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 174: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob (*MysqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 175: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy - (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 176: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob - (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 177: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob - (*MssqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 178: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy - (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 179: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob - (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 180: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob - (*PostgresOnConflictConfig_PostgresOnConflictDoNothing)(nil), // 181: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothing - (*PostgresOnConflictConfig_PostgresOnConflictUpdate)(nil), // 182: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdate - (*MysqlOnConflictConfig_MysqlOnConflictDoNothing)(nil), // 183: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothing - (*MysqlOnConflictConfig_MysqlOnConflictUpdate)(nil), // 184: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdate - (*JobTypeConfig_JobTypeSync)(nil), // 185: mgmt.v1alpha1.JobTypeConfig.JobTypeSync - (*JobTypeConfig_JobTypePiiDetect)(nil), // 186: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect - (*JobTypeConfig_JobTypePiiDetect_Incremental)(nil), // 187: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental - (*JobTypeConfig_JobTypePiiDetect_DataSampling)(nil), // 188: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling - (*JobTypeConfig_JobTypePiiDetect_TableScanFilter)(nil), // 189: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter - (*JobTypeConfig_JobTypePiiDetect_IncludeAll)(nil), // 190: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll - (*JobTypeConfig_JobTypePiiDetect_TablePatterns)(nil), // 191: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns - (*JobTypeConfig_JobTypePiiDetect_TableIdentifier)(nil), // 192: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier - nil, // 193: mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry - (*GetJobRunLogsResponse_LogLine)(nil), // 194: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine - nil, // 195: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry - (*ColumnError_ColumnErrorReport)(nil), // 196: mgmt.v1alpha1.ColumnError.ColumnErrorReport - (*ColumnWarning_ColumnWarningReport)(nil), // 197: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport - (*DatabaseError_DatabaseErrorReport)(nil), // 198: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport - (*TableError_TableErrorReport)(nil), // 199: mgmt.v1alpha1.TableError.TableErrorReport - (*ValidateSchemaResponse_Table)(nil), // 200: mgmt.v1alpha1.ValidateSchemaResponse.Table - (*JobHookConfig_JobSqlHook)(nil), // 201: mgmt.v1alpha1.JobHookConfig.JobSqlHook - (*JobHookConfig_JobSqlHook_Timing)(nil), // 202: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing - (*PiiDetectionReport_TableReport)(nil), // 203: mgmt.v1alpha1.PiiDetectionReport.TableReport - (*PiiDetectionReport_TableReport_ColumnReport)(nil), // 204: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport - (*PiiDetectionReport_TableReport_ColumnReport_Regex)(nil), // 205: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex - (*PiiDetectionReport_TableReport_ColumnReport_LLM)(nil), // 206: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM - (*TransformerConfig)(nil), // 207: mgmt.v1alpha1.TransformerConfig - (*timestamppb.Timestamp)(nil), // 208: google.protobuf.Timestamp - (*DatabaseColumn)(nil), // 209: mgmt.v1alpha1.DatabaseColumn + (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy)(nil), // 176: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy + (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 177: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob + (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 178: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob + (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob)(nil), // 179: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob + (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap)(nil), // 180: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap + (*MssqlSourceConnectionOptions_ColumnRemovalStrategy)(nil), // 181: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy + (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob)(nil), // 182: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob + (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob)(nil), // 183: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob + (*PostgresOnConflictConfig_PostgresOnConflictDoNothing)(nil), // 184: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothing + (*PostgresOnConflictConfig_PostgresOnConflictUpdate)(nil), // 185: mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdate + (*MysqlOnConflictConfig_MysqlOnConflictDoNothing)(nil), // 186: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothing + (*MysqlOnConflictConfig_MysqlOnConflictUpdate)(nil), // 187: mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdate + (*JobTypeConfig_JobTypeSync)(nil), // 188: mgmt.v1alpha1.JobTypeConfig.JobTypeSync + (*JobTypeConfig_JobTypePiiDetect)(nil), // 189: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect + (*JobTypeConfig_JobTypePiiDetect_Incremental)(nil), // 190: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental + (*JobTypeConfig_JobTypePiiDetect_DataSampling)(nil), // 191: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling + (*JobTypeConfig_JobTypePiiDetect_TableScanFilter)(nil), // 192: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter + (*JobTypeConfig_JobTypePiiDetect_IncludeAll)(nil), // 193: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll + (*JobTypeConfig_JobTypePiiDetect_TablePatterns)(nil), // 194: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns + (*JobTypeConfig_JobTypePiiDetect_TableIdentifier)(nil), // 195: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier + nil, // 196: mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry + (*GetJobRunLogsResponse_LogLine)(nil), // 197: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine + nil, // 198: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry + (*ColumnError_ColumnErrorReport)(nil), // 199: mgmt.v1alpha1.ColumnError.ColumnErrorReport + (*ColumnWarning_ColumnWarningReport)(nil), // 200: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport + (*DatabaseError_DatabaseErrorReport)(nil), // 201: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport + (*TableError_TableErrorReport)(nil), // 202: mgmt.v1alpha1.TableError.TableErrorReport + (*ValidateSchemaResponse_Table)(nil), // 203: mgmt.v1alpha1.ValidateSchemaResponse.Table + (*JobHookConfig_JobSqlHook)(nil), // 204: mgmt.v1alpha1.JobHookConfig.JobSqlHook + (*JobHookConfig_JobSqlHook_Timing)(nil), // 205: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing + (*PiiDetectionReport_TableReport)(nil), // 206: mgmt.v1alpha1.PiiDetectionReport.TableReport + (*PiiDetectionReport_TableReport_ColumnReport)(nil), // 207: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport + (*PiiDetectionReport_TableReport_ColumnReport_Regex)(nil), // 208: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex + (*PiiDetectionReport_TableReport_ColumnReport_LLM)(nil), // 209: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM + (*TransformerConfig)(nil), // 210: mgmt.v1alpha1.TransformerConfig + (*timestamppb.Timestamp)(nil), // 211: google.protobuf.Timestamp + (*DatabaseColumn)(nil), // 212: mgmt.v1alpha1.DatabaseColumn } var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{ 94, // 0: mgmt.v1alpha1.GetJobsResponse.jobs:type_name -> mgmt.v1alpha1.Job @@ -14523,260 +14724,263 @@ var file_mgmt_v1alpha1_job_proto_depIdxs = []int32{ 29, // 25: mgmt.v1alpha1.PostgresSourceSchemaOption.tables:type_name -> mgmt.v1alpha1.PostgresSourceTableOption 31, // 26: mgmt.v1alpha1.MysqlSourceConnectionOptions.schemas:type_name -> mgmt.v1alpha1.MysqlSourceSchemaOption 175, // 27: mgmt.v1alpha1.MysqlSourceConnectionOptions.column_removal_strategy:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy - 32, // 28: mgmt.v1alpha1.MysqlSourceSchemaOption.tables:type_name -> mgmt.v1alpha1.MysqlSourceTableOption - 34, // 29: mgmt.v1alpha1.MssqlSourceConnectionOptions.schemas:type_name -> mgmt.v1alpha1.MssqlSourceSchemaOption - 178, // 30: mgmt.v1alpha1.MssqlSourceConnectionOptions.column_removal_strategy:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy - 35, // 31: mgmt.v1alpha1.MssqlSourceSchemaOption.tables:type_name -> mgmt.v1alpha1.MssqlSourceTableOption - 42, // 32: mgmt.v1alpha1.JobDestinationOptions.postgres_options:type_name -> mgmt.v1alpha1.PostgresDestinationConnectionOptions - 51, // 33: mgmt.v1alpha1.JobDestinationOptions.aws_s3_options:type_name -> mgmt.v1alpha1.AwsS3DestinationConnectionOptions - 45, // 34: mgmt.v1alpha1.JobDestinationOptions.mysql_options:type_name -> mgmt.v1alpha1.MysqlDestinationConnectionOptions - 38, // 35: mgmt.v1alpha1.JobDestinationOptions.mongodb_options:type_name -> mgmt.v1alpha1.MongoDBDestinationConnectionOptions - 39, // 36: mgmt.v1alpha1.JobDestinationOptions.gcp_cloudstorage_options:type_name -> mgmt.v1alpha1.GcpCloudStorageDestinationConnectionOptions - 40, // 37: mgmt.v1alpha1.JobDestinationOptions.dynamodb_options:type_name -> mgmt.v1alpha1.DynamoDBDestinationConnectionOptions - 48, // 38: mgmt.v1alpha1.JobDestinationOptions.mssql_options:type_name -> mgmt.v1alpha1.MssqlDestinationConnectionOptions - 41, // 39: mgmt.v1alpha1.DynamoDBDestinationConnectionOptions.table_mappings:type_name -> mgmt.v1alpha1.DynamoDBDestinationTableMapping - 44, // 40: mgmt.v1alpha1.PostgresDestinationConnectionOptions.truncate_table:type_name -> mgmt.v1alpha1.PostgresTruncateTableConfig - 43, // 41: mgmt.v1alpha1.PostgresDestinationConnectionOptions.on_conflict:type_name -> mgmt.v1alpha1.PostgresOnConflictConfig - 52, // 42: mgmt.v1alpha1.PostgresDestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig - 181, // 43: mgmt.v1alpha1.PostgresOnConflictConfig.nothing:type_name -> mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothing - 182, // 44: mgmt.v1alpha1.PostgresOnConflictConfig.update:type_name -> mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdate - 46, // 45: mgmt.v1alpha1.MysqlDestinationConnectionOptions.truncate_table:type_name -> mgmt.v1alpha1.MysqlTruncateTableConfig - 47, // 46: mgmt.v1alpha1.MysqlDestinationConnectionOptions.on_conflict:type_name -> mgmt.v1alpha1.MysqlOnConflictConfig - 52, // 47: mgmt.v1alpha1.MysqlDestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig - 183, // 48: mgmt.v1alpha1.MysqlOnConflictConfig.nothing:type_name -> mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothing - 184, // 49: mgmt.v1alpha1.MysqlOnConflictConfig.update:type_name -> mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdate - 49, // 50: mgmt.v1alpha1.MssqlDestinationConnectionOptions.truncate_table:type_name -> mgmt.v1alpha1.MssqlTruncateTableConfig - 50, // 51: mgmt.v1alpha1.MssqlDestinationConnectionOptions.on_conflict:type_name -> mgmt.v1alpha1.MssqlOnConflictConfig - 52, // 52: mgmt.v1alpha1.MssqlDestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig - 5, // 53: mgmt.v1alpha1.AwsS3DestinationConnectionOptions.storage_class:type_name -> mgmt.v1alpha1.AwsS3DestinationConnectionOptions.StorageClass - 52, // 54: mgmt.v1alpha1.AwsS3DestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig - 60, // 55: mgmt.v1alpha1.CreateJobRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping - 13, // 56: mgmt.v1alpha1.CreateJobRequest.source:type_name -> mgmt.v1alpha1.JobSource - 15, // 57: mgmt.v1alpha1.CreateJobRequest.destinations:type_name -> mgmt.v1alpha1.CreateJobDestination - 55, // 58: mgmt.v1alpha1.CreateJobRequest.workflow_options:type_name -> mgmt.v1alpha1.WorkflowOptions - 56, // 59: mgmt.v1alpha1.CreateJobRequest.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions - 137, // 60: mgmt.v1alpha1.CreateJobRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint - 54, // 61: mgmt.v1alpha1.CreateJobRequest.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig - 185, // 62: mgmt.v1alpha1.JobTypeConfig.sync:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync - 186, // 63: mgmt.v1alpha1.JobTypeConfig.pii_detect:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect - 57, // 64: mgmt.v1alpha1.ActivityOptions.retry_policy:type_name -> mgmt.v1alpha1.RetryPolicy - 94, // 65: mgmt.v1alpha1.CreateJobResponse.job:type_name -> mgmt.v1alpha1.Job - 207, // 66: mgmt.v1alpha1.JobMappingTransformer.config:type_name -> mgmt.v1alpha1.TransformerConfig - 59, // 67: mgmt.v1alpha1.JobMapping.transformer:type_name -> mgmt.v1alpha1.JobMappingTransformer - 94, // 68: mgmt.v1alpha1.GetJobResponse.job:type_name -> mgmt.v1alpha1.Job - 94, // 69: mgmt.v1alpha1.UpdateJobScheduleResponse.job:type_name -> mgmt.v1alpha1.Job - 94, // 70: mgmt.v1alpha1.PauseJobResponse.job:type_name -> mgmt.v1alpha1.Job - 13, // 71: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.source:type_name -> mgmt.v1alpha1.JobSource - 60, // 72: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping - 137, // 73: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint - 54, // 74: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig - 94, // 75: mgmt.v1alpha1.UpdateJobSourceConnectionResponse.job:type_name -> mgmt.v1alpha1.Job - 28, // 76: mgmt.v1alpha1.PostgresSourceSchemaSubset.postgres_schemas:type_name -> mgmt.v1alpha1.PostgresSourceSchemaOption - 31, // 77: mgmt.v1alpha1.MysqlSourceSchemaSubset.mysql_schemas:type_name -> mgmt.v1alpha1.MysqlSourceSchemaOption - 26, // 78: mgmt.v1alpha1.DynamoDBSourceSchemaSubset.tables:type_name -> mgmt.v1alpha1.DynamoDBSourceTableOption - 34, // 79: mgmt.v1alpha1.MssqlSourceSchemaSubset.mssql_schemas:type_name -> mgmt.v1alpha1.MssqlSourceSchemaOption - 69, // 80: mgmt.v1alpha1.JobSourceSqlSubetSchemas.postgres_subset:type_name -> mgmt.v1alpha1.PostgresSourceSchemaSubset - 70, // 81: mgmt.v1alpha1.JobSourceSqlSubetSchemas.mysql_subset:type_name -> mgmt.v1alpha1.MysqlSourceSchemaSubset - 71, // 82: mgmt.v1alpha1.JobSourceSqlSubetSchemas.dynamodb_subset:type_name -> mgmt.v1alpha1.DynamoDBSourceSchemaSubset - 72, // 83: mgmt.v1alpha1.JobSourceSqlSubetSchemas.mssql_subset:type_name -> mgmt.v1alpha1.MssqlSourceSchemaSubset - 73, // 84: mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest.schemas:type_name -> mgmt.v1alpha1.JobSourceSqlSubetSchemas - 94, // 85: mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse.job:type_name -> mgmt.v1alpha1.Job - 37, // 86: mgmt.v1alpha1.UpdateJobDestinationConnectionRequest.options:type_name -> mgmt.v1alpha1.JobDestinationOptions - 94, // 87: mgmt.v1alpha1.UpdateJobDestinationConnectionResponse.job:type_name -> mgmt.v1alpha1.Job - 15, // 88: mgmt.v1alpha1.CreateJobDestinationConnectionsRequest.destinations:type_name -> mgmt.v1alpha1.CreateJobDestination - 94, // 89: mgmt.v1alpha1.CreateJobDestinationConnectionsResponse.job:type_name -> mgmt.v1alpha1.Job - 108, // 90: mgmt.v1alpha1.GetJobRunsResponse.job_runs:type_name -> mgmt.v1alpha1.JobRun - 108, // 91: mgmt.v1alpha1.GetJobRunResponse.job_run:type_name -> mgmt.v1alpha1.JobRun - 208, // 92: mgmt.v1alpha1.Job.created_at:type_name -> google.protobuf.Timestamp - 208, // 93: mgmt.v1alpha1.Job.updated_at:type_name -> google.protobuf.Timestamp - 13, // 94: mgmt.v1alpha1.Job.source:type_name -> mgmt.v1alpha1.JobSource - 16, // 95: mgmt.v1alpha1.Job.destinations:type_name -> mgmt.v1alpha1.JobDestination - 60, // 96: mgmt.v1alpha1.Job.mappings:type_name -> mgmt.v1alpha1.JobMapping - 56, // 97: mgmt.v1alpha1.Job.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions - 55, // 98: mgmt.v1alpha1.Job.workflow_options:type_name -> mgmt.v1alpha1.WorkflowOptions - 137, // 99: mgmt.v1alpha1.Job.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint - 54, // 100: mgmt.v1alpha1.Job.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig - 208, // 101: mgmt.v1alpha1.JobRecentRun.start_time:type_name -> google.protobuf.Timestamp - 95, // 102: mgmt.v1alpha1.GetJobRecentRunsResponse.recent_runs:type_name -> mgmt.v1alpha1.JobRecentRun - 208, // 103: mgmt.v1alpha1.JobNextRuns.next_run_times:type_name -> google.protobuf.Timestamp - 98, // 104: mgmt.v1alpha1.GetJobNextRunsResponse.next_runs:type_name -> mgmt.v1alpha1.JobNextRuns - 0, // 105: mgmt.v1alpha1.GetJobStatusResponse.status:type_name -> mgmt.v1alpha1.JobStatus - 0, // 106: mgmt.v1alpha1.JobStatusRecord.status:type_name -> mgmt.v1alpha1.JobStatus - 103, // 107: mgmt.v1alpha1.GetJobStatusesResponse.statuses:type_name -> mgmt.v1alpha1.JobStatusRecord - 1, // 108: mgmt.v1alpha1.PendingActivity.status:type_name -> mgmt.v1alpha1.ActivityStatus - 106, // 109: mgmt.v1alpha1.PendingActivity.last_failure:type_name -> mgmt.v1alpha1.ActivityFailure - 2, // 110: mgmt.v1alpha1.JobRun.status:type_name -> mgmt.v1alpha1.JobRunStatus - 208, // 111: mgmt.v1alpha1.JobRun.started_at:type_name -> google.protobuf.Timestamp - 208, // 112: mgmt.v1alpha1.JobRun.completed_at:type_name -> google.protobuf.Timestamp - 107, // 113: mgmt.v1alpha1.JobRun.pending_activities:type_name -> mgmt.v1alpha1.PendingActivity - 208, // 114: mgmt.v1alpha1.JobRunEventTask.event_time:type_name -> google.protobuf.Timestamp - 109, // 115: mgmt.v1alpha1.JobRunEventTask.error:type_name -> mgmt.v1alpha1.JobRunEventTaskError - 111, // 116: mgmt.v1alpha1.JobRunEventMetadata.sync_metadata:type_name -> mgmt.v1alpha1.JobRunSyncMetadata - 208, // 117: mgmt.v1alpha1.JobRunEvent.start_time:type_name -> google.protobuf.Timestamp - 208, // 118: mgmt.v1alpha1.JobRunEvent.close_time:type_name -> google.protobuf.Timestamp - 112, // 119: mgmt.v1alpha1.JobRunEvent.metadata:type_name -> mgmt.v1alpha1.JobRunEventMetadata - 110, // 120: mgmt.v1alpha1.JobRunEvent.tasks:type_name -> mgmt.v1alpha1.JobRunEventTask - 113, // 121: mgmt.v1alpha1.GetJobRunEventsResponse.events:type_name -> mgmt.v1alpha1.JobRunEvent - 3, // 122: mgmt.v1alpha1.GetJobRunLogsStreamRequest.window:type_name -> mgmt.v1alpha1.LogWindow - 4, // 123: mgmt.v1alpha1.GetJobRunLogsStreamRequest.log_levels:type_name -> mgmt.v1alpha1.LogLevel - 208, // 124: mgmt.v1alpha1.GetJobRunLogsStreamResponse.timestamp:type_name -> google.protobuf.Timestamp - 193, // 125: mgmt.v1alpha1.GetJobRunLogsStreamResponse.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry - 3, // 126: mgmt.v1alpha1.GetJobRunLogsRequest.window:type_name -> mgmt.v1alpha1.LogWindow - 4, // 127: mgmt.v1alpha1.GetJobRunLogsRequest.log_levels:type_name -> mgmt.v1alpha1.LogLevel - 194, // 128: mgmt.v1alpha1.GetJobRunLogsResponse.log_lines:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine - 55, // 129: mgmt.v1alpha1.SetJobWorkflowOptionsRequest.worfklow_options:type_name -> mgmt.v1alpha1.WorkflowOptions - 94, // 130: mgmt.v1alpha1.SetJobWorkflowOptionsResponse.job:type_name -> mgmt.v1alpha1.Job - 56, // 131: mgmt.v1alpha1.SetJobSyncOptionsRequest.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions - 94, // 132: mgmt.v1alpha1.SetJobSyncOptionsResponse.job:type_name -> mgmt.v1alpha1.Job - 60, // 133: mgmt.v1alpha1.ValidateJobMappingsRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping - 137, // 134: mgmt.v1alpha1.ValidateJobMappingsRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint - 13, // 135: mgmt.v1alpha1.ValidateJobMappingsRequest.job_source:type_name -> mgmt.v1alpha1.JobSource - 196, // 136: mgmt.v1alpha1.ColumnError.error_reports:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorReport - 197, // 137: mgmt.v1alpha1.ColumnWarning.warning_reports:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningReport - 198, // 138: mgmt.v1alpha1.DatabaseError.error_reports:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorReport - 199, // 139: mgmt.v1alpha1.TableError.error_reports:type_name -> mgmt.v1alpha1.TableError.TableErrorReport - 129, // 140: mgmt.v1alpha1.ValidateJobMappingsResponse.column_errors:type_name -> mgmt.v1alpha1.ColumnError - 131, // 141: mgmt.v1alpha1.ValidateJobMappingsResponse.database_errors:type_name -> mgmt.v1alpha1.DatabaseError - 130, // 142: mgmt.v1alpha1.ValidateJobMappingsResponse.column_warnings:type_name -> mgmt.v1alpha1.ColumnWarning - 132, // 143: mgmt.v1alpha1.ValidateJobMappingsResponse.table_errors:type_name -> mgmt.v1alpha1.TableError - 60, // 144: mgmt.v1alpha1.ValidateSchemaRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping - 209, // 145: mgmt.v1alpha1.ValidateSchemaResponse.missing_columns:type_name -> mgmt.v1alpha1.DatabaseColumn - 209, // 146: mgmt.v1alpha1.ValidateSchemaResponse.extra_columns:type_name -> mgmt.v1alpha1.DatabaseColumn - 200, // 147: mgmt.v1alpha1.ValidateSchemaResponse.missing_tables:type_name -> mgmt.v1alpha1.ValidateSchemaResponse.Table - 136, // 148: mgmt.v1alpha1.VirtualForeignConstraint.foreign_key:type_name -> mgmt.v1alpha1.VirtualForeignKey - 138, // 149: mgmt.v1alpha1.GetRunContextRequest.id:type_name -> mgmt.v1alpha1.RunContextKey - 138, // 150: mgmt.v1alpha1.SetRunContextRequest.id:type_name -> mgmt.v1alpha1.RunContextKey - 138, // 151: mgmt.v1alpha1.SetRunContextsRequest.id:type_name -> mgmt.v1alpha1.RunContextKey - 147, // 152: mgmt.v1alpha1.JobHook.config:type_name -> mgmt.v1alpha1.JobHookConfig - 208, // 153: mgmt.v1alpha1.JobHook.created_at:type_name -> google.protobuf.Timestamp - 208, // 154: mgmt.v1alpha1.JobHook.updated_at:type_name -> google.protobuf.Timestamp - 147, // 155: mgmt.v1alpha1.NewJobHook.config:type_name -> mgmt.v1alpha1.JobHookConfig - 201, // 156: mgmt.v1alpha1.JobHookConfig.sql:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook - 145, // 157: mgmt.v1alpha1.GetJobHooksResponse.hooks:type_name -> mgmt.v1alpha1.JobHook - 145, // 158: mgmt.v1alpha1.GetJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook - 146, // 159: mgmt.v1alpha1.CreateJobHookRequest.hook:type_name -> mgmt.v1alpha1.NewJobHook - 145, // 160: mgmt.v1alpha1.CreateJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook - 147, // 161: mgmt.v1alpha1.UpdateJobHookRequest.config:type_name -> mgmt.v1alpha1.JobHookConfig - 145, // 162: mgmt.v1alpha1.UpdateJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook - 145, // 163: mgmt.v1alpha1.SetJobHookEnabledResponse.hook:type_name -> mgmt.v1alpha1.JobHook - 10, // 164: mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.timing:type_name -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.Timing - 145, // 165: mgmt.v1alpha1.GetActiveJobHooksByTimingResponse.hooks:type_name -> mgmt.v1alpha1.JobHook - 168, // 166: mgmt.v1alpha1.GetPiiDetectionReportResponse.report:type_name -> mgmt.v1alpha1.PiiDetectionReport - 203, // 167: mgmt.v1alpha1.PiiDetectionReport.tables:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport - 171, // 168: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.halt_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob - 172, // 169: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.auto_map:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap - 173, // 170: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.halt_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJob - 174, // 171: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob - 176, // 172: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.halt_job:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob - 177, // 173: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob - 179, // 174: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.halt_job:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob - 180, // 175: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob - 188, // 176: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.data_sampling:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling - 189, // 177: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.table_scan_filter:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter - 187, // 178: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.incremental:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental - 190, // 179: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include_all:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll - 191, // 180: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns - 191, // 181: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.exclude:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns - 192, // 182: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns.tables:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier - 208, // 183: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.timestamp:type_name -> google.protobuf.Timestamp - 195, // 184: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry - 6, // 185: mgmt.v1alpha1.ColumnError.ColumnErrorReport.code:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorCode - 7, // 186: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport.code:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningCode - 8, // 187: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport.code:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorCode - 9, // 188: mgmt.v1alpha1.TableError.TableErrorReport.code:type_name -> mgmt.v1alpha1.TableError.TableErrorCode - 202, // 189: mgmt.v1alpha1.JobHookConfig.JobSqlHook.timing:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing - 148, // 190: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.pre_sync:type_name -> mgmt.v1alpha1.JobHookTimingPreSync - 149, // 191: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.post_sync:type_name -> mgmt.v1alpha1.JobHookTimingPostSync - 204, // 192: mgmt.v1alpha1.PiiDetectionReport.TableReport.columns:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport - 205, // 193: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.regex_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex - 206, // 194: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.llm_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM - 11, // 195: mgmt.v1alpha1.JobService.GetJobs:input_type -> mgmt.v1alpha1.GetJobsRequest - 61, // 196: mgmt.v1alpha1.JobService.GetJob:input_type -> mgmt.v1alpha1.GetJobRequest - 53, // 197: mgmt.v1alpha1.JobService.CreateJob:input_type -> mgmt.v1alpha1.CreateJobRequest - 82, // 198: mgmt.v1alpha1.JobService.DeleteJob:input_type -> mgmt.v1alpha1.DeleteJobRequest - 84, // 199: mgmt.v1alpha1.JobService.IsJobNameAvailable:input_type -> mgmt.v1alpha1.IsJobNameAvailableRequest - 63, // 200: mgmt.v1alpha1.JobService.UpdateJobSchedule:input_type -> mgmt.v1alpha1.UpdateJobScheduleRequest - 67, // 201: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:input_type -> mgmt.v1alpha1.UpdateJobSourceConnectionRequest - 74, // 202: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:input_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest - 76, // 203: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:input_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionRequest - 78, // 204: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:input_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionRequest - 80, // 205: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:input_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsRequest - 65, // 206: mgmt.v1alpha1.JobService.PauseJob:input_type -> mgmt.v1alpha1.PauseJobRequest - 96, // 207: mgmt.v1alpha1.JobService.GetJobRecentRuns:input_type -> mgmt.v1alpha1.GetJobRecentRunsRequest - 99, // 208: mgmt.v1alpha1.JobService.GetJobNextRuns:input_type -> mgmt.v1alpha1.GetJobNextRunsRequest - 101, // 209: mgmt.v1alpha1.JobService.GetJobStatus:input_type -> mgmt.v1alpha1.GetJobStatusRequest - 104, // 210: mgmt.v1alpha1.JobService.GetJobStatuses:input_type -> mgmt.v1alpha1.GetJobStatusesRequest - 86, // 211: mgmt.v1alpha1.JobService.GetJobRuns:input_type -> mgmt.v1alpha1.GetJobRunsRequest - 114, // 212: mgmt.v1alpha1.JobService.GetJobRunEvents:input_type -> mgmt.v1alpha1.GetJobRunEventsRequest - 88, // 213: mgmt.v1alpha1.JobService.GetJobRun:input_type -> mgmt.v1alpha1.GetJobRunRequest - 116, // 214: mgmt.v1alpha1.JobService.DeleteJobRun:input_type -> mgmt.v1alpha1.DeleteJobRunRequest - 90, // 215: mgmt.v1alpha1.JobService.CreateJobRun:input_type -> mgmt.v1alpha1.CreateJobRunRequest - 92, // 216: mgmt.v1alpha1.JobService.CancelJobRun:input_type -> mgmt.v1alpha1.CancelJobRunRequest - 118, // 217: mgmt.v1alpha1.JobService.TerminateJobRun:input_type -> mgmt.v1alpha1.TerminateJobRunRequest - 120, // 218: mgmt.v1alpha1.JobService.GetJobRunLogsStream:input_type -> mgmt.v1alpha1.GetJobRunLogsStreamRequest - 122, // 219: mgmt.v1alpha1.JobService.GetJobRunLogs:input_type -> mgmt.v1alpha1.GetJobRunLogsRequest - 124, // 220: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:input_type -> mgmt.v1alpha1.SetJobWorkflowOptionsRequest - 126, // 221: mgmt.v1alpha1.JobService.SetJobSyncOptions:input_type -> mgmt.v1alpha1.SetJobSyncOptionsRequest - 128, // 222: mgmt.v1alpha1.JobService.ValidateJobMappings:input_type -> mgmt.v1alpha1.ValidateJobMappingsRequest - 134, // 223: mgmt.v1alpha1.JobService.ValidateSchema:input_type -> mgmt.v1alpha1.ValidateSchemaRequest - 139, // 224: mgmt.v1alpha1.JobService.GetRunContext:input_type -> mgmt.v1alpha1.GetRunContextRequest - 141, // 225: mgmt.v1alpha1.JobService.SetRunContext:input_type -> mgmt.v1alpha1.SetRunContextRequest - 143, // 226: mgmt.v1alpha1.JobService.SetRunContexts:input_type -> mgmt.v1alpha1.SetRunContextsRequest - 150, // 227: mgmt.v1alpha1.JobService.GetJobHooks:input_type -> mgmt.v1alpha1.GetJobHooksRequest - 152, // 228: mgmt.v1alpha1.JobService.GetJobHook:input_type -> mgmt.v1alpha1.GetJobHookRequest - 154, // 229: mgmt.v1alpha1.JobService.CreateJobHook:input_type -> mgmt.v1alpha1.CreateJobHookRequest - 156, // 230: mgmt.v1alpha1.JobService.DeleteJobHook:input_type -> mgmt.v1alpha1.DeleteJobHookRequest - 158, // 231: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:input_type -> mgmt.v1alpha1.IsJobHookNameAvailableRequest - 160, // 232: mgmt.v1alpha1.JobService.UpdateJobHook:input_type -> mgmt.v1alpha1.UpdateJobHookRequest - 162, // 233: mgmt.v1alpha1.JobService.SetJobHookEnabled:input_type -> mgmt.v1alpha1.SetJobHookEnabledRequest - 164, // 234: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:input_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest - 166, // 235: mgmt.v1alpha1.JobService.GetPiiDetectionReport:input_type -> mgmt.v1alpha1.GetPiiDetectionReportRequest - 12, // 236: mgmt.v1alpha1.JobService.GetJobs:output_type -> mgmt.v1alpha1.GetJobsResponse - 62, // 237: mgmt.v1alpha1.JobService.GetJob:output_type -> mgmt.v1alpha1.GetJobResponse - 58, // 238: mgmt.v1alpha1.JobService.CreateJob:output_type -> mgmt.v1alpha1.CreateJobResponse - 83, // 239: mgmt.v1alpha1.JobService.DeleteJob:output_type -> mgmt.v1alpha1.DeleteJobResponse - 85, // 240: mgmt.v1alpha1.JobService.IsJobNameAvailable:output_type -> mgmt.v1alpha1.IsJobNameAvailableResponse - 64, // 241: mgmt.v1alpha1.JobService.UpdateJobSchedule:output_type -> mgmt.v1alpha1.UpdateJobScheduleResponse - 68, // 242: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:output_type -> mgmt.v1alpha1.UpdateJobSourceConnectionResponse - 75, // 243: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:output_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse - 77, // 244: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:output_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionResponse - 79, // 245: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:output_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionResponse - 81, // 246: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:output_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsResponse - 66, // 247: mgmt.v1alpha1.JobService.PauseJob:output_type -> mgmt.v1alpha1.PauseJobResponse - 97, // 248: mgmt.v1alpha1.JobService.GetJobRecentRuns:output_type -> mgmt.v1alpha1.GetJobRecentRunsResponse - 100, // 249: mgmt.v1alpha1.JobService.GetJobNextRuns:output_type -> mgmt.v1alpha1.GetJobNextRunsResponse - 102, // 250: mgmt.v1alpha1.JobService.GetJobStatus:output_type -> mgmt.v1alpha1.GetJobStatusResponse - 105, // 251: mgmt.v1alpha1.JobService.GetJobStatuses:output_type -> mgmt.v1alpha1.GetJobStatusesResponse - 87, // 252: mgmt.v1alpha1.JobService.GetJobRuns:output_type -> mgmt.v1alpha1.GetJobRunsResponse - 115, // 253: mgmt.v1alpha1.JobService.GetJobRunEvents:output_type -> mgmt.v1alpha1.GetJobRunEventsResponse - 89, // 254: mgmt.v1alpha1.JobService.GetJobRun:output_type -> mgmt.v1alpha1.GetJobRunResponse - 117, // 255: mgmt.v1alpha1.JobService.DeleteJobRun:output_type -> mgmt.v1alpha1.DeleteJobRunResponse - 91, // 256: mgmt.v1alpha1.JobService.CreateJobRun:output_type -> mgmt.v1alpha1.CreateJobRunResponse - 93, // 257: mgmt.v1alpha1.JobService.CancelJobRun:output_type -> mgmt.v1alpha1.CancelJobRunResponse - 119, // 258: mgmt.v1alpha1.JobService.TerminateJobRun:output_type -> mgmt.v1alpha1.TerminateJobRunResponse - 121, // 259: mgmt.v1alpha1.JobService.GetJobRunLogsStream:output_type -> mgmt.v1alpha1.GetJobRunLogsStreamResponse - 123, // 260: mgmt.v1alpha1.JobService.GetJobRunLogs:output_type -> mgmt.v1alpha1.GetJobRunLogsResponse - 125, // 261: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:output_type -> mgmt.v1alpha1.SetJobWorkflowOptionsResponse - 127, // 262: mgmt.v1alpha1.JobService.SetJobSyncOptions:output_type -> mgmt.v1alpha1.SetJobSyncOptionsResponse - 133, // 263: mgmt.v1alpha1.JobService.ValidateJobMappings:output_type -> mgmt.v1alpha1.ValidateJobMappingsResponse - 135, // 264: mgmt.v1alpha1.JobService.ValidateSchema:output_type -> mgmt.v1alpha1.ValidateSchemaResponse - 140, // 265: mgmt.v1alpha1.JobService.GetRunContext:output_type -> mgmt.v1alpha1.GetRunContextResponse - 142, // 266: mgmt.v1alpha1.JobService.SetRunContext:output_type -> mgmt.v1alpha1.SetRunContextResponse - 144, // 267: mgmt.v1alpha1.JobService.SetRunContexts:output_type -> mgmt.v1alpha1.SetRunContextsResponse - 151, // 268: mgmt.v1alpha1.JobService.GetJobHooks:output_type -> mgmt.v1alpha1.GetJobHooksResponse - 153, // 269: mgmt.v1alpha1.JobService.GetJobHook:output_type -> mgmt.v1alpha1.GetJobHookResponse - 155, // 270: mgmt.v1alpha1.JobService.CreateJobHook:output_type -> mgmt.v1alpha1.CreateJobHookResponse - 157, // 271: mgmt.v1alpha1.JobService.DeleteJobHook:output_type -> mgmt.v1alpha1.DeleteJobHookResponse - 159, // 272: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:output_type -> mgmt.v1alpha1.IsJobHookNameAvailableResponse - 161, // 273: mgmt.v1alpha1.JobService.UpdateJobHook:output_type -> mgmt.v1alpha1.UpdateJobHookResponse - 163, // 274: mgmt.v1alpha1.JobService.SetJobHookEnabled:output_type -> mgmt.v1alpha1.SetJobHookEnabledResponse - 165, // 275: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:output_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingResponse - 167, // 276: mgmt.v1alpha1.JobService.GetPiiDetectionReport:output_type -> mgmt.v1alpha1.GetPiiDetectionReportResponse - 236, // [236:277] is the sub-list for method output_type - 195, // [195:236] is the sub-list for method input_type - 195, // [195:195] is the sub-list for extension type_name - 195, // [195:195] is the sub-list for extension extendee - 0, // [0:195] is the sub-list for field type_name + 176, // 28: mgmt.v1alpha1.MysqlSourceConnectionOptions.new_column_addition_strategy:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy + 32, // 29: mgmt.v1alpha1.MysqlSourceSchemaOption.tables:type_name -> mgmt.v1alpha1.MysqlSourceTableOption + 34, // 30: mgmt.v1alpha1.MssqlSourceConnectionOptions.schemas:type_name -> mgmt.v1alpha1.MssqlSourceSchemaOption + 181, // 31: mgmt.v1alpha1.MssqlSourceConnectionOptions.column_removal_strategy:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy + 35, // 32: mgmt.v1alpha1.MssqlSourceSchemaOption.tables:type_name -> mgmt.v1alpha1.MssqlSourceTableOption + 42, // 33: mgmt.v1alpha1.JobDestinationOptions.postgres_options:type_name -> mgmt.v1alpha1.PostgresDestinationConnectionOptions + 51, // 34: mgmt.v1alpha1.JobDestinationOptions.aws_s3_options:type_name -> mgmt.v1alpha1.AwsS3DestinationConnectionOptions + 45, // 35: mgmt.v1alpha1.JobDestinationOptions.mysql_options:type_name -> mgmt.v1alpha1.MysqlDestinationConnectionOptions + 38, // 36: mgmt.v1alpha1.JobDestinationOptions.mongodb_options:type_name -> mgmt.v1alpha1.MongoDBDestinationConnectionOptions + 39, // 37: mgmt.v1alpha1.JobDestinationOptions.gcp_cloudstorage_options:type_name -> mgmt.v1alpha1.GcpCloudStorageDestinationConnectionOptions + 40, // 38: mgmt.v1alpha1.JobDestinationOptions.dynamodb_options:type_name -> mgmt.v1alpha1.DynamoDBDestinationConnectionOptions + 48, // 39: mgmt.v1alpha1.JobDestinationOptions.mssql_options:type_name -> mgmt.v1alpha1.MssqlDestinationConnectionOptions + 41, // 40: mgmt.v1alpha1.DynamoDBDestinationConnectionOptions.table_mappings:type_name -> mgmt.v1alpha1.DynamoDBDestinationTableMapping + 44, // 41: mgmt.v1alpha1.PostgresDestinationConnectionOptions.truncate_table:type_name -> mgmt.v1alpha1.PostgresTruncateTableConfig + 43, // 42: mgmt.v1alpha1.PostgresDestinationConnectionOptions.on_conflict:type_name -> mgmt.v1alpha1.PostgresOnConflictConfig + 52, // 43: mgmt.v1alpha1.PostgresDestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig + 184, // 44: mgmt.v1alpha1.PostgresOnConflictConfig.nothing:type_name -> mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictDoNothing + 185, // 45: mgmt.v1alpha1.PostgresOnConflictConfig.update:type_name -> mgmt.v1alpha1.PostgresOnConflictConfig.PostgresOnConflictUpdate + 46, // 46: mgmt.v1alpha1.MysqlDestinationConnectionOptions.truncate_table:type_name -> mgmt.v1alpha1.MysqlTruncateTableConfig + 47, // 47: mgmt.v1alpha1.MysqlDestinationConnectionOptions.on_conflict:type_name -> mgmt.v1alpha1.MysqlOnConflictConfig + 52, // 48: mgmt.v1alpha1.MysqlDestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig + 186, // 49: mgmt.v1alpha1.MysqlOnConflictConfig.nothing:type_name -> mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictDoNothing + 187, // 50: mgmt.v1alpha1.MysqlOnConflictConfig.update:type_name -> mgmt.v1alpha1.MysqlOnConflictConfig.MysqlOnConflictUpdate + 49, // 51: mgmt.v1alpha1.MssqlDestinationConnectionOptions.truncate_table:type_name -> mgmt.v1alpha1.MssqlTruncateTableConfig + 50, // 52: mgmt.v1alpha1.MssqlDestinationConnectionOptions.on_conflict:type_name -> mgmt.v1alpha1.MssqlOnConflictConfig + 52, // 53: mgmt.v1alpha1.MssqlDestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig + 5, // 54: mgmt.v1alpha1.AwsS3DestinationConnectionOptions.storage_class:type_name -> mgmt.v1alpha1.AwsS3DestinationConnectionOptions.StorageClass + 52, // 55: mgmt.v1alpha1.AwsS3DestinationConnectionOptions.batch:type_name -> mgmt.v1alpha1.BatchConfig + 60, // 56: mgmt.v1alpha1.CreateJobRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping + 13, // 57: mgmt.v1alpha1.CreateJobRequest.source:type_name -> mgmt.v1alpha1.JobSource + 15, // 58: mgmt.v1alpha1.CreateJobRequest.destinations:type_name -> mgmt.v1alpha1.CreateJobDestination + 55, // 59: mgmt.v1alpha1.CreateJobRequest.workflow_options:type_name -> mgmt.v1alpha1.WorkflowOptions + 56, // 60: mgmt.v1alpha1.CreateJobRequest.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions + 137, // 61: mgmt.v1alpha1.CreateJobRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint + 54, // 62: mgmt.v1alpha1.CreateJobRequest.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig + 188, // 63: mgmt.v1alpha1.JobTypeConfig.sync:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypeSync + 189, // 64: mgmt.v1alpha1.JobTypeConfig.pii_detect:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect + 57, // 65: mgmt.v1alpha1.ActivityOptions.retry_policy:type_name -> mgmt.v1alpha1.RetryPolicy + 94, // 66: mgmt.v1alpha1.CreateJobResponse.job:type_name -> mgmt.v1alpha1.Job + 210, // 67: mgmt.v1alpha1.JobMappingTransformer.config:type_name -> mgmt.v1alpha1.TransformerConfig + 59, // 68: mgmt.v1alpha1.JobMapping.transformer:type_name -> mgmt.v1alpha1.JobMappingTransformer + 94, // 69: mgmt.v1alpha1.GetJobResponse.job:type_name -> mgmt.v1alpha1.Job + 94, // 70: mgmt.v1alpha1.UpdateJobScheduleResponse.job:type_name -> mgmt.v1alpha1.Job + 94, // 71: mgmt.v1alpha1.PauseJobResponse.job:type_name -> mgmt.v1alpha1.Job + 13, // 72: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.source:type_name -> mgmt.v1alpha1.JobSource + 60, // 73: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping + 137, // 74: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint + 54, // 75: mgmt.v1alpha1.UpdateJobSourceConnectionRequest.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig + 94, // 76: mgmt.v1alpha1.UpdateJobSourceConnectionResponse.job:type_name -> mgmt.v1alpha1.Job + 28, // 77: mgmt.v1alpha1.PostgresSourceSchemaSubset.postgres_schemas:type_name -> mgmt.v1alpha1.PostgresSourceSchemaOption + 31, // 78: mgmt.v1alpha1.MysqlSourceSchemaSubset.mysql_schemas:type_name -> mgmt.v1alpha1.MysqlSourceSchemaOption + 26, // 79: mgmt.v1alpha1.DynamoDBSourceSchemaSubset.tables:type_name -> mgmt.v1alpha1.DynamoDBSourceTableOption + 34, // 80: mgmt.v1alpha1.MssqlSourceSchemaSubset.mssql_schemas:type_name -> mgmt.v1alpha1.MssqlSourceSchemaOption + 69, // 81: mgmt.v1alpha1.JobSourceSqlSubetSchemas.postgres_subset:type_name -> mgmt.v1alpha1.PostgresSourceSchemaSubset + 70, // 82: mgmt.v1alpha1.JobSourceSqlSubetSchemas.mysql_subset:type_name -> mgmt.v1alpha1.MysqlSourceSchemaSubset + 71, // 83: mgmt.v1alpha1.JobSourceSqlSubetSchemas.dynamodb_subset:type_name -> mgmt.v1alpha1.DynamoDBSourceSchemaSubset + 72, // 84: mgmt.v1alpha1.JobSourceSqlSubetSchemas.mssql_subset:type_name -> mgmt.v1alpha1.MssqlSourceSchemaSubset + 73, // 85: mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest.schemas:type_name -> mgmt.v1alpha1.JobSourceSqlSubetSchemas + 94, // 86: mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse.job:type_name -> mgmt.v1alpha1.Job + 37, // 87: mgmt.v1alpha1.UpdateJobDestinationConnectionRequest.options:type_name -> mgmt.v1alpha1.JobDestinationOptions + 94, // 88: mgmt.v1alpha1.UpdateJobDestinationConnectionResponse.job:type_name -> mgmt.v1alpha1.Job + 15, // 89: mgmt.v1alpha1.CreateJobDestinationConnectionsRequest.destinations:type_name -> mgmt.v1alpha1.CreateJobDestination + 94, // 90: mgmt.v1alpha1.CreateJobDestinationConnectionsResponse.job:type_name -> mgmt.v1alpha1.Job + 108, // 91: mgmt.v1alpha1.GetJobRunsResponse.job_runs:type_name -> mgmt.v1alpha1.JobRun + 108, // 92: mgmt.v1alpha1.GetJobRunResponse.job_run:type_name -> mgmt.v1alpha1.JobRun + 211, // 93: mgmt.v1alpha1.Job.created_at:type_name -> google.protobuf.Timestamp + 211, // 94: mgmt.v1alpha1.Job.updated_at:type_name -> google.protobuf.Timestamp + 13, // 95: mgmt.v1alpha1.Job.source:type_name -> mgmt.v1alpha1.JobSource + 16, // 96: mgmt.v1alpha1.Job.destinations:type_name -> mgmt.v1alpha1.JobDestination + 60, // 97: mgmt.v1alpha1.Job.mappings:type_name -> mgmt.v1alpha1.JobMapping + 56, // 98: mgmt.v1alpha1.Job.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions + 55, // 99: mgmt.v1alpha1.Job.workflow_options:type_name -> mgmt.v1alpha1.WorkflowOptions + 137, // 100: mgmt.v1alpha1.Job.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint + 54, // 101: mgmt.v1alpha1.Job.job_type:type_name -> mgmt.v1alpha1.JobTypeConfig + 211, // 102: mgmt.v1alpha1.JobRecentRun.start_time:type_name -> google.protobuf.Timestamp + 95, // 103: mgmt.v1alpha1.GetJobRecentRunsResponse.recent_runs:type_name -> mgmt.v1alpha1.JobRecentRun + 211, // 104: mgmt.v1alpha1.JobNextRuns.next_run_times:type_name -> google.protobuf.Timestamp + 98, // 105: mgmt.v1alpha1.GetJobNextRunsResponse.next_runs:type_name -> mgmt.v1alpha1.JobNextRuns + 0, // 106: mgmt.v1alpha1.GetJobStatusResponse.status:type_name -> mgmt.v1alpha1.JobStatus + 0, // 107: mgmt.v1alpha1.JobStatusRecord.status:type_name -> mgmt.v1alpha1.JobStatus + 103, // 108: mgmt.v1alpha1.GetJobStatusesResponse.statuses:type_name -> mgmt.v1alpha1.JobStatusRecord + 1, // 109: mgmt.v1alpha1.PendingActivity.status:type_name -> mgmt.v1alpha1.ActivityStatus + 106, // 110: mgmt.v1alpha1.PendingActivity.last_failure:type_name -> mgmt.v1alpha1.ActivityFailure + 2, // 111: mgmt.v1alpha1.JobRun.status:type_name -> mgmt.v1alpha1.JobRunStatus + 211, // 112: mgmt.v1alpha1.JobRun.started_at:type_name -> google.protobuf.Timestamp + 211, // 113: mgmt.v1alpha1.JobRun.completed_at:type_name -> google.protobuf.Timestamp + 107, // 114: mgmt.v1alpha1.JobRun.pending_activities:type_name -> mgmt.v1alpha1.PendingActivity + 211, // 115: mgmt.v1alpha1.JobRunEventTask.event_time:type_name -> google.protobuf.Timestamp + 109, // 116: mgmt.v1alpha1.JobRunEventTask.error:type_name -> mgmt.v1alpha1.JobRunEventTaskError + 111, // 117: mgmt.v1alpha1.JobRunEventMetadata.sync_metadata:type_name -> mgmt.v1alpha1.JobRunSyncMetadata + 211, // 118: mgmt.v1alpha1.JobRunEvent.start_time:type_name -> google.protobuf.Timestamp + 211, // 119: mgmt.v1alpha1.JobRunEvent.close_time:type_name -> google.protobuf.Timestamp + 112, // 120: mgmt.v1alpha1.JobRunEvent.metadata:type_name -> mgmt.v1alpha1.JobRunEventMetadata + 110, // 121: mgmt.v1alpha1.JobRunEvent.tasks:type_name -> mgmt.v1alpha1.JobRunEventTask + 113, // 122: mgmt.v1alpha1.GetJobRunEventsResponse.events:type_name -> mgmt.v1alpha1.JobRunEvent + 3, // 123: mgmt.v1alpha1.GetJobRunLogsStreamRequest.window:type_name -> mgmt.v1alpha1.LogWindow + 4, // 124: mgmt.v1alpha1.GetJobRunLogsStreamRequest.log_levels:type_name -> mgmt.v1alpha1.LogLevel + 211, // 125: mgmt.v1alpha1.GetJobRunLogsStreamResponse.timestamp:type_name -> google.protobuf.Timestamp + 196, // 126: mgmt.v1alpha1.GetJobRunLogsStreamResponse.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsStreamResponse.LabelsEntry + 3, // 127: mgmt.v1alpha1.GetJobRunLogsRequest.window:type_name -> mgmt.v1alpha1.LogWindow + 4, // 128: mgmt.v1alpha1.GetJobRunLogsRequest.log_levels:type_name -> mgmt.v1alpha1.LogLevel + 197, // 129: mgmt.v1alpha1.GetJobRunLogsResponse.log_lines:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine + 55, // 130: mgmt.v1alpha1.SetJobWorkflowOptionsRequest.worfklow_options:type_name -> mgmt.v1alpha1.WorkflowOptions + 94, // 131: mgmt.v1alpha1.SetJobWorkflowOptionsResponse.job:type_name -> mgmt.v1alpha1.Job + 56, // 132: mgmt.v1alpha1.SetJobSyncOptionsRequest.sync_options:type_name -> mgmt.v1alpha1.ActivityOptions + 94, // 133: mgmt.v1alpha1.SetJobSyncOptionsResponse.job:type_name -> mgmt.v1alpha1.Job + 60, // 134: mgmt.v1alpha1.ValidateJobMappingsRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping + 137, // 135: mgmt.v1alpha1.ValidateJobMappingsRequest.virtual_foreign_keys:type_name -> mgmt.v1alpha1.VirtualForeignConstraint + 13, // 136: mgmt.v1alpha1.ValidateJobMappingsRequest.job_source:type_name -> mgmt.v1alpha1.JobSource + 199, // 137: mgmt.v1alpha1.ColumnError.error_reports:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorReport + 200, // 138: mgmt.v1alpha1.ColumnWarning.warning_reports:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningReport + 201, // 139: mgmt.v1alpha1.DatabaseError.error_reports:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorReport + 202, // 140: mgmt.v1alpha1.TableError.error_reports:type_name -> mgmt.v1alpha1.TableError.TableErrorReport + 129, // 141: mgmt.v1alpha1.ValidateJobMappingsResponse.column_errors:type_name -> mgmt.v1alpha1.ColumnError + 131, // 142: mgmt.v1alpha1.ValidateJobMappingsResponse.database_errors:type_name -> mgmt.v1alpha1.DatabaseError + 130, // 143: mgmt.v1alpha1.ValidateJobMappingsResponse.column_warnings:type_name -> mgmt.v1alpha1.ColumnWarning + 132, // 144: mgmt.v1alpha1.ValidateJobMappingsResponse.table_errors:type_name -> mgmt.v1alpha1.TableError + 60, // 145: mgmt.v1alpha1.ValidateSchemaRequest.mappings:type_name -> mgmt.v1alpha1.JobMapping + 212, // 146: mgmt.v1alpha1.ValidateSchemaResponse.missing_columns:type_name -> mgmt.v1alpha1.DatabaseColumn + 212, // 147: mgmt.v1alpha1.ValidateSchemaResponse.extra_columns:type_name -> mgmt.v1alpha1.DatabaseColumn + 203, // 148: mgmt.v1alpha1.ValidateSchemaResponse.missing_tables:type_name -> mgmt.v1alpha1.ValidateSchemaResponse.Table + 136, // 149: mgmt.v1alpha1.VirtualForeignConstraint.foreign_key:type_name -> mgmt.v1alpha1.VirtualForeignKey + 138, // 150: mgmt.v1alpha1.GetRunContextRequest.id:type_name -> mgmt.v1alpha1.RunContextKey + 138, // 151: mgmt.v1alpha1.SetRunContextRequest.id:type_name -> mgmt.v1alpha1.RunContextKey + 138, // 152: mgmt.v1alpha1.SetRunContextsRequest.id:type_name -> mgmt.v1alpha1.RunContextKey + 147, // 153: mgmt.v1alpha1.JobHook.config:type_name -> mgmt.v1alpha1.JobHookConfig + 211, // 154: mgmt.v1alpha1.JobHook.created_at:type_name -> google.protobuf.Timestamp + 211, // 155: mgmt.v1alpha1.JobHook.updated_at:type_name -> google.protobuf.Timestamp + 147, // 156: mgmt.v1alpha1.NewJobHook.config:type_name -> mgmt.v1alpha1.JobHookConfig + 204, // 157: mgmt.v1alpha1.JobHookConfig.sql:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook + 145, // 158: mgmt.v1alpha1.GetJobHooksResponse.hooks:type_name -> mgmt.v1alpha1.JobHook + 145, // 159: mgmt.v1alpha1.GetJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook + 146, // 160: mgmt.v1alpha1.CreateJobHookRequest.hook:type_name -> mgmt.v1alpha1.NewJobHook + 145, // 161: mgmt.v1alpha1.CreateJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook + 147, // 162: mgmt.v1alpha1.UpdateJobHookRequest.config:type_name -> mgmt.v1alpha1.JobHookConfig + 145, // 163: mgmt.v1alpha1.UpdateJobHookResponse.hook:type_name -> mgmt.v1alpha1.JobHook + 145, // 164: mgmt.v1alpha1.SetJobHookEnabledResponse.hook:type_name -> mgmt.v1alpha1.JobHook + 10, // 165: mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.timing:type_name -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest.Timing + 145, // 166: mgmt.v1alpha1.GetActiveJobHooksByTimingResponse.hooks:type_name -> mgmt.v1alpha1.JobHook + 168, // 167: mgmt.v1alpha1.GetPiiDetectionReportResponse.report:type_name -> mgmt.v1alpha1.PiiDetectionReport + 206, // 168: mgmt.v1alpha1.PiiDetectionReport.tables:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport + 171, // 169: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.halt_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob + 172, // 170: mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.auto_map:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap + 173, // 171: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.halt_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.HaltJob + 174, // 172: mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.PostgresSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob + 177, // 173: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.halt_job:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob + 178, // 174: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob + 179, // 175: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.halt_job:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob + 180, // 176: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.auto_map:type_name -> mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap + 182, // 177: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.halt_job:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob + 183, // 178: mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.continue_job:type_name -> mgmt.v1alpha1.MssqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob + 191, // 179: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.data_sampling:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.DataSampling + 192, // 180: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.table_scan_filter:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter + 190, // 181: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.incremental:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.Incremental + 193, // 182: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include_all:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.IncludeAll + 194, // 183: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.include:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns + 194, // 184: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableScanFilter.exclude:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns + 195, // 185: mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TablePatterns.tables:type_name -> mgmt.v1alpha1.JobTypeConfig.JobTypePiiDetect.TableIdentifier + 211, // 186: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.timestamp:type_name -> google.protobuf.Timestamp + 198, // 187: mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.labels:type_name -> mgmt.v1alpha1.GetJobRunLogsResponse.LogLine.LabelsEntry + 6, // 188: mgmt.v1alpha1.ColumnError.ColumnErrorReport.code:type_name -> mgmt.v1alpha1.ColumnError.ColumnErrorCode + 7, // 189: mgmt.v1alpha1.ColumnWarning.ColumnWarningReport.code:type_name -> mgmt.v1alpha1.ColumnWarning.ColumnWarningCode + 8, // 190: mgmt.v1alpha1.DatabaseError.DatabaseErrorReport.code:type_name -> mgmt.v1alpha1.DatabaseError.DatabaseErrorCode + 9, // 191: mgmt.v1alpha1.TableError.TableErrorReport.code:type_name -> mgmt.v1alpha1.TableError.TableErrorCode + 205, // 192: mgmt.v1alpha1.JobHookConfig.JobSqlHook.timing:type_name -> mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing + 148, // 193: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.pre_sync:type_name -> mgmt.v1alpha1.JobHookTimingPreSync + 149, // 194: mgmt.v1alpha1.JobHookConfig.JobSqlHook.Timing.post_sync:type_name -> mgmt.v1alpha1.JobHookTimingPostSync + 207, // 195: mgmt.v1alpha1.PiiDetectionReport.TableReport.columns:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport + 208, // 196: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.regex_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.Regex + 209, // 197: mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.llm_report:type_name -> mgmt.v1alpha1.PiiDetectionReport.TableReport.ColumnReport.LLM + 11, // 198: mgmt.v1alpha1.JobService.GetJobs:input_type -> mgmt.v1alpha1.GetJobsRequest + 61, // 199: mgmt.v1alpha1.JobService.GetJob:input_type -> mgmt.v1alpha1.GetJobRequest + 53, // 200: mgmt.v1alpha1.JobService.CreateJob:input_type -> mgmt.v1alpha1.CreateJobRequest + 82, // 201: mgmt.v1alpha1.JobService.DeleteJob:input_type -> mgmt.v1alpha1.DeleteJobRequest + 84, // 202: mgmt.v1alpha1.JobService.IsJobNameAvailable:input_type -> mgmt.v1alpha1.IsJobNameAvailableRequest + 63, // 203: mgmt.v1alpha1.JobService.UpdateJobSchedule:input_type -> mgmt.v1alpha1.UpdateJobScheduleRequest + 67, // 204: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:input_type -> mgmt.v1alpha1.UpdateJobSourceConnectionRequest + 74, // 205: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:input_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsRequest + 76, // 206: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:input_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionRequest + 78, // 207: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:input_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionRequest + 80, // 208: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:input_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsRequest + 65, // 209: mgmt.v1alpha1.JobService.PauseJob:input_type -> mgmt.v1alpha1.PauseJobRequest + 96, // 210: mgmt.v1alpha1.JobService.GetJobRecentRuns:input_type -> mgmt.v1alpha1.GetJobRecentRunsRequest + 99, // 211: mgmt.v1alpha1.JobService.GetJobNextRuns:input_type -> mgmt.v1alpha1.GetJobNextRunsRequest + 101, // 212: mgmt.v1alpha1.JobService.GetJobStatus:input_type -> mgmt.v1alpha1.GetJobStatusRequest + 104, // 213: mgmt.v1alpha1.JobService.GetJobStatuses:input_type -> mgmt.v1alpha1.GetJobStatusesRequest + 86, // 214: mgmt.v1alpha1.JobService.GetJobRuns:input_type -> mgmt.v1alpha1.GetJobRunsRequest + 114, // 215: mgmt.v1alpha1.JobService.GetJobRunEvents:input_type -> mgmt.v1alpha1.GetJobRunEventsRequest + 88, // 216: mgmt.v1alpha1.JobService.GetJobRun:input_type -> mgmt.v1alpha1.GetJobRunRequest + 116, // 217: mgmt.v1alpha1.JobService.DeleteJobRun:input_type -> mgmt.v1alpha1.DeleteJobRunRequest + 90, // 218: mgmt.v1alpha1.JobService.CreateJobRun:input_type -> mgmt.v1alpha1.CreateJobRunRequest + 92, // 219: mgmt.v1alpha1.JobService.CancelJobRun:input_type -> mgmt.v1alpha1.CancelJobRunRequest + 118, // 220: mgmt.v1alpha1.JobService.TerminateJobRun:input_type -> mgmt.v1alpha1.TerminateJobRunRequest + 120, // 221: mgmt.v1alpha1.JobService.GetJobRunLogsStream:input_type -> mgmt.v1alpha1.GetJobRunLogsStreamRequest + 122, // 222: mgmt.v1alpha1.JobService.GetJobRunLogs:input_type -> mgmt.v1alpha1.GetJobRunLogsRequest + 124, // 223: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:input_type -> mgmt.v1alpha1.SetJobWorkflowOptionsRequest + 126, // 224: mgmt.v1alpha1.JobService.SetJobSyncOptions:input_type -> mgmt.v1alpha1.SetJobSyncOptionsRequest + 128, // 225: mgmt.v1alpha1.JobService.ValidateJobMappings:input_type -> mgmt.v1alpha1.ValidateJobMappingsRequest + 134, // 226: mgmt.v1alpha1.JobService.ValidateSchema:input_type -> mgmt.v1alpha1.ValidateSchemaRequest + 139, // 227: mgmt.v1alpha1.JobService.GetRunContext:input_type -> mgmt.v1alpha1.GetRunContextRequest + 141, // 228: mgmt.v1alpha1.JobService.SetRunContext:input_type -> mgmt.v1alpha1.SetRunContextRequest + 143, // 229: mgmt.v1alpha1.JobService.SetRunContexts:input_type -> mgmt.v1alpha1.SetRunContextsRequest + 150, // 230: mgmt.v1alpha1.JobService.GetJobHooks:input_type -> mgmt.v1alpha1.GetJobHooksRequest + 152, // 231: mgmt.v1alpha1.JobService.GetJobHook:input_type -> mgmt.v1alpha1.GetJobHookRequest + 154, // 232: mgmt.v1alpha1.JobService.CreateJobHook:input_type -> mgmt.v1alpha1.CreateJobHookRequest + 156, // 233: mgmt.v1alpha1.JobService.DeleteJobHook:input_type -> mgmt.v1alpha1.DeleteJobHookRequest + 158, // 234: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:input_type -> mgmt.v1alpha1.IsJobHookNameAvailableRequest + 160, // 235: mgmt.v1alpha1.JobService.UpdateJobHook:input_type -> mgmt.v1alpha1.UpdateJobHookRequest + 162, // 236: mgmt.v1alpha1.JobService.SetJobHookEnabled:input_type -> mgmt.v1alpha1.SetJobHookEnabledRequest + 164, // 237: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:input_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingRequest + 166, // 238: mgmt.v1alpha1.JobService.GetPiiDetectionReport:input_type -> mgmt.v1alpha1.GetPiiDetectionReportRequest + 12, // 239: mgmt.v1alpha1.JobService.GetJobs:output_type -> mgmt.v1alpha1.GetJobsResponse + 62, // 240: mgmt.v1alpha1.JobService.GetJob:output_type -> mgmt.v1alpha1.GetJobResponse + 58, // 241: mgmt.v1alpha1.JobService.CreateJob:output_type -> mgmt.v1alpha1.CreateJobResponse + 83, // 242: mgmt.v1alpha1.JobService.DeleteJob:output_type -> mgmt.v1alpha1.DeleteJobResponse + 85, // 243: mgmt.v1alpha1.JobService.IsJobNameAvailable:output_type -> mgmt.v1alpha1.IsJobNameAvailableResponse + 64, // 244: mgmt.v1alpha1.JobService.UpdateJobSchedule:output_type -> mgmt.v1alpha1.UpdateJobScheduleResponse + 68, // 245: mgmt.v1alpha1.JobService.UpdateJobSourceConnection:output_type -> mgmt.v1alpha1.UpdateJobSourceConnectionResponse + 75, // 246: mgmt.v1alpha1.JobService.SetJobSourceSqlConnectionSubsets:output_type -> mgmt.v1alpha1.SetJobSourceSqlConnectionSubsetsResponse + 77, // 247: mgmt.v1alpha1.JobService.UpdateJobDestinationConnection:output_type -> mgmt.v1alpha1.UpdateJobDestinationConnectionResponse + 79, // 248: mgmt.v1alpha1.JobService.DeleteJobDestinationConnection:output_type -> mgmt.v1alpha1.DeleteJobDestinationConnectionResponse + 81, // 249: mgmt.v1alpha1.JobService.CreateJobDestinationConnections:output_type -> mgmt.v1alpha1.CreateJobDestinationConnectionsResponse + 66, // 250: mgmt.v1alpha1.JobService.PauseJob:output_type -> mgmt.v1alpha1.PauseJobResponse + 97, // 251: mgmt.v1alpha1.JobService.GetJobRecentRuns:output_type -> mgmt.v1alpha1.GetJobRecentRunsResponse + 100, // 252: mgmt.v1alpha1.JobService.GetJobNextRuns:output_type -> mgmt.v1alpha1.GetJobNextRunsResponse + 102, // 253: mgmt.v1alpha1.JobService.GetJobStatus:output_type -> mgmt.v1alpha1.GetJobStatusResponse + 105, // 254: mgmt.v1alpha1.JobService.GetJobStatuses:output_type -> mgmt.v1alpha1.GetJobStatusesResponse + 87, // 255: mgmt.v1alpha1.JobService.GetJobRuns:output_type -> mgmt.v1alpha1.GetJobRunsResponse + 115, // 256: mgmt.v1alpha1.JobService.GetJobRunEvents:output_type -> mgmt.v1alpha1.GetJobRunEventsResponse + 89, // 257: mgmt.v1alpha1.JobService.GetJobRun:output_type -> mgmt.v1alpha1.GetJobRunResponse + 117, // 258: mgmt.v1alpha1.JobService.DeleteJobRun:output_type -> mgmt.v1alpha1.DeleteJobRunResponse + 91, // 259: mgmt.v1alpha1.JobService.CreateJobRun:output_type -> mgmt.v1alpha1.CreateJobRunResponse + 93, // 260: mgmt.v1alpha1.JobService.CancelJobRun:output_type -> mgmt.v1alpha1.CancelJobRunResponse + 119, // 261: mgmt.v1alpha1.JobService.TerminateJobRun:output_type -> mgmt.v1alpha1.TerminateJobRunResponse + 121, // 262: mgmt.v1alpha1.JobService.GetJobRunLogsStream:output_type -> mgmt.v1alpha1.GetJobRunLogsStreamResponse + 123, // 263: mgmt.v1alpha1.JobService.GetJobRunLogs:output_type -> mgmt.v1alpha1.GetJobRunLogsResponse + 125, // 264: mgmt.v1alpha1.JobService.SetJobWorkflowOptions:output_type -> mgmt.v1alpha1.SetJobWorkflowOptionsResponse + 127, // 265: mgmt.v1alpha1.JobService.SetJobSyncOptions:output_type -> mgmt.v1alpha1.SetJobSyncOptionsResponse + 133, // 266: mgmt.v1alpha1.JobService.ValidateJobMappings:output_type -> mgmt.v1alpha1.ValidateJobMappingsResponse + 135, // 267: mgmt.v1alpha1.JobService.ValidateSchema:output_type -> mgmt.v1alpha1.ValidateSchemaResponse + 140, // 268: mgmt.v1alpha1.JobService.GetRunContext:output_type -> mgmt.v1alpha1.GetRunContextResponse + 142, // 269: mgmt.v1alpha1.JobService.SetRunContext:output_type -> mgmt.v1alpha1.SetRunContextResponse + 144, // 270: mgmt.v1alpha1.JobService.SetRunContexts:output_type -> mgmt.v1alpha1.SetRunContextsResponse + 151, // 271: mgmt.v1alpha1.JobService.GetJobHooks:output_type -> mgmt.v1alpha1.GetJobHooksResponse + 153, // 272: mgmt.v1alpha1.JobService.GetJobHook:output_type -> mgmt.v1alpha1.GetJobHookResponse + 155, // 273: mgmt.v1alpha1.JobService.CreateJobHook:output_type -> mgmt.v1alpha1.CreateJobHookResponse + 157, // 274: mgmt.v1alpha1.JobService.DeleteJobHook:output_type -> mgmt.v1alpha1.DeleteJobHookResponse + 159, // 275: mgmt.v1alpha1.JobService.IsJobHookNameAvailable:output_type -> mgmt.v1alpha1.IsJobHookNameAvailableResponse + 161, // 276: mgmt.v1alpha1.JobService.UpdateJobHook:output_type -> mgmt.v1alpha1.UpdateJobHookResponse + 163, // 277: mgmt.v1alpha1.JobService.SetJobHookEnabled:output_type -> mgmt.v1alpha1.SetJobHookEnabledResponse + 165, // 278: mgmt.v1alpha1.JobService.GetActiveJobHooksByTiming:output_type -> mgmt.v1alpha1.GetActiveJobHooksByTimingResponse + 167, // 279: mgmt.v1alpha1.JobService.GetPiiDetectionReport:output_type -> mgmt.v1alpha1.GetPiiDetectionReportResponse + 239, // [239:280] is the sub-list for method output_type + 198, // [198:239] is the sub-list for method input_type + 198, // [198:198] is the sub-list for extension type_name + 198, // [198:198] is the sub-list for extension extendee + 0, // [0:198] is the sub-list for field type_name } func init() { file_mgmt_v1alpha1_job_proto_init() } @@ -14869,29 +15073,33 @@ func file_mgmt_v1alpha1_job_proto_init() { (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob_)(nil), (*MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob_)(nil), } - file_mgmt_v1alpha1_job_proto_msgTypes[167].OneofWrappers = []any{ + file_mgmt_v1alpha1_job_proto_msgTypes[165].OneofWrappers = []any{ + (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_)(nil), + (*MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_)(nil), + } + file_mgmt_v1alpha1_job_proto_msgTypes[170].OneofWrappers = []any{ (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_HaltJob_)(nil), (*MssqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob_)(nil), } - file_mgmt_v1alpha1_job_proto_msgTypes[175].OneofWrappers = []any{} - file_mgmt_v1alpha1_job_proto_msgTypes[178].OneofWrappers = []any{ + file_mgmt_v1alpha1_job_proto_msgTypes[178].OneofWrappers = []any{} + file_mgmt_v1alpha1_job_proto_msgTypes[181].OneofWrappers = []any{ (*JobTypeConfig_JobTypePiiDetect_TableScanFilter_IncludeAll)(nil), (*JobTypeConfig_JobTypePiiDetect_TableScanFilter_Include)(nil), (*JobTypeConfig_JobTypePiiDetect_TableScanFilter_Exclude)(nil), } - file_mgmt_v1alpha1_job_proto_msgTypes[183].OneofWrappers = []any{} - file_mgmt_v1alpha1_job_proto_msgTypes[191].OneofWrappers = []any{ + file_mgmt_v1alpha1_job_proto_msgTypes[186].OneofWrappers = []any{} + file_mgmt_v1alpha1_job_proto_msgTypes[194].OneofWrappers = []any{ (*JobHookConfig_JobSqlHook_Timing_PreSync)(nil), (*JobHookConfig_JobSqlHook_Timing_PostSync)(nil), } - file_mgmt_v1alpha1_job_proto_msgTypes[193].OneofWrappers = []any{} + file_mgmt_v1alpha1_job_proto_msgTypes[196].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: 196, + NumMessages: 199, 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 30b1c31293..c89b341949 100644 --- a/backend/gen/go/protos/mgmt/v1alpha1/job.pb.json.go +++ b/backend/gen/go/protos/mgmt/v1alpha1/job.pb.json.go @@ -297,6 +297,36 @@ func (msg *MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob) Unmar return protojson.UnmarshalOptions{}.Unmarshal(b, msg) } +// MarshalJSON implements json.Marshaler +func (msg *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{}.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *MysqlSourceConnectionOptions_NewColumnAdditionStrategy) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{}.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{}.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + // MarshalJSON implements json.Marshaler func (msg *MysqlSourceSchemaOption) MarshalJSON() ([]byte, error) { return protojson.MarshalOptions{}.Marshal(msg) diff --git a/backend/pkg/dbschemas/sql/mysql/queries/system.sql b/backend/pkg/dbschemas/sql/mysql/queries/system.sql index 74d49ca6b6..3e0bf7d002 100644 --- a/backend/pkg/dbschemas/sql/mysql/queries/system.sql +++ b/backend/pkg/dbschemas/sql/mysql/queries/system.sql @@ -7,6 +7,7 @@ SELECT IFNULL(REPLACE(REPLACE(REPLACE(REPLACE(c.COLUMN_DEFAULT, '_utf8mb4\\\'', '_utf8mb4\''), '_utf8mb3\\\'', '_utf8mb3\''), '\\\'', '\''), '\\\'', '\''), '') AS column_default, -- hack to fix this bug https://bugs.mysql.com/bug.php? c.is_nullable, c.data_type, + c.column_type, -- same as data_type but includes things like the length, or set/enum information c.character_maximum_length, c.numeric_precision, c.numeric_scale, @@ -214,6 +215,7 @@ SELECT c.TABLE_NAME AS table_name, c.COLUMN_NAME AS column_name, c.COLUMN_TYPE AS data_type, + c.COLUMN_TYPE AS column_type, -- same as data_type but includes things like the length, or set/enum information IFNULL(REPLACE(REPLACE(REPLACE(REPLACE(c.COLUMN_DEFAULT, '_utf8mb4\\\'', '_utf8mb4\''), '_utf8mb3\\\'', '_utf8mb3\''), '\\\'', '\''), '\\\'', '\''), '') AS column_default, -- hack to fix this bug https://bugs.mysql.com/bug.php? CASE WHEN c.IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS is_nullable, CAST(IF(c.DATA_TYPE IN ('varchar', 'char'), c.CHARACTER_MAXIMUM_LENGTH, -1) AS SIGNED) AS character_maximum_length, diff --git a/backend/pkg/sqlmanager/mysql/mysql-manager.go b/backend/pkg/sqlmanager/mysql/mysql-manager.go index 45d4e91d2f..782871ae5f 100644 --- a/backend/pkg/sqlmanager/mysql/mysql-manager.go +++ b/backend/pkg/sqlmanager/mysql/mysql-manager.go @@ -96,6 +96,7 @@ func (m *MysqlManager) GetDatabaseSchema(ctx context.Context) ([]*sqlmanager_sha TableName: row.TableName, ColumnName: row.ColumnName, DataType: row.DataType, + MysqlColumnType: row.ColumnType, ColumnDefault: columnDefaultStr, ColumnDefaultType: columnDefaultType, IsNullable: row.IsNullable != "NO", @@ -197,6 +198,7 @@ func (m *MysqlManager) GetDatabaseTableSchemasBySchemasAndTables(ctx context.Con TableName: row.TableName, ColumnName: row.ColumnName, DataType: row.DataType, + MysqlColumnType: row.ColumnType, ColumnDefault: columnDefaultStr, ColumnDefaultType: columnDefaultType, IsNullable: row.IsNullable == 1, diff --git a/backend/pkg/sqlmanager/shared/types.go b/backend/pkg/sqlmanager/shared/types.go index 8ddd309943..0fedbc2639 100644 --- a/backend/pkg/sqlmanager/shared/types.go +++ b/backend/pkg/sqlmanager/shared/types.go @@ -13,6 +13,7 @@ type DatabaseSchemaRow struct { TableName string ColumnName string DataType string + MysqlColumnType string // will only be populated for mysql. Same as the DataType but includes length, etc. varchar(255), enum('a', 'b'), etc. ColumnDefault string ColumnDefaultType *string IsNullable bool diff --git a/backend/protos/mgmt/v1alpha1/job.proto b/backend/protos/mgmt/v1alpha1/job.proto index 228152ab46..d6f21b27d9 100644 --- a/backend/protos/mgmt/v1alpha1/job.proto +++ b/backend/protos/mgmt/v1alpha1/job.proto @@ -207,7 +207,8 @@ message PostgresSourceTableOption { message MysqlSourceConnectionOptions { // Whether to halt the job if a new column is added - bool halt_on_new_column_addition = 1; + // Deprecated: Use new_column_addition_strategy instead + bool halt_on_new_column_addition = 1 [deprecated = true]; // The list of schemas (and their tables) along with any configuration options that will be used. repeated MysqlSourceSchemaOption schemas = 2; // The unique connection id to a mysql connection configuration @@ -218,6 +219,9 @@ message MysqlSourceConnectionOptions { // Provide a strategy of what to do in the event Neosync encounters a column that is removed from the source table. ColumnRemovalStrategy column_removal_strategy = 5; + // Provide a strategy of what to do in the event Neosync encounters an unmapped column for the job's mapped tables. + NewColumnAdditionStrategy new_column_addition_strategy = 6; + message ColumnRemovalStrategy { oneof strategy { // halt job if a column is removed @@ -232,6 +236,21 @@ message MysqlSourceConnectionOptions { // Configuration for the ContinueJob strategy message ContinueJob {} } + + message NewColumnAdditionStrategy { + oneof strategy { + // halt job if a new column is detected. + HaltJob halt_job = 1; + // automatically handle unmapped columns. It handles this by using the DBs default/nullable values. + // If this doesn't exist, will fall back to configuring generators for supported datatypes. + // If none of the criteria above can be met, the job run will fail to prevent leaking of PII. + AutoMap auto_map = 2; + } + // Configuration for the HaltJob strategy + message HaltJob {} + // Configuration for the AutoMap strategy + message AutoMap {} + } } message MysqlSourceSchemaOption { diff --git a/backend/sql/postgresql/models/models.go b/backend/sql/postgresql/models/models.go index 51c0bd55e3..00cf0cba3c 100644 --- a/backend/sql/postgresql/models/models.go +++ b/backend/sql/postgresql/models/models.go @@ -1209,13 +1209,23 @@ func (s *MongoDbSourceOptions) FromDto(dto *mgmtv1alpha1.MongoDBSourceConnection } type MysqlSourceOptions struct { - HaltOnNewColumnAddition bool `json:"haltOnNewColumnAddition"` - SubsetByForeignKeyConstraints bool `json:"subsetByForeignKeyConstraints"` - Schemas []*MysqlSourceSchemaOption `json:"schemas"` - ConnectionId string `json:"connectionId"` - ColumnRemovalStrategy *MysqlColumnRemovalStrategy `json:"columnRemovalStrategy,omitempty"` + // @deprecated + HaltOnNewColumnAddition bool `json:"haltOnNewColumnAddition"` + SubsetByForeignKeyConstraints bool `json:"subsetByForeignKeyConstraints"` + Schemas []*MysqlSourceSchemaOption `json:"schemas"` + ConnectionId string `json:"connectionId"` + ColumnRemovalStrategy *MysqlColumnRemovalStrategy `json:"columnRemovalStrategy,omitempty"` + NewColumnAdditionStrategy *MysqlNewColumnAdditionStrategy `json:"newColumnAdditionStrategy,omitempty"` } +type MysqlNewColumnAdditionStrategy struct { + HaltJob *MysqlHaltJobNewColumnAdditionStrategy `json:"haltJob,omitempty"` + AutoMap *MysqlAutoMapNewColumnAdditionStrategy `json:"autoMap,omitempty"` +} + +type MysqlHaltJobNewColumnAdditionStrategy struct{} +type MysqlAutoMapNewColumnAdditionStrategy struct{} + type MysqlColumnRemovalStrategy struct { HaltJob *MysqlHaltJobColumnRemovalStrategy `json:"haltJob,omitempty"` ContinueJob *MysqlContinueJobColumnRemovalStrategy `json:"continueJob,omitempty"` @@ -1466,11 +1476,60 @@ func (s *MysqlSourceOptions) ToDto() *mgmtv1alpha1.MysqlSourceConnectionOptions if s.ColumnRemovalStrategy != nil { dto.ColumnRemovalStrategy = s.ColumnRemovalStrategy.ToDto() } + if s.NewColumnAdditionStrategy != nil { + dto.NewColumnAdditionStrategy = s.NewColumnAdditionStrategy.ToDto() + } else if s.HaltOnNewColumnAddition { + dto.NewColumnAdditionStrategy = &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy{ + Strategy: &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_{ + HaltJob: &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob{}, + }, + } + dto.HaltOnNewColumnAddition = true //nolint:staticcheck + } return dto } + +func (s *MysqlNewColumnAdditionStrategy) ToDto() *mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy { + if s.HaltJob != nil { + return &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy{ + Strategy: &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_{ + HaltJob: &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob{}, + }, + } + } + if s.AutoMap != nil { + return &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy{ + Strategy: &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_{ + AutoMap: &mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap{}, + }, + } + } + return nil +} + +func (s *MysqlNewColumnAdditionStrategy) FromDto(dto *mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy) { + if dto.GetStrategy() != nil { + switch dto.GetStrategy().(type) { + case *mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_: + s.HaltJob = &MysqlHaltJobNewColumnAdditionStrategy{} + case *mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_: + s.AutoMap = &MysqlAutoMapNewColumnAdditionStrategy{} + } + } +} + func (s *MysqlSourceOptions) FromDto(dto *mgmtv1alpha1.MysqlSourceConnectionOptions) { - s.HaltOnNewColumnAddition = dto.HaltOnNewColumnAddition + s.HaltOnNewColumnAddition = dto.HaltOnNewColumnAddition //nolint:staticcheck + if dto.GetNewColumnAdditionStrategy().GetStrategy() != nil { + s.NewColumnAdditionStrategy = &MysqlNewColumnAdditionStrategy{} + s.NewColumnAdditionStrategy.FromDto(dto.GetNewColumnAdditionStrategy()) + } else if dto.HaltOnNewColumnAddition { //nolint:staticcheck + s.NewColumnAdditionStrategy = &MysqlNewColumnAdditionStrategy{ + HaltJob: &MysqlHaltJobNewColumnAdditionStrategy{}, + } + s.HaltOnNewColumnAddition = true + } s.SubsetByForeignKeyConstraints = dto.SubsetByForeignKeyConstraints s.Schemas = FromDtoMysqlSourceSchemaOptions(dto.Schemas) s.ConnectionId = dto.ConnectionId diff --git a/docs/docs/guides/new-column-addition-strategies.md b/docs/docs/guides/new-column-addition-strategies.md index c11734dd2c..2766d7e789 100644 --- a/docs/docs/guides/new-column-addition-strategies.md +++ b/docs/docs/guides/new-column-addition-strategies.md @@ -19,7 +19,7 @@ This is a common occurrence for any company that is adding new columns to a data | Strategy | Description | PostgreSQL | MySQL | MS SQL Server | | -------- | ----------------------------------------------------------------------------------------------- | ---------- | ----- | ------------- | | Halt | Stops the job run if a new column is detected that is not found in the configured job mappings. | ✅ | ✅ | ✅ | -| AutoMap | Automatically generates a fake value. See more below. | ✅ | ❌ | ❌ | +| AutoMap | Automatically generates a fake value. See more below. | ✅ | ✅ | ❌ | | Continue | Ignores new columns; may fail if column doesn't have default. See more below. | ✅ | ✅ | ✅ | ## Halt Strategy @@ -111,3 +111,47 @@ Postgres has many data types and not all of them are currently supported in the | text[] | ❌ | | + +### MySQL + +MySQL has many data types and not all of them are currently supported in the auto map mode. Support will continue to increase over time. + + + +| Data Type | Support | Generator | +| ---------------- | ------- | ------------------- | +| tinyint | ✅ | GenerateInt64 | +| smallint | ✅ | GenerateInt64 | +| mediumint | ✅ | GenerateInt64 | +| integer | ✅ | GenerateInt64 | +| int | ✅ | GenerateInt64 | +| bigint | ✅ | GenerateInt64 | +| float | ✅ | GenerateFloat64 | +| decimal | ✅ | GenerateFloat64 | +| dec | ✅ | GenerateFloat64 | +| double | ✅ | GenerateFloat64 | +| double precision | ✅ | GenerateFloat64 | +| char | ✅ | GenerateString | +| varchar | ✅ | GenerateString | +| tinytext | ✅ | GenerateString | +| text | ✅ | GenerateString | +| mediumtext | ✅ | GenerateString | +| longtext | ✅ | GenerateString | +| boolean | ✅ | GenerateBool | +| bool | ✅ | GenerateBool | +| enum | ✅ | GenerateCategorical | +| set | ✅ | GenerateCategorical | +| date | ✅ | GenerateJavaScript | +| datetime | ✅ | GenerateJavaScript | +| timestamp | ✅ | GenerateJavaScript | +| time | ✅ | GenerateJavaScript | +| year | ✅ | GenerateJavaScript | +| bit | ❌ | | +| binary | ❌ | | +| varbinary | ❌ | | +| tinyblob | ❌ | | +| blob | ❌ | | +| mediumblob | ❌ | | +| longblob | ❌ | | + + diff --git a/docs/openapi/mgmt/v1alpha1/job.openapi.yaml b/docs/openapi/mgmt/v1alpha1/job.openapi.yaml index dbffbb581b..5431b20d7e 100644 --- a/docs/openapi/mgmt/v1alpha1/job.openapi.yaml +++ b/docs/openapi/mgmt/v1alpha1/job.openapi.yaml @@ -3504,7 +3504,9 @@ components: haltOnNewColumnAddition: type: boolean title: halt_on_new_column_addition - description: Whether to halt the job if a new column is added + description: |- + Whether to halt the job if a new column is added + Deprecated: Use new_column_addition_strategy instead schemas: type: array items: @@ -3525,6 +3527,11 @@ components: - $ref: '#/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy' title: column_removal_strategy description: Provide a strategy of what to do in the event Neosync encounters a column that is removed from the source table. + newColumnAdditionStrategy: + allOf: + - $ref: '#/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy' + title: new_column_addition_strategy + description: Provide a strategy of what to do in the event Neosync encounters an unmapped column for the job's mapped tables. title: MysqlSourceConnectionOptions additionalProperties: false mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy: @@ -3575,6 +3582,57 @@ components: title: HaltJob additionalProperties: false description: Configuration for the HaltJob strategy + mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy: + type: object + allOf: + - anyOf: + - required: + - autoMap + - required: + - haltJob + - not: + anyOf: + - required: + - autoMap + - required: + - haltJob + anyOf: + - required: + - autoMap + - required: + - haltJob + - not: + anyOf: + - required: + - autoMap + - required: + - haltJob + properties: + haltJob: + allOf: + - $ref: '#/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob' + title: halt_job + description: halt job if a new column is detected. + autoMap: + allOf: + - $ref: '#/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap' + title: auto_map + description: |- + automatically handle unmapped columns. It handles this by using the DBs default/nullable values. + If this doesn't exist, will fall back to configuring generators for supported datatypes. + If none of the criteria above can be met, the job run will fail to prevent leaking of PII. + title: NewColumnAdditionStrategy + additionalProperties: false + mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap: + type: object + title: AutoMap + additionalProperties: false + description: Configuration for the AutoMap strategy + mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob: + type: object + title: HaltJob + additionalProperties: false + description: Configuration for the HaltJob strategy mgmt.v1alpha1.MysqlSourceSchemaOption: type: object properties: diff --git a/docs/openapi/neosync.mgmt.v1alpha1.yaml b/docs/openapi/neosync.mgmt.v1alpha1.yaml index 809befe413..1cb39048b9 100644 --- a/docs/openapi/neosync.mgmt.v1alpha1.yaml +++ b/docs/openapi/neosync.mgmt.v1alpha1.yaml @@ -13301,7 +13301,9 @@ components: haltOnNewColumnAddition: type: boolean title: halt_on_new_column_addition - description: Whether to halt the job if a new column is added + description: |- + Whether to halt the job if a new column is added + Deprecated: Use new_column_addition_strategy instead schemas: type: array items: @@ -13327,6 +13329,14 @@ components: description: >- Provide a strategy of what to do in the event Neosync encounters a column that is removed from the source table. + newColumnAdditionStrategy: + allOf: + - $ref: >- + #/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy + title: new_column_addition_strategy + description: >- + Provide a strategy of what to do in the event Neosync encounters an + unmapped column for the job's mapped tables. title: MysqlSourceConnectionOptions additionalProperties: false mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy: @@ -13379,6 +13389,60 @@ components: title: HaltJob additionalProperties: false description: Configuration for the HaltJob strategy + mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy: + type: object + allOf: + - anyOf: + - required: + - autoMap + - required: + - haltJob + - not: + anyOf: + - required: + - autoMap + - required: + - haltJob + anyOf: + - required: + - autoMap + - required: + - haltJob + - not: + anyOf: + - required: + - autoMap + - required: + - haltJob + properties: + haltJob: + allOf: + - $ref: >- + #/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob + title: halt_job + description: halt job if a new column is detected. + autoMap: + allOf: + - $ref: >- + #/components/schemas/mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap + title: auto_map + description: >- + automatically handle unmapped columns. It handles this by using the + DBs default/nullable values. + If this doesn't exist, will fall back to configuring generators for supported datatypes. + If none of the criteria above can be met, the job run will fail to prevent leaking of PII. + title: NewColumnAdditionStrategy + additionalProperties: false + mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap: + type: object + title: AutoMap + additionalProperties: false + description: Configuration for the AutoMap strategy + mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob: + type: object + title: HaltJob + additionalProperties: false + description: Configuration for the HaltJob strategy mgmt.v1alpha1.MysqlSourceSchemaOption: type: object properties: diff --git a/docs/protos/mgmt/v1alpha1/job.proto.mdx b/docs/protos/mgmt/v1alpha1/job.proto.mdx index 702305f712..b8aed1fddf 100644 --- a/docs/protos/mgmt/v1alpha1/job.proto.mdx +++ b/docs/protos/mgmt/v1alpha1/job.proto.mdx @@ -538,7 +538,7 @@ _**package** mgmt.v1alpha1_ ### `MysqlSourceConnectionOptions` - + ### `MysqlSourceConnectionOptions.ColumnRemovalStrategy` @@ -553,252 +553,264 @@ _**package** mgmt.v1alpha1_ +### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy` + + + +### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap` + + + +### `MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob` + + + ### `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` - + ### `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 729bbc90dc..3a4c6f7f30 100644 --- a/docs/protos/proto_docs.json +++ b/docs/protos/proto_docs.json @@ -15567,7 +15567,7 @@ "fields": [ { "name": "halt_on_new_column_addition", - "description": "Whether to halt the job if a new column is added", + "description": "Whether to halt the job if a new column is added\nDeprecated: Use new_column_addition_strategy instead", "label": "", "type": "bool", "longType": "bool", @@ -15575,7 +15575,10 @@ "ismap": false, "isoneof": false, "oneofdecl": "", - "defaultValue": "" + "defaultValue": "", + "options": { + "deprecated": true + } }, { "name": "schemas", @@ -15624,6 +15627,18 @@ "isoneof": false, "oneofdecl": "", "defaultValue": "" + }, + { + "name": "new_column_addition_strategy", + "description": "Provide a strategy of what to do in the event Neosync encounters an unmapped column for the job's mapped tables.", + "label": "", + "type": "NewColumnAdditionStrategy", + "longType": "MysqlSourceConnectionOptions.NewColumnAdditionStrategy", + "fullType": "mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy", + "ismap": false, + "isoneof": false, + "oneofdecl": "", + "defaultValue": "" } ] }, @@ -15685,6 +15700,64 @@ "extensions": [], "fields": [] }, + { + "name": "NewColumnAdditionStrategy", + "longName": "MysqlSourceConnectionOptions.NewColumnAdditionStrategy", + "fullName": "mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy", + "description": "", + "hasExtensions": false, + "hasFields": true, + "hasOneofs": true, + "extensions": [], + "fields": [ + { + "name": "halt_job", + "description": "halt job if a new column is detected.", + "label": "", + "type": "HaltJob", + "longType": "MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob", + "fullType": "mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob", + "ismap": false, + "isoneof": true, + "oneofdecl": "strategy", + "defaultValue": "" + }, + { + "name": "auto_map", + "description": "automatically handle unmapped columns. It handles this by using the DBs default/nullable values.\nIf this doesn't exist, will fall back to configuring generators for supported datatypes.\nIf none of the criteria above can be met, the job run will fail to prevent leaking of PII.", + "label": "", + "type": "AutoMap", + "longType": "MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap", + "fullType": "mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap", + "ismap": false, + "isoneof": true, + "oneofdecl": "strategy", + "defaultValue": "" + } + ] + }, + { + "name": "AutoMap", + "longName": "MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap", + "fullName": "mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap", + "description": "Configuration for the AutoMap strategy", + "hasExtensions": false, + "hasFields": false, + "hasOneofs": false, + "extensions": [], + "fields": [] + }, + { + "name": "HaltJob", + "longName": "MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob", + "fullName": "mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob", + "description": "Configuration for the HaltJob strategy", + "hasExtensions": false, + "hasFields": false, + "hasOneofs": false, + "extensions": [], + "fields": [] + }, { "name": "MysqlSourceSchemaOption", "longName": "MysqlSourceSchemaOption", diff --git a/frontend/apps/web/app/(mgmt)/[account]/jobs/[id]/source/components/DataSyncConnectionCard.tsx b/frontend/apps/web/app/(mgmt)/[account]/jobs/[id]/source/components/DataSyncConnectionCard.tsx index ddbc80a613..d3cef36a37 100644 --- a/frontend/apps/web/app/(mgmt)/[account]/jobs/[id]/source/components/DataSyncConnectionCard.tsx +++ b/frontend/apps/web/app/(mgmt)/[account]/jobs/[id]/source/components/DataSyncConnectionCard.tsx @@ -44,6 +44,7 @@ import { toColumnRemovalStrategy, toJobSourceMssqlColumnRemovalStrategy, toJobSourceMysqlColumnRemovalStrategy, + toJobSourceMysqlNewColumnAdditionStrategy, toJobSourcePostgresColumnRemovalStrategy, toJobSourcePostgresNewColumnAdditionStrategy, toNewColumnAdditionStrategy, @@ -84,6 +85,8 @@ import { MssqlSourceConnectionOptionsSchema, MysqlSourceConnectionOptions, MysqlSourceConnectionOptionsSchema, + MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema, + MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema, PostgresSourceConnectionOptions, PostgresSourceConnectionOptionsSchema, ValidateJobMappingsResponse, @@ -1004,8 +1007,10 @@ function toJobSourceOptions( value: create(MysqlSourceConnectionOptionsSchema, { ...getExistingMysqlSourceConnectionOptions(job), connectionId: newSourceId, - haltOnNewColumnAddition: - values.sourceOptions.mysql?.haltOnNewColumnAddition ?? false, + newColumnAdditionStrategy: + toJobSourceMysqlNewColumnAdditionStrategy( + values.sourceOptions.mysql?.newColumnAdditionStrategy + ), columnRemovalStrategy: toJobSourceMysqlColumnRemovalStrategy( values.sourceOptions.mysql?.columnRemovalStrategy ), @@ -1226,13 +1231,30 @@ function getJobSource( }, }; case 'mysql': + if ( + job.source.options.config.value.haltOnNewColumnAddition && + !job.source.options.config.value.newColumnAdditionStrategy?.strategy + ) { + job.source.options.config.value.newColumnAdditionStrategy = create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema, + { + strategy: { + case: 'haltJob', + value: create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema + ), + }, + } + ); + } return { ...yupValidationValues, sourceId: getConnectionIdFromSource(job.source) || '', sourceOptions: { mysql: { - haltOnNewColumnAddition: - job?.source?.options?.config.value.haltOnNewColumnAddition, + newColumnAdditionStrategy: toNewColumnAdditionStrategy( + job.source.options.config.value.newColumnAdditionStrategy + ), columnRemovalStrategy: toColumnRemovalStrategy( job.source.options.config.value.columnRemovalStrategy ), @@ -1347,7 +1369,7 @@ async function getUpdatedValues( ...values, sourceOptions: { mysql: { - haltOnNewColumnAddition: false, + newColumnAdditionStrategy: 'halt', columnRemovalStrategy: 'continue', }, }, diff --git a/frontend/apps/web/app/(mgmt)/[account]/jobs/util.ts b/frontend/apps/web/app/(mgmt)/[account]/jobs/util.ts index eb1ff1dd3c..dc56e5df9c 100644 --- a/frontend/apps/web/app/(mgmt)/[account]/jobs/util.ts +++ b/frontend/apps/web/app/(mgmt)/[account]/jobs/util.ts @@ -19,6 +19,7 @@ import { toColumnRemovalStrategy, toJobSourceMssqlColumnRemovalStrategy, toJobSourceMysqlColumnRemovalStrategy, + toJobSourceMysqlNewColumnAdditionStrategy, toJobSourcePostgresColumnRemovalStrategy, toJobSourcePostgresNewColumnAdditionStrategy, toNewColumnAdditionStrategy, @@ -91,6 +92,8 @@ import { MysqlOnConflictConfig_MysqlOnConflictDoNothingSchema, MysqlOnConflictConfig_MysqlOnConflictUpdateSchema, MysqlOnConflictConfigSchema, + MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema, + MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema, MysqlSourceConnectionOptionsSchema, MysqlSourceSchemaOption, MysqlSourceSchemaOptionSchema, @@ -798,9 +801,10 @@ function toJobSourceOptions( case: 'mysql', value: create(MysqlSourceConnectionOptionsSchema, { connectionId: values.connect.sourceId, - haltOnNewColumnAddition: - values.connect.sourceOptions.mysql?.haltOnNewColumnAddition ?? - false, + newColumnAdditionStrategy: + toJobSourceMysqlNewColumnAdditionStrategy( + values.connect.sourceOptions.mysql?.newColumnAdditionStrategy + ), columnRemovalStrategy: toJobSourceMysqlColumnRemovalStrategy( values.connect.sourceOptions.mysql?.columnRemovalStrategy ), @@ -1294,12 +1298,30 @@ function setDefaultConnectFormValues( storage.setItem(sessionKeys.piidetect.connect, JSON.stringify(values)); return; } + if ( + job.source.options.config.value.haltOnNewColumnAddition && + !job.source.options.config.value.newColumnAdditionStrategy + ) { + job.source.options.config.value.newColumnAdditionStrategy = create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema, + { + strategy: { + case: 'haltJob', + value: create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema, + {} + ), + }, + } + ); + } const values: ConnectFormValues = { sourceId: job.source.options.config.value.connectionId, sourceOptions: { mysql: { - haltOnNewColumnAddition: - job.source.options.config.value.haltOnNewColumnAddition, + newColumnAdditionStrategy: toNewColumnAdditionStrategy( + job.source.options.config.value.newColumnAdditionStrategy + ), columnRemovalStrategy: toColumnRemovalStrategy( job.source.options.config.value.columnRemovalStrategy ), diff --git a/frontend/apps/web/app/(mgmt)/[account]/new/job/connect/page.tsx b/frontend/apps/web/app/(mgmt)/[account]/new/job/connect/page.tsx index 9767c129e6..4899499658 100644 --- a/frontend/apps/web/app/(mgmt)/[account]/new/job/connect/page.tsx +++ b/frontend/apps/web/app/(mgmt)/[account]/new/job/connect/page.tsx @@ -270,7 +270,7 @@ export default function Page(props: PageProps): ReactElement { 'sourceOptions', { mysql: { - haltOnNewColumnAddition: false, + newColumnAdditionStrategy: 'halt', columnRemovalStrategy: 'continue', }, }, diff --git a/frontend/apps/web/components/jobs/Form/ColumnRemovalStrategyOptionsForm.tsx b/frontend/apps/web/components/jobs/Form/ColumnRemovalStrategyOptionsForm.tsx index 66f252024f..412e5457e4 100644 --- a/frontend/apps/web/components/jobs/Form/ColumnRemovalStrategyOptionsForm.tsx +++ b/frontend/apps/web/components/jobs/Form/ColumnRemovalStrategyOptionsForm.tsx @@ -42,10 +42,12 @@ export default function ColumnRemovalStrategyOptionsForm( @@ -55,14 +57,18 @@ export default function ColumnRemovalStrategyOptionsForm( interface StrategyRadioItemProps { value: ColumnRemovalStrategy; label: string; + idPrefix: string; } function StrategyRadioItem(props: StrategyRadioItemProps): ReactElement { - const { value, label } = props; + const { value, label, idPrefix } = props; + const id = `${idPrefix}-${value}`; return (
- - + +
); } diff --git a/frontend/apps/web/components/jobs/Form/MysqlDBSourceOptionsForm.tsx b/frontend/apps/web/components/jobs/Form/MysqlDBSourceOptionsForm.tsx index f4c5bc3b50..98afe0a47c 100644 --- a/frontend/apps/web/components/jobs/Form/MysqlDBSourceOptionsForm.tsx +++ b/frontend/apps/web/components/jobs/Form/MysqlDBSourceOptionsForm.tsx @@ -15,13 +15,9 @@ export default function MysqlDBSourceOptionsForm(props: Props): ReactElement {
{ - setValue({ - ...value, - haltOnNewColumnAddition: strategy === 'halt', - }); + setValue({ ...value, newColumnAdditionStrategy: strategy }); }} />
diff --git a/frontend/apps/web/components/jobs/Form/NewColumnAdditionStrategyOptionsForm.tsx b/frontend/apps/web/components/jobs/Form/NewColumnAdditionStrategyOptionsForm.tsx index 61e8843fea..bd59cfcaa1 100644 --- a/frontend/apps/web/components/jobs/Form/NewColumnAdditionStrategyOptionsForm.tsx +++ b/frontend/apps/web/components/jobs/Form/NewColumnAdditionStrategyOptionsForm.tsx @@ -42,16 +42,19 @@ export default function NewColumnAdditionStrategyOptionsForm( {!disableAutoMap && ( )}
@@ -61,14 +64,18 @@ export default function NewColumnAdditionStrategyOptionsForm( interface StrategyRadioItemProps { value: NewColumnAdditionStrategy; label: string; + idPrefix: string; } function StrategyRadioItem(props: StrategyRadioItemProps): ReactElement { - const { value, label } = props; + const { value, label, idPrefix } = props; + const id = `${idPrefix}-${value}`; return (
- - + +
); } diff --git a/frontend/apps/web/components/jobs/Form/SourceOptionsForm.tsx b/frontend/apps/web/components/jobs/Form/SourceOptionsForm.tsx index 2b3afde486..afec32bb6f 100644 --- a/frontend/apps/web/components/jobs/Form/SourceOptionsForm.tsx +++ b/frontend/apps/web/components/jobs/Form/SourceOptionsForm.tsx @@ -53,7 +53,7 @@ export default function SourceOptionsForm( ; const MysqlSourceOptionsFormValues = Yup.object({ - haltOnNewColumnAddition: Yup.boolean().optional().default(false), + newColumnAdditionStrategy: Yup.string() + .oneOf(['continue', 'halt', 'automap']) + .optional() + .default('continue'), columnRemovalStrategy: Yup.string() .oneOf(['halt', 'continue']) .optional() @@ -431,7 +438,10 @@ export function toJobSourcePostgresNewColumnAdditionStrategy( } } export function toNewColumnAdditionStrategy( - input: PostgresSourceConnectionOptions_NewColumnAdditionStrategy | undefined + input: + | PostgresSourceConnectionOptions_NewColumnAdditionStrategy + | MysqlSourceConnectionOptions_NewColumnAdditionStrategy + | undefined ): NewColumnAdditionStrategy { switch (input?.strategy.case) { case 'haltJob': { @@ -482,6 +492,45 @@ export function toJobSourcePostgresColumnRemovalStrategy( } } +export function toJobSourceMysqlNewColumnAdditionStrategy( + strategy?: NewColumnAdditionStrategy +): MysqlSourceConnectionOptions_NewColumnAdditionStrategy | undefined { + switch (strategy) { + case 'continue': { + return undefined; + } + case 'automap': { + return create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema, + { + strategy: { + case: 'autoMap', + value: create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMapSchema + ), + }, + } + ); + } + case 'halt': { + return create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema, + { + strategy: { + case: 'haltJob', + value: create( + MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema + ), + }, + } + ); + } + default: { + return undefined; + } + } +} + export function toJobSourceMysqlColumnRemovalStrategy( strategy?: ColumnRemovalStrategy ): MysqlSourceConnectionOptions_ColumnRemovalStrategy | undefined { 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 8cd11de515..d337882987 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/QEKJUR5bmFtb0RCU291cmNlVW5tYXBwZWRUcmFuc2Zvcm1Db25maWcSLwoBYhgBIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVyEjUKB2Jvb2xlYW4YAiABKAsyJC5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmdUcmFuc2Zvcm1lchIvCgFuGAQgASgLMiQubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nVHJhbnNmb3JtZXISLwoBcxgGIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVySgQIAxAESgQIBRAGIl8KGUR5bmFtb0RCU291cmNlVGFibGVPcHRpb24SFgoFdGFibGUYASABKAlCB7pIBHICEAESGQoMd2hlcmVfY2xhdXNlGAIgASgJSACIAQFCDwoNX3doZXJlX2NsYXVzZSKeBwofUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxI6CgdzY2hlbWFzGAIgAygLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSbgocbmV3X2NvbHVtbl9hZGRpdGlvbl9zdHJhdGVneRgFIAEoCzJILm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5EmUKF2NvbHVtbl9yZW1vdmFsX3N0cmF0ZWd5GAYgASgLMkQubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneRqJAgoZTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRJkCghoYWx0X2pvYhgBIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkhhbHRKb2JIABJkCghhdXRvX21hcBgCIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkF1dG9NYXBIABoJCgdIYWx0Sm9iGgkKB0F1dG9NYXBCCgoIc3RyYXRlZ3kaiQIKFUNvbHVtblJlbW92YWxTdHJhdGVneRJgCghoYWx0X2pvYhgBIAEoCzJMLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5Db2x1bW5SZW1vdmFsU3RyYXRlZ3kuSGFsdEpvYkgAEmgKDGNvbnRpbnVlX2pvYhgCIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5Db2x1bW5SZW1vdmFsU3RyYXRlZ3kuQ29udGludWVKb2JIABoJCgdIYWx0Sm9iGg0KC0NvbnRpbnVlSm9iQgoKCHN0cmF0ZWd5SgQIARACInkKGlBvc3RncmVzU291cmNlU2NoZW1hT3B0aW9uEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARJCCgZ0YWJsZXMYAiADKAsyKC5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlVGFibGVPcHRpb25CCLpIBZIBAggBIl8KGVBvc3RncmVzU291cmNlVGFibGVPcHRpb24SFgoFdGFibGUYASABKAlCB7pIBHICEAESGQoMd2hlcmVfY2xhdXNlGAIgASgJSACIAQFCDwoNX3doZXJlX2NsYXVzZSKyBAocTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxIjChtoYWx0X29uX25ld19jb2x1bW5fYWRkaXRpb24YASABKAgSNwoHc2NoZW1hcxgCIAMoCzImLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VTY2hlbWFPcHRpb24SHwoNY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESKQohc3Vic2V0X2J5X2ZvcmVpZ25fa2V5X2NvbnN0cmFpbnRzGAQgASgIEmIKF2NvbHVtbl9yZW1vdmFsX3N0cmF0ZWd5GAUgASgLMkEubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneRqDAgoVQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5El0KCGhhbHRfam9iGAEgASgLMkkubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5IYWx0Sm9iSAASZQoMY29udGludWVfam9iGAIgASgLMk0ubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneS5Db250aW51ZUpvYkgAGgkKB0hhbHRKb2IaDQoLQ29udGludWVKb2JCCgoIc3RyYXRlZ3kicwoXTXlzcWxTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEj8KBnRhYmxlcxgCIAMoCzIlLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiXAoWTXlzcWxTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIZCgx3aGVyZV9jbGF1c2UYAiABKAlIAIgBAUIPCg1fd2hlcmVfY2xhdXNlIrIEChxNc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEiMKG2hhbHRfb25fbmV3X2NvbHVtbl9hZGRpdGlvbhgBIAEoCBI3CgdzY2hlbWFzGAIgAygLMiYubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSYgoXY29sdW1uX3JlbW92YWxfc3RyYXRlZ3kYBSABKAsyQS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5GoMCChVDb2x1bW5SZW1vdmFsU3RyYXRlZ3kSXQoIaGFsdF9qb2IYASABKAsySS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkhhbHRKb2JIABJlCgxjb250aW51ZV9qb2IYAiABKAsyTS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkNvbnRpbnVlSm9iSAAaCQoHSGFsdEpvYhoNCgtDb250aW51ZUpvYkIKCghzdHJhdGVneSJzChdNc3NxbFNvdXJjZVNjaGVtYU9wdGlvbhIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESPwoGdGFibGVzGAIgAygLMiUubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVRhYmxlT3B0aW9uQgi6SAWSAQIIASJcChZNc3NxbFNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEhkKDHdoZXJlX2NsYXVzZRgCIAEoCUgAiAEBQg8KDV93aGVyZV9jbGF1c2UiPwocQXdzUzNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxIfCg1jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABASLbBAoVSm9iRGVzdGluYXRpb25PcHRpb25zEk8KEHBvc3RncmVzX29wdGlvbnMYASABKAsyMy5tZ210LnYxYWxwaGExLlBvc3RncmVzRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEkoKDmF3c19zM19vcHRpb25zGAIgASgLMjAubWdtdC52MWFscGhhMS5Bd3NTM0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnNIABJJCg1teXNxbF9vcHRpb25zGAMgASgLMjAubWdtdC52MWFscGhhMS5NeXNxbERlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnNIABJNCg9tb25nb2RiX29wdGlvbnMYBCABKAsyMi5tZ210LnYxYWxwaGExLk1vbmdvREJEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASXgoYZ2NwX2Nsb3Vkc3RvcmFnZV9vcHRpb25zGAUgASgLMjoubWdtdC52MWFscGhhMS5HY3BDbG91ZFN0b3JhZ2VEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASTwoQZHluYW1vZGJfb3B0aW9ucxgGIAEoCzIzLm1nbXQudjFhbHBoYTEuRHluYW1vREJEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASSQoNbXNzcWxfb3B0aW9ucxgHIAEoCzIwLm1nbXQudjFhbHBoYTEuTXNzcWxEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSABCDwoGY29uZmlnEgW6SAIIASIlCiNNb25nb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucyItCitHY3BDbG91ZFN0b3JhZ2VEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zIm4KJER5bmFtb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxJGCg50YWJsZV9tYXBwaW5ncxgBIAMoCzIuLm1nbXQudjFhbHBoYTEuRHluYW1vREJEZXN0aW5hdGlvblRhYmxlTWFwcGluZyJSCh9EeW5hbW9EQkRlc3RpbmF0aW9uVGFibGVNYXBwaW5nEhQKDHNvdXJjZV90YWJsZRgBIAEoCRIZChFkZXN0aW5hdGlvbl90YWJsZRgCIAEoCSLKAgokUG9zdGdyZXNEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zEkIKDnRydW5jYXRlX3RhYmxlGAEgASgLMioubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1RydW5jYXRlVGFibGVDb25maWcSGQoRaW5pdF90YWJsZV9zY2hlbWEYAiABKAgSPAoLb25fY29uZmxpY3QYAyABKAsyJy5tZ210LnYxYWxwaGExLlBvc3RncmVzT25Db25mbGljdENvbmZpZxIjChtza2lwX2ZvcmVpZ25fa2V5X3Zpb2xhdGlvbnMYBCABKAgSKQoFYmF0Y2gYBSABKAsyGi5tZ210LnYxYWxwaGExLkJhdGNoQ29uZmlnEiMKDW1heF9pbl9mbGlnaHQYBiABKA1CB7pIBCoCKAFIAIgBAUIQCg5fbWF4X2luX2ZsaWdodCKsAgoYUG9zdGdyZXNPbkNvbmZsaWN0Q29uZmlnEhYKCmRvX25vdGhpbmcYASABKAhCAhgBElYKB25vdGhpbmcYAiABKAsyQy5tZ210LnYxYWxwaGExLlBvc3RncmVzT25Db25mbGljdENvbmZpZy5Qb3N0Z3Jlc09uQ29uZmxpY3REb05vdGhpbmdIABJSCgZ1cGRhdGUYAyABKAsyQC5tZ210LnYxYWxwaGExLlBvc3RncmVzT25Db25mbGljdENvbmZpZy5Qb3N0Z3Jlc09uQ29uZmxpY3RVcGRhdGVIABodChtQb3N0Z3Jlc09uQ29uZmxpY3REb05vdGhpbmcaGgoYUG9zdGdyZXNPbkNvbmZsaWN0VXBkYXRlQhEKCHN0cmF0ZWd5EgW6SAIIACJOChtQb3N0Z3Jlc1RydW5jYXRlVGFibGVDb25maWcSHgoWdHJ1bmNhdGVfYmVmb3JlX2luc2VydBgBIAEoCBIPCgdjYXNjYWRlGAIgASgIIsECCiFNeXNxbERlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSPwoOdHJ1bmNhdGVfdGFibGUYASABKAsyJy5tZ210LnYxYWxwaGExLk15c3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIZChFpbml0X3RhYmxlX3NjaGVtYRgCIAEoCBI5Cgtvbl9jb25mbGljdBgDIAEoCzIkLm1nbXQudjFhbHBoYTEuTXlzcWxPbkNvbmZsaWN0Q29uZmlnEiMKG3NraXBfZm9yZWlnbl9rZXlfdmlvbGF0aW9ucxgEIAEoCBIpCgViYXRjaBgFIAEoCzIaLm1nbXQudjFhbHBoYTEuQmF0Y2hDb25maWcSIwoNbWF4X2luX2ZsaWdodBgGIAEoDUIHukgEKgIoAUgAiAEBQhAKDl9tYXhfaW5fZmxpZ2h0IjoKGE15c3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIeChZ0cnVuY2F0ZV9iZWZvcmVfaW5zZXJ0GAEgASgIIpMCChVNeXNxbE9uQ29uZmxpY3RDb25maWcSEgoKZG9fbm90aGluZxgBIAEoCBJQCgdub3RoaW5nGAIgASgLMj0ubWdtdC52MWFscGhhMS5NeXNxbE9uQ29uZmxpY3RDb25maWcuTXlzcWxPbkNvbmZsaWN0RG9Ob3RoaW5nSAASTAoGdXBkYXRlGAMgASgLMjoubWdtdC52MWFscGhhMS5NeXNxbE9uQ29uZmxpY3RDb25maWcuTXlzcWxPbkNvbmZsaWN0VXBkYXRlSAAaGgoYTXlzcWxPbkNvbmZsaWN0RG9Ob3RoaW5nGhcKFU15c3FsT25Db25mbGljdFVwZGF0ZUIRCghzdHJhdGVneRIFukgCCAAiwQIKIU1zc3FsRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxI/Cg50cnVuY2F0ZV90YWJsZRgBIAEoCzInLm1nbXQudjFhbHBoYTEuTXNzcWxUcnVuY2F0ZVRhYmxlQ29uZmlnEhkKEWluaXRfdGFibGVfc2NoZW1hGAIgASgIEjkKC29uX2NvbmZsaWN0GAMgASgLMiQubWdtdC52MWFscGhhMS5Nc3NxbE9uQ29uZmxpY3RDb25maWcSIwobc2tpcF9mb3JlaWduX2tleV92aW9sYXRpb25zGAQgASgIEikKBWJhdGNoGAUgASgLMhoubWdtdC52MWFscGhhMS5CYXRjaENvbmZpZxIjCg1tYXhfaW5fZmxpZ2h0GAYgASgNQge6SAQqAigBSACIAQFCEAoOX21heF9pbl9mbGlnaHQiOgoYTXNzcWxUcnVuY2F0ZVRhYmxlQ29uZmlnEh4KFnRydW5jYXRlX2JlZm9yZV9pbnNlcnQYASABKAgiKwoVTXNzcWxPbkNvbmZsaWN0Q29uZmlnEhIKCmRvX25vdGhpbmcYASABKAgijgQKIUF3c1MzRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxJUCg1zdG9yYWdlX2NsYXNzGAEgASgOMj0ubWdtdC52MWFscGhhMS5Bd3NTM0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMuU3RvcmFnZUNsYXNzEiMKDW1heF9pbl9mbGlnaHQYAiABKA1CB7pIBCoCKAFIAIgBARIUCgd0aW1lb3V0GAMgASgJSAGIAQESKQoFYmF0Y2gYBCABKAsyGi5tZ210LnYxYWxwaGExLkJhdGNoQ29uZmlnIo4CCgxTdG9yYWdlQ2xhc3MSHQoZU1RPUkFHRV9DTEFTU19VTlNQRUNJRklFRBAAEhoKFlNUT1JBR0VfQ0xBU1NfU1RBTkRBUkQQARIkCiBTVE9SQUdFX0NMQVNTX1JFRFVDRURfUkVEVU5EQU5DWRACEhkKFVNUT1JBR0VfQ0xBU1NfR0xBQ0lFUhADEh0KGVNUT1JBR0VfQ0xBU1NfU1RBTkRBUkRfSUEQBBIcChhTVE9SQUdFX0NMQVNTX09ORVpPTkVfSUEQBRIlCiFTVE9SQUdFX0NMQVNTX0lOVEVMTElHRU5UX1RJRVJJTkcQBhIeChpTVE9SQUdFX0NMQVNTX0RFRVBfQVJDSElWRRAHQhAKDl9tYXhfaW5fZmxpZ2h0QgoKCF90aW1lb3V0IksKC0JhdGNoQ29uZmlnEhIKBWNvdW50GAEgASgNSACIAQESEwoGcGVyaW9kGAIgASgJSAGIAQFCCAoGX2NvdW50QgkKB19wZXJpb2QihwcKEENyZWF0ZUpvYlJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESKwoIam9iX25hbWUYAiABKAlCGbpIFnIUMhJeW2EtejAtOS1dezMsMTAwfSQSGgoNY3Jvbl9zY2hlZHVsZRgDIAEoCUgAiAEBEisKCG1hcHBpbmdzGAQgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEigKBnNvdXJjZRgFIAEoCzIYLm1nbXQudjFhbHBoYTEuSm9iU291cmNlEjkKDGRlc3RpbmF0aW9ucxgGIAMoCzIjLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iRGVzdGluYXRpb24SGAoQaW5pdGlhdGVfam9iX3J1bhgHIAEoCBI4ChB3b3JrZmxvd19vcHRpb25zGAggASgLMh4ubWdtdC52MWFscGhhMS5Xb3JrZmxvd09wdGlvbnMSNAoMc3luY19vcHRpb25zGAkgASgLMh4ubWdtdC52MWFscGhhMS5BY3Rpdml0eU9wdGlvbnMSRQoUdmlydHVhbF9mb3JlaWduX2tleXMYCiADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIzCghqb2JfdHlwZRgLIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZ0gBiAEBOtQCukjQAhqfAQoabWFwcGluZ3NfcmVxdWlyZWRfZm9yX3N5bmMSL0ZvciBzeW5jIGpvYnMsIGF0IGxlYXN0IG9uZSBtYXBwaW5nIGlzIHJlcXVpcmVkGlAhaGFzKHRoaXMuam9iX3R5cGUpIHx8IGhhcyh0aGlzLmpvYl90eXBlLnN5bmMpID8gc2l6ZSh0aGlzLm1hcHBpbmdzKSA+PSAxIDogdHJ1ZRqrAQoeZGVzdGluYXRpb25zX3JlcXVpcmVkX2Zvcl9zeW5jEjNGb3Igc3luYyBqb2JzLCBhdCBsZWFzdCBvbmUgZGVzdGluYXRpb24gaXMgcmVxdWlyZWQaVCFoYXModGhpcy5qb2JfdHlwZSkgfHwgaGFzKHRoaXMuam9iX3R5cGUuc3luYykgPyBzaXplKHRoaXMuZGVzdGluYXRpb25zKSA+PSAxIDogdHJ1ZUIQCg5fY3Jvbl9zY2hlZHVsZUILCglfam9iX3R5cGUinwgKDUpvYlR5cGVDb25maWcSOAoEc3luYxgBIAEoCzIoLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luY0gAEkMKCnBpaV9kZXRlY3QYAiABKAsyLS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdEgAGg0KC0pvYlR5cGVTeW5jGuwGChBKb2JUeXBlUGlpRGV0ZWN0ElEKDWRhdGFfc2FtcGxpbmcYASABKAsyOi5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5EYXRhU2FtcGxpbmcSWAoRdGFibGVfc2Nhbl9maWx0ZXIYAiABKAsyPS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZVNjYW5GaWx0ZXISGAoLdXNlcl9wcm9tcHQYAyABKAlIAIgBARJTCgtpbmNyZW1lbnRhbBgEIAEoCzI5Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlUGlpRGV0ZWN0LkluY3JlbWVudGFsSAGIAQEaIQoLSW5jcmVtZW50YWwSEgoKaXNfZW5hYmxlZBgBIAEoCBoiCgxEYXRhU2FtcGxpbmcSEgoKaXNfZW5hYmxlZBgBIAEoCBqRAgoPVGFibGVTY2FuRmlsdGVyEk8KC2luY2x1ZGVfYWxsGAEgASgLMjgubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuSW5jbHVkZUFsbEgAEk4KB2luY2x1ZGUYAiABKAsyOy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZVBhdHRlcm5zSAASTgoHZXhjbHVkZRgDIAEoCzI7Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlUGlpRGV0ZWN0LlRhYmxlUGF0dGVybnNIAEINCgRtb2RlEgW6SAIIARoMCgpJbmNsdWRlQWxsGm8KDVRhYmxlUGF0dGVybnMSDwoHc2NoZW1hcxgBIAMoCRJNCgZ0YWJsZXMYAiADKAsyPS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZUlkZW50aWZpZXIaQgoPVGFibGVJZGVudGlmaWVyEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARIWCgV0YWJsZRgCIAEoCUIHukgEcgIQAUIOCgxfdXNlcl9wcm9tcHRCDgoMX2luY3JlbWVudGFsQhEKCGpvYl90eXBlEgW6SAIIACJlCg9Xb3JrZmxvd09wdGlvbnMSGAoLcnVuX3RpbWVvdXQYCCABKANIAIgBAUIOCgxfcnVuX3RpbWVvdXRKBAgBEAJKBAgCEANKBAgDEARKBAgEEAVKBAgFEAZKBAgGEAdKBAgHEAgi2wEKD0FjdGl2aXR5T3B0aW9ucxIvChlzY2hlZHVsZV90b19jbG9zZV90aW1lb3V0GAEgASgDQge6SAQiAigBSACIAQESLAoWc3RhcnRfdG9fY2xvc2VfdGltZW91dBgCIAEoA0IHukgEIgIoAUgBiAEBEjAKDHJldHJ5X3BvbGljeRgDIAEoCzIaLm1nbXQudjFhbHBoYTEuUmV0cnlQb2xpY3lCHAoaX3NjaGVkdWxlX3RvX2Nsb3NlX3RpbWVvdXRCGQoXX3N0YXJ0X3RvX2Nsb3NlX3RpbWVvdXQiSgoLUmV0cnlQb2xpY3kSJgoQbWF4aW11bV9hdHRlbXB0cxgBIAEoBUIHukgEGgIoAEgAiAEBQhMKEV9tYXhpbXVtX2F0dGVtcHRzIjQKEUNyZWF0ZUpvYlJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIk8KFUpvYk1hcHBpbmdUcmFuc2Zvcm1lchIwCgZjb25maWcYAyABKAsyIC5tZ210LnYxYWxwaGExLlRyYW5zZm9ybWVyQ29uZmlnSgQIARACIpEBCgpKb2JNYXBwaW5nEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARIWCgV0YWJsZRgCIAEoCUIHukgEcgIQARIXCgZjb2x1bW4YAyABKAlCB7pIBHICEAESOQoLdHJhbnNmb3JtZXIYBSABKAsyJC5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmdUcmFuc2Zvcm1lciIlCg1HZXRKb2JSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASIxCg5HZXRKb2JSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJeChhVcGRhdGVKb2JTY2hlZHVsZVJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEhoKDWNyb25fc2NoZWR1bGUYAiABKAlIAIgBAUIQCg5fY3Jvbl9zY2hlZHVsZSI8ChlVcGRhdGVKb2JTY2hlZHVsZVJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIlIKD1BhdXNlSm9iUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESDQoFcGF1c2UYAiABKAgSEQoEbm90ZRgDIAEoCUgAiAEBQgcKBV9ub3RlIjMKEFBhdXNlSm9iUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IihgIKIFVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb25SZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABARIoCgZzb3VyY2UYAiABKAsyGC5tZ210LnYxYWxwaGExLkpvYlNvdXJjZRIrCghtYXBwaW5ncxgDIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxJFChR2aXJ0dWFsX2ZvcmVpZ25fa2V5cxgEIAMoCzInLm1nbXQudjFhbHBoYTEuVmlydHVhbEZvcmVpZ25Db25zdHJhaW50Ei4KCGpvYl90eXBlGAUgASgLMhwubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnIkQKIVVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb25SZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJhChpQb3N0Z3Jlc1NvdXJjZVNjaGVtYVN1YnNldBJDChBwb3N0Z3Jlc19zY2hlbWFzGAEgAygLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbiJYChdNeXNxbFNvdXJjZVNjaGVtYVN1YnNldBI9Cg1teXNxbF9zY2hlbWFzGAEgAygLMiYubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVNjaGVtYU9wdGlvbiJWChpEeW5hbW9EQlNvdXJjZVNjaGVtYVN1YnNldBI4CgZ0YWJsZXMYASADKAsyKC5tZ210LnYxYWxwaGExLkR5bmFtb0RCU291cmNlVGFibGVPcHRpb24iWAoXTXNzcWxTb3VyY2VTY2hlbWFTdWJzZXQSPQoNbXNzcWxfc2NoZW1hcxgBIAMoCzImLm1nbXQudjFhbHBoYTEuTXNzcWxTb3VyY2VTY2hlbWFPcHRpb24ivgIKGEpvYlNvdXJjZVNxbFN1YmV0U2NoZW1hcxJECg9wb3N0Z3Jlc19zdWJzZXQYAiABKAsyKS5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlU2NoZW1hU3Vic2V0SAASPgoMbXlzcWxfc3Vic2V0GAMgASgLMiYubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVNjaGVtYVN1YnNldEgAEkQKD2R5bmFtb2RiX3N1YnNldBgEIAEoCzIpLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VTY2hlbWFTdWJzZXRIABI+Cgxtc3NxbF9zdWJzZXQYBSABKAsyJi5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlU2NoZW1hU3Vic2V0SABCEAoHc2NoZW1hcxIFukgCCAFKBAgBEAIipAEKJ1NldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESOAoHc2NoZW1hcxgCIAEoCzInLm1nbXQudjFhbHBoYTEuSm9iU291cmNlU3FsU3ViZXRTY2hlbWFzEikKIXN1YnNldF9ieV9mb3JlaWduX2tleV9jb25zdHJhaW50cxgDIAEoCCJLCihTZXRKb2JTb3VyY2VTcWxDb25uZWN0aW9uU3Vic2V0c1Jlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIrEBCiVVcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQESHwoNY29ubmVjdGlvbl9pZBgCIAEoCUIIukgFcgOwAQESNQoHb3B0aW9ucxgDIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iRGVzdGluYXRpb25PcHRpb25zEhYKDmRlc3RpbmF0aW9uX2lkGAQgASgJIkkKJlVwZGF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIkkKJURlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlcXVlc3QSIAoOZGVzdGluYXRpb25faWQYASABKAlCCLpIBXIDsAEBIigKJkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlIocBCiZDcmVhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25zUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEkMKDGRlc3RpbmF0aW9ucxgCIAMoCzIjLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iRGVzdGluYXRpb25CCLpIBZIBAggBIkoKJ0NyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiIoChBEZWxldGVKb2JSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASITChFEZWxldGVKb2JSZXNwb25zZSJiChlJc0pvYk5hbWVBdmFpbGFibGVSZXF1ZXN0EicKBG5hbWUYASABKAlCGbpIFnIUMhJeW2EtejAtOS1dezMsMTAwfSQSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiMgoaSXNKb2JOYW1lQXZhaWxhYmxlUmVzcG9uc2USFAoMaXNfYXZhaWxhYmxlGAEgASgIIlUKEUdldEpvYlJ1bnNSZXF1ZXN0EhoKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQFIABIeCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABAUgAQgQKAmlkIj0KEkdldEpvYlJ1bnNSZXNwb25zZRInCghqb2JfcnVucxgBIAMoCzIVLm1nbXQudjFhbHBoYTEuSm9iUnVuIkQKEEdldEpvYlJ1blJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASI7ChFHZXRKb2JSdW5SZXNwb25zZRImCgdqb2JfcnVuGAEgASgLMhUubWdtdC52MWFscGhhMS5Kb2JSdW4iLwoTQ3JlYXRlSm9iUnVuUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIhYKFENyZWF0ZUpvYlJ1blJlc3BvbnNlIkcKE0NhbmNlbEpvYlJ1blJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASIWChRDYW5jZWxKb2JSdW5SZXNwb25zZSLsBAoDSm9iEgoKAmlkGAEgASgJEhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgCIAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJ1cGRhdGVkX2J5X3VzZXJfaWQYBCABKAkSLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEbmFtZRgGIAEoCRIoCgZzb3VyY2UYByABKAsyGC5tZ210LnYxYWxwaGExLkpvYlNvdXJjZRIzCgxkZXN0aW5hdGlvbnMYCCADKAsyHS5tZ210LnYxYWxwaGExLkpvYkRlc3RpbmF0aW9uEisKCG1hcHBpbmdzGAkgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEhoKDWNyb25fc2NoZWR1bGUYCiABKAlIAIgBARISCgphY2NvdW50X2lkGAsgASgJEjQKDHN5bmNfb3B0aW9ucxgMIAEoCzIeLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlPcHRpb25zEjgKEHdvcmtmbG93X29wdGlvbnMYDSABKAsyHi5tZ210LnYxYWxwaGExLldvcmtmbG93T3B0aW9ucxJFChR2aXJ0dWFsX2ZvcmVpZ25fa2V5cxgOIAMoCzInLm1nbXQudjFhbHBoYTEuVmlydHVhbEZvcmVpZ25Db25zdHJhaW50Ei4KCGpvYl90eXBlGA8gASgLMhwubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnQhAKDl9jcm9uX3NjaGVkdWxlIlIKDEpvYlJlY2VudFJ1bhIuCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpqb2JfcnVuX2lkGAIgASgJIjMKF0dldEpvYlJlY2VudFJ1bnNSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQEiTAoYR2V0Sm9iUmVjZW50UnVuc1Jlc3BvbnNlEjAKC3JlY2VudF9ydW5zGAEgAygLMhsubWdtdC52MWFscGhhMS5Kb2JSZWNlbnRSdW4iQQoLSm9iTmV4dFJ1bnMSMgoObmV4dF9ydW5fdGltZXMYASADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjEKFUdldEpvYk5leHRSdW5zUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIkcKFkdldEpvYk5leHRSdW5zUmVzcG9uc2USLQoJbmV4dF9ydW5zGAEgASgLMhoubWdtdC52MWFscGhhMS5Kb2JOZXh0UnVucyIvChNHZXRKb2JTdGF0dXNSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQEiQAoUR2V0Sm9iU3RhdHVzUmVzcG9uc2USKAoGc3RhdHVzGAEgASgOMhgubWdtdC52MWFscGhhMS5Kb2JTdGF0dXMiVQoPSm9iU3RhdHVzUmVjb3JkEhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQESKAoGc3RhdHVzGAIgASgOMhgubWdtdC52MWFscGhhMS5Kb2JTdGF0dXMiNQoVR2V0Sm9iU3RhdHVzZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIkoKFkdldEpvYlN0YXR1c2VzUmVzcG9uc2USMAoIc3RhdHVzZXMYASADKAsyHi5tZ210LnYxYWxwaGExLkpvYlN0YXR1c1JlY29yZCIiCg9BY3Rpdml0eUZhaWx1cmUSDwoHbWVzc2FnZRgBIAEoCSKjAQoPUGVuZGluZ0FjdGl2aXR5Ei0KBnN0YXR1cxgBIAEoDjIdLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlTdGF0dXMSFQoNYWN0aXZpdHlfbmFtZRgCIAEoCRI5CgxsYXN0X2ZhaWx1cmUYAyABKAsyHi5tZ210LnYxYWxwaGExLkFjdGl2aXR5RmFpbHVyZUgAiAEBQg8KDV9sYXN0X2ZhaWx1cmUimQIKBkpvYlJ1bhIKCgJpZBgBIAEoCRIOCgZqb2JfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIrCgZzdGF0dXMYBCABKA4yGy5tZ210LnYxYWxwaGExLkpvYlJ1blN0YXR1cxIuCgpzdGFydGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESOgoScGVuZGluZ19hY3Rpdml0aWVzGAggAygLMh4ubWdtdC52MWFscGhhMS5QZW5kaW5nQWN0aXZpdHlCDwoNX2NvbXBsZXRlZF9hdEoECAUQBiI8ChRKb2JSdW5FdmVudFRhc2tFcnJvchIPCgdtZXNzYWdlGAEgASgJEhMKC3JldHJ5X3N0YXRlGAIgASgJIo8BCg9Kb2JSdW5FdmVudFRhc2sSCgoCaWQYASABKAMSDAoEdHlwZRgCIAEoCRIuCgpldmVudF90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCgVlcnJvchgEIAEoCzIjLm1nbXQudjFhbHBoYTEuSm9iUnVuRXZlbnRUYXNrRXJyb3IiMwoSSm9iUnVuU3luY01ldGFkYXRhEg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCSJkChNKb2JSdW5FdmVudE1ldGFkYXRhEjoKDXN5bmNfbWV0YWRhdGEYASABKAsyIS5tZ210LnYxYWxwaGExLkpvYlJ1blN5bmNNZXRhZGF0YUgAQhEKCG1ldGFkYXRhEgW6SAIIASLsAQoLSm9iUnVuRXZlbnQSCgoCaWQYASABKAMSDAoEdHlwZRgCIAEoCRIuCgpzdGFydF90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjbG9zZV90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CghtZXRhZGF0YRgFIAEoCzIiLm1nbXQudjFhbHBoYTEuSm9iUnVuRXZlbnRNZXRhZGF0YRItCgV0YXNrcxgGIAMoCzIeLm1nbXQudjFhbHBoYTEuSm9iUnVuRXZlbnRUYXNrIkoKFkdldEpvYlJ1bkV2ZW50c1JlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASJeChdHZXRKb2JSdW5FdmVudHNSZXNwb25zZRIqCgZldmVudHMYASADKAsyGi5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50EhcKD2lzX3J1bl9jb21wbGV0ZRgCIAEoCCJHChNEZWxldGVKb2JSdW5SZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiFgoURGVsZXRlSm9iUnVuUmVzcG9uc2UiSgoWVGVybWluYXRlSm9iUnVuUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBIhkKF1Rlcm1pbmF0ZUpvYlJ1blJlc3BvbnNlIvEBChpHZXRKb2JSdW5Mb2dzU3RyZWFtUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBEigKBndpbmRvdxgDIAEoDjIYLm1nbXQudjFhbHBoYTEuTG9nV2luZG93EhMKC3Nob3VsZF90YWlsGAQgASgIEiMKDW1heF9sb2dfbGluZXMYBSABKANCB7pIBCICKAFIAIgBARIrCgpsb2dfbGV2ZWxzGAYgAygOMhcubWdtdC52MWFscGhhMS5Mb2dMZXZlbEIQCg5fbWF4X2xvZ19saW5lcyLoAQobR2V0Sm9iUnVuTG9nc1N0cmVhbVJlc3BvbnNlEhAKCGxvZ19saW5lGAEgASgJEjIKCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARJGCgZsYWJlbHMYAyADKAsyNi5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkxvZ3NTdHJlYW1SZXNwb25zZS5MYWJlbHNFbnRyeRotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl90aW1lc3RhbXAi1gEKFEdldEpvYlJ1bkxvZ3NSZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQESKAoGd2luZG93GAMgASgOMhgubWdtdC52MWFscGhhMS5Mb2dXaW5kb3cSIwoNbWF4X2xvZ19saW5lcxgEIAEoA0IHukgEIgIoAUgAiAEBEisKCmxvZ19sZXZlbHMYBSADKA4yFy5tZ210LnYxYWxwaGExLkxvZ0xldmVsQhAKDl9tYXhfbG9nX2xpbmVzIrECChVHZXRKb2JSdW5Mb2dzUmVzcG9uc2USPwoJbG9nX2xpbmVzGAEgAygLMiwubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVzcG9uc2UuTG9nTGluZRrWAQoHTG9nTGluZRIQCghsb2dfbGluZRgBIAEoCRIyCgl0aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESSAoGbGFiZWxzGAMgAygLMjgubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVzcG9uc2UuTG9nTGluZS5MYWJlbHNFbnRyeRotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl90aW1lc3RhbXAibgocU2V0Sm9iV29ya2Zsb3dPcHRpb25zUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESOAoQd29yZmtsb3dfb3B0aW9ucxgCIAEoCzIeLm1nbXQudjFhbHBoYTEuV29ya2Zsb3dPcHRpb25zIkAKHVNldEpvYldvcmtmbG93T3B0aW9uc1Jlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iImYKGFNldEpvYlN5bmNPcHRpb25zUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESNAoMc3luY19vcHRpb25zGAIgASgLMh4ubWdtdC52MWFscGhhMS5BY3Rpdml0eU9wdGlvbnMiPAoZU2V0Sm9iU3luY09wdGlvbnNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiKRAgoaVmFsaWRhdGVKb2JNYXBwaW5nc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESKwoIbWFwcGluZ3MYAiADKAsyGS5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmcSHwoNY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESRQoUdmlydHVhbF9mb3JlaWduX2tleXMYBCADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIxCgpqb2Jfc291cmNlGAUgASgLMhgubWdtdC52MWFscGhhMS5Kb2JTb3VyY2VIAIgBAUINCgtfam9iX3NvdXJjZSKrBwoLQ29sdW1uRXJyb3ISDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEg4KBmNvbHVtbhgDIAEoCRISCgZlcnJvcnMYBCADKAlCAhgBEkMKDWVycm9yX3JlcG9ydHMYBSADKAsyLC5tZ210LnYxYWxwaGExLkNvbHVtbkVycm9yLkNvbHVtbkVycm9yUmVwb3J0Gl4KEUNvbHVtbkVycm9yUmVwb3J0EjgKBGNvZGUYASABKA4yKi5tZ210LnYxYWxwaGExLkNvbHVtbkVycm9yLkNvbHVtbkVycm9yQ29kZRIPCgdtZXNzYWdlGAIgASgJIrMFCg9Db2x1bW5FcnJvckNvZGUSIQodQ09MVU1OX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIpCiVDT0xVTU5fRVJST1JfQ09ERV9OT1RfRk9VTkRfSU5fU09VUkNFEAESKgomQ09MVU1OX0VSUk9SX0NPREVfTk9UX0ZPVU5EX0lOX01BUFBJTkcQAhI6CjZDT0xVTU5fRVJST1JfQ09ERV9SRVFVSVJFRF9DT0xVTU5fTk9UX0ZPVU5EX0lOX01BUFBJTkcQAxI/CjtDT0xVTU5fRVJST1JfQ09ERV9SRVFVSVJFRF9GT1JFSUdOX0tFWV9OT1RfRk9VTkRfSU5fTUFQUElORxAEEksKR0NPTFVNTl9FUlJPUl9DT0RFX1VOU1VQUE9SVEVEX0NJUkNVTEFSX0RFUEVOREVOQ1lfQVRfTEVBU1RfT05FX05VTExBQkxFEAUSPAo4Q09MVU1OX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9DT0xVTU5fTk9UX0ZPVU5EX0lOX01BUFBJTkcQBhI7CjdDT0xVTU5fRVJST1JfQ09ERV9WRktfU09VUkNFX0NPTFVNTl9OT1RfRk9VTkRfSU5fU09VUkNFEAcSPAo4Q09MVU1OX0VSUk9SX0NPREVfVkZLX1RBUkdFVF9DT0xVTU5fTk9UX0ZPVU5EX0lOX01BUFBJTkcQCBI7CjdDT0xVTU5fRVJST1JfQ09ERV9WRktfVEFSR0VUX0NPTFVNTl9OT1RfRk9VTkRfSU5fU09VUkNFEAkSMgouQ09MVU1OX0VSUk9SX0NPREVfVkZLX0NPTFVNTl9EQVRBVFlQRV9NSVNNQVRDSBAKEjIKLkNPTFVNTl9FUlJPUl9DT0RFX1ZGS19TT1VSQ0VfQ09MVU1OX05PVF9VTklRVUUQCyKbAwoNQ29sdW1uV2FybmluZxIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSDgoGY29sdW1uGAMgASgJEhQKCHdhcm5pbmdzGAUgAygJQgIYARJJCg93YXJuaW5nX3JlcG9ydHMYBiADKAsyMC5tZ210LnYxYWxwaGExLkNvbHVtbldhcm5pbmcuQ29sdW1uV2FybmluZ1JlcG9ydBpkChNDb2x1bW5XYXJuaW5nUmVwb3J0EjwKBGNvZGUYASABKA4yLi5tZ210LnYxYWxwaGExLkNvbHVtbldhcm5pbmcuQ29sdW1uV2FybmluZ0NvZGUSDwoHbWVzc2FnZRgCIAEoCSKTAQoRQ29sdW1uV2FybmluZ0NvZGUSIwofQ09MVU1OX1dBUk5JTkdfQ09ERV9VTlNQRUNJRklFRBAAEisKJ0NPTFVNTl9XQVJOSU5HX0NPREVfTk9UX0ZPVU5EX0lOX1NPVVJDRRABEiwKKENPTFVNTl9XQVJOSU5HX0NPREVfTk9UX0ZPVU5EX0lOX01BUFBJTkcQAiKJAwoNRGF0YWJhc2VFcnJvchISCgZlcnJvcnMYASADKAlCAhgBEkcKDWVycm9yX3JlcG9ydHMYAiADKAsyMC5tZ210LnYxYWxwaGExLkRhdGFiYXNlRXJyb3IuRGF0YWJhc2VFcnJvclJlcG9ydBpkChNEYXRhYmFzZUVycm9yUmVwb3J0EjwKBGNvZGUYASABKA4yLi5tZ210LnYxYWxwaGExLkRhdGFiYXNlRXJyb3IuRGF0YWJhc2VFcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCSK0AQoRRGF0YWJhc2VFcnJvckNvZGUSIwofREFUQUJBU0VfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEk0KSURBVEFCQVNFX0VSUk9SX0NPREVfVU5TVVBQT1JURURfQ0lSQ1VMQVJfREVQRU5ERU5DWV9BVF9MRUFTVF9PTkVfTlVMTEFCTEUQARIrCidEQVRBQkFTRV9FUlJPUl9DT0RFX1ZGS19DT0xVTU5fTUlTTUFUQ0gQAiKeBAoKVGFibGVFcnJvchIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSQQoNZXJyb3JfcmVwb3J0cxgDIAMoCzIqLm1nbXQudjFhbHBoYTEuVGFibGVFcnJvci5UYWJsZUVycm9yUmVwb3J0GlsKEFRhYmxlRXJyb3JSZXBvcnQSNgoEY29kZRgBIAEoDjIoLm1nbXQudjFhbHBoYTEuVGFibGVFcnJvci5UYWJsZUVycm9yQ29kZRIPCgdtZXNzYWdlGAIgASgJItACCg5UYWJsZUVycm9yQ29kZRIgChxUQUJMRV9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASLgoqVEFCTEVfRVJST1JfQ09ERV9UQUJMRV9OT1RfRk9VTkRfSU5fU09VUkNFEAESOgo2VEFCTEVfRVJST1JfQ09ERV9WRktfU09VUkNFX1RBQkxFX05PVF9GT1VORF9JTl9NQVBQSU5HEAISOQo1VEFCTEVfRVJST1JfQ09ERV9WRktfU09VUkNFX1RBQkxFX05PVF9GT1VORF9JTl9TT1VSQ0UQAxI6CjZUQUJMRV9FUlJPUl9DT0RFX1ZGS19UQVJHRVRfVEFCTEVfTk9UX0ZPVU5EX0lOX01BUFBJTkcQBBI5CjVUQUJMRV9FUlJPUl9DT0RFX1ZGS19UQVJHRVRfVEFCTEVfTk9UX0ZPVU5EX0lOX1NPVVJDRRAFIu8BChtWYWxpZGF0ZUpvYk1hcHBpbmdzUmVzcG9uc2USMQoNY29sdW1uX2Vycm9ycxgBIAMoCzIaLm1nbXQudjFhbHBoYTEuQ29sdW1uRXJyb3ISNQoPZGF0YWJhc2VfZXJyb3JzGAIgASgLMhwubWdtdC52MWFscGhhMS5EYXRhYmFzZUVycm9yEjUKD2NvbHVtbl93YXJuaW5ncxgDIAMoCzIcLm1nbXQudjFhbHBoYTEuQ29sdW1uV2FybmluZxIvCgx0YWJsZV9lcnJvcnMYBCADKAsyGS5tZ210LnYxYWxwaGExLlRhYmxlRXJyb3IiZQoVVmFsaWRhdGVTY2hlbWFSZXF1ZXN0EisKCG1hcHBpbmdzGAEgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEh8KDWNvbm5lY3Rpb25faWQYAiABKAlCCLpIBXIDsAEBIowCChZWYWxpZGF0ZVNjaGVtYVJlc3BvbnNlEjYKD21pc3NpbmdfY29sdW1ucxgBIAMoCzIdLm1nbXQudjFhbHBoYTEuRGF0YWJhc2VDb2x1bW4SNAoNZXh0cmFfY29sdW1ucxgCIAMoCzIdLm1nbXQudjFhbHBoYTEuRGF0YWJhc2VDb2x1bW4SQwoObWlzc2luZ190YWJsZXMYAyADKAsyKy5tZ210LnYxYWxwaGExLlZhbGlkYXRlU2NoZW1hUmVzcG9uc2UuVGFibGUSFwoPbWlzc2luZ19zY2hlbWFzGAQgAygJGiYKBVRhYmxlEg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCSJDChFWaXJ0dWFsRm9yZWlnbktleRIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSDwoHY29sdW1ucxgDIAMoCSKBAQoYVmlydHVhbEZvcmVpZ25Db25zdHJhaW50Eg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCRIPCgdjb2x1bW5zGAMgAygJEjUKC2ZvcmVpZ25fa2V5GAQgASgLMiAubWdtdC52MWFscGhhMS5WaXJ0dWFsRm9yZWlnbktleSJnCg1SdW5Db250ZXh0S2V5EhsKCmpvYl9ydW5faWQYASABKAlCB7pIBHICEAESHAoLZXh0ZXJuYWxfaWQYAiABKAlCB7pIBHICEAESGwoKYWNjb3VudF9pZBgDIAEoCUIHukgEcgIQASJAChRHZXRSdW5Db250ZXh0UmVxdWVzdBIoCgJpZBgBIAEoCzIcLm1nbXQudjFhbHBoYTEuUnVuQ29udGV4dEtleSImChVHZXRSdW5Db250ZXh0UmVzcG9uc2USDQoFdmFsdWUYASABKAwiTwoUU2V0UnVuQ29udGV4dFJlcXVlc3QSKAoCaWQYASABKAsyHC5tZ210LnYxYWxwaGExLlJ1bkNvbnRleHRLZXkSDQoFdmFsdWUYAiABKAwiFwoVU2V0UnVuQ29udGV4dFJlc3BvbnNlIlAKFVNldFJ1bkNvbnRleHRzUmVxdWVzdBIoCgJpZBgBIAEoCzIcLm1nbXQudjFhbHBoYTEuUnVuQ29udGV4dEtleRINCgV2YWx1ZRgCIAEoDCIYChZTZXRSdW5Db250ZXh0c1Jlc3BvbnNlIrwCCgdKb2JIb29rEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDgoGam9iX2lkGAQgASgJEiwKBmNvbmZpZxgFIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iSG9va0NvbmZpZxIaChJjcmVhdGVkX2J5X3VzZXJfaWQYBiABKAkSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXBkYXRlZF9ieV91c2VyX2lkGAggASgJEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB2VuYWJsZWQYCiABKAgSGwoIcHJpb3JpdHkYCyABKA1CCbpIBioEGGQoACKvAQoKTmV3Sm9iSG9vaxInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEhwKC2Rlc2NyaXB0aW9uGAIgASgJQge6SARyAhABEiwKBmNvbmZpZxgDIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iSG9va0NvbmZpZxIPCgdlbmFibGVkGAQgASgIEhsKCHByaW9yaXR5GAUgASgNQgm6SAYqBBhkKAAiiAMKDUpvYkhvb2tDb25maWcSNgoDc3FsGAUgASgLMicubWdtdC52MWFscGhhMS5Kb2JIb29rQ29uZmlnLkpvYlNxbEhvb2tIABqVAgoKSm9iU3FsSG9vaxIWCgVxdWVyeRgBIAEoCUIHukgEcgIQARIfCg1jb25uZWN0aW9uX2lkGAIgASgJQgi6SAVyA7ABARI+CgZ0aW1pbmcYAyABKAsyLi5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcuSm9iU3FsSG9vay5UaW1pbmcajQEKBlRpbWluZxI3CghwcmVfc3luYxgDIAEoCzIjLm1nbXQudjFhbHBoYTEuSm9iSG9va1RpbWluZ1ByZVN5bmNIABI5Cglwb3N0X3N5bmMYBCABKAsyJC5tZ210LnYxYWxwaGExLkpvYkhvb2tUaW1pbmdQb3N0U3luY0gAQg8KBnRpbWluZxIFukgCCAFCDwoGY29uZmlnEgW6SAIIAUoECAEQAkoECAIQA0oECAMQBEoECAQQBSIWChRKb2JIb29rVGltaW5nUHJlU3luYyIXChVKb2JIb29rVGltaW5nUG9zdFN5bmMiLgoSR2V0Sm9iSG9va3NSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQEiPAoTR2V0Sm9iSG9va3NSZXNwb25zZRIlCgVob29rcxgBIAMoCzIWLm1nbXQudjFhbHBoYTEuSm9iSG9vayIpChFHZXRKb2JIb29rUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQEiOgoSR2V0Sm9iSG9va1Jlc3BvbnNlEiQKBGhvb2sYASABKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2siTwoUQ3JlYXRlSm9iSG9va1JlcXVlc3QSDgoGam9iX2lkGAEgASgJEicKBGhvb2sYAiABKAsyGS5tZ210LnYxYWxwaGExLk5ld0pvYkhvb2siPQoVQ3JlYXRlSm9iSG9va1Jlc3BvbnNlEiQKBGhvb2sYASABKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2siLAoURGVsZXRlSm9iSG9va1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIhcKFURlbGV0ZUpvYkhvb2tSZXNwb25zZSI9Ch1Jc0pvYkhvb2tOYW1lQXZhaWxhYmxlUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCSI2Ch5Jc0pvYkhvb2tOYW1lQXZhaWxhYmxlUmVzcG9uc2USFAoMaXNfYXZhaWxhYmxlGAEgASgIIs8BChRVcGRhdGVKb2JIb29rUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESJwoEbmFtZRgCIAEoCUIZukgWchQyEl5bYS16MC05LV17MywxMDB9JBIcCgtkZXNjcmlwdGlvbhgDIAEoCUIHukgEcgIQARIsCgZjb25maWcYBCABKAsyHC5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcSDwoHZW5hYmxlZBgFIAEoCBIbCghwcmlvcml0eRgGIAEoDUIJukgGKgQYZCgAIj0KFVVwZGF0ZUpvYkhvb2tSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIkEKGFNldEpvYkhvb2tFbmFibGVkUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESDwoHZW5hYmxlZBgCIAEoCCJBChlTZXRKb2JIb29rRW5hYmxlZFJlc3BvbnNlEiQKBGhvb2sYASABKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2sizwEKIEdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmdSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQESRgoGdGltaW5nGAIgASgOMjYubWdtdC52MWFscGhhMS5HZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVxdWVzdC5UaW1pbmciSQoGVGltaW5nEhYKElRJTUlOR19VTlNQRUNJRklFRBAAEhIKDlRJTUlOR19QUkVTWU5DEAESEwoPVElNSU5HX1BPU1RTWU5DEAIiSgohR2V0QWN0aXZlSm9iSG9va3NCeVRpbWluZ1Jlc3BvbnNlEiUKBWhvb2tzGAEgAygLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIlkKHEdldFBpaURldGVjdGlvblJlcG9ydFJlcXVlc3QSGwoKam9iX3J1bl9pZBgBIAEoCUIHukgEcgIQARIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASJSCh1HZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXNwb25zZRIxCgZyZXBvcnQYASABKAsyIS5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydCKOBAoSUGlpRGV0ZWN0aW9uUmVwb3J0Ej0KBnRhYmxlcxgBIAMoCzItLm1nbXQudjFhbHBoYTEuUGlpRGV0ZWN0aW9uUmVwb3J0LlRhYmxlUmVwb3J0GrgDCgtUYWJsZVJlcG9ydBIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSSwoHY29sdW1ucxgDIAMoCzI6Lm1nbXQudjFhbHBoYTEuUGlpRGV0ZWN0aW9uUmVwb3J0LlRhYmxlUmVwb3J0LkNvbHVtblJlcG9ydBq8AgoMQ29sdW1uUmVwb3J0Eg4KBmNvbHVtbhgBIAEoCRJbCgxyZWdleF9yZXBvcnQYAiABKAsyQC5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydC5UYWJsZVJlcG9ydC5Db2x1bW5SZXBvcnQuUmVnZXhIAIgBARJXCgpsbG1fcmVwb3J0GAMgASgLMj4ubWdtdC52MWFscGhhMS5QaWlEZXRlY3Rpb25SZXBvcnQuVGFibGVSZXBvcnQuQ29sdW1uUmVwb3J0LkxMTUgBiAEBGhkKBVJlZ2V4EhAKCGNhdGVnb3J5GAEgASgJGisKA0xMTRIQCghjYXRlZ29yeRgBIAEoCRISCgpjb25maWRlbmNlGAIgASgCQg8KDV9yZWdleF9yZXBvcnRCDQoLX2xsbV9yZXBvcnQqbwoJSm9iU3RhdHVzEhoKFkpPQl9TVEFUVVNfVU5TUEVDSUZJRUQQABIWChJKT0JfU1RBVFVTX0VOQUJMRUQQARIVChFKT0JfU1RBVFVTX1BBVVNFRBADEhcKE0pPQl9TVEFUVVNfRElTQUJMRUQQBCqnAQoOQWN0aXZpdHlTdGF0dXMSHwobQUNUSVZJVFlfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHQoZQUNUSVZJVFlfU1RBVFVTX1NDSEVEVUxFRBABEhsKF0FDVElWSVRZX1NUQVRVU19TVEFSVEVEEAISHAoYQUNUSVZJVFlfU1RBVFVTX0NBTkNFTEVEEAMSGgoWQUNUSVZJVFlfU1RBVFVTX0ZBSUxFRBAEKpICCgxKb2JSdW5TdGF0dXMSHgoaSk9CX1JVTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZKT0JfUlVOX1NUQVRVU19QRU5ESU5HEAESGgoWSk9CX1JVTl9TVEFUVVNfUlVOTklORxACEhsKF0pPQl9SVU5fU1RBVFVTX0NPTVBMRVRFEAMSGAoUSk9CX1JVTl9TVEFUVVNfRVJST1IQBBIbChdKT0JfUlVOX1NUQVRVU19DQU5DRUxFRBAFEh0KGUpPQl9SVU5fU1RBVFVTX1RFUk1JTkFURUQQBhIZChVKT0JfUlVOX1NUQVRVU19GQUlMRUQQBxIcChhKT0JfUlVOX1NUQVRVU19USU1FRF9PVVQQCCp8CglMb2dXaW5kb3cSIgoeTE9HX1dJTkRPV19OT19USU1FX1VOU1BFQ0lGSUVEEAASGgoWTE9HX1dJTkRPV19GSUZURUVOX01JThABEhcKE0xPR19XSU5ET1dfT05FX0hPVVIQAhIWChJMT0dfV0lORE9XX09ORV9EQVkQAyp3CghMb2dMZXZlbBIZChVMT0dfTEVWRUxfVU5TUEVDSUZJRUQQABITCg9MT0dfTEVWRUxfREVCVUcQARISCg5MT0dfTEVWRUxfSU5GTxACEhIKDkxPR19MRVZFTF9XQVJOEAMSEwoPTE9HX0xFVkVMX0VSUk9SEAQysCEKCkpvYlNlcnZpY2USTQoHR2V0Sm9icxIdLm1nbXQudjFhbHBoYTEuR2V0Sm9ic1JlcXVlc3QaHi5tZ210LnYxYWxwaGExLkdldEpvYnNSZXNwb25zZSIDkAIBEkoKBkdldEpvYhIcLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVxdWVzdBodLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVzcG9uc2UiA5ACARJQCglDcmVhdGVKb2ISHy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJlcXVlc3QaIC5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJlc3BvbnNlIgASUAoJRGVsZXRlSm9iEh8ubWdtdC52MWFscGhhMS5EZWxldGVKb2JSZXF1ZXN0GiAubWdtdC52MWFscGhhMS5EZWxldGVKb2JSZXNwb25zZSIAEm4KEklzSm9iTmFtZUF2YWlsYWJsZRIoLm1nbXQudjFhbHBoYTEuSXNKb2JOYW1lQXZhaWxhYmxlUmVxdWVzdBopLm1nbXQudjFhbHBoYTEuSXNKb2JOYW1lQXZhaWxhYmxlUmVzcG9uc2UiA5ACARJoChFVcGRhdGVKb2JTY2hlZHVsZRInLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iU2NoZWR1bGVSZXF1ZXN0GigubWdtdC52MWFscGhhMS5VcGRhdGVKb2JTY2hlZHVsZVJlc3BvbnNlIgASgAEKGVVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb24SLy5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb25SZXF1ZXN0GjAubWdtdC52MWFscGhhMS5VcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVzcG9uc2UiABKVAQogU2V0Sm9iU291cmNlU3FsQ29ubmVjdGlvblN1YnNldHMSNi5tZ210LnYxYWxwaGExLlNldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzUmVxdWVzdBo3Lm1nbXQudjFhbHBoYTEuU2V0Sm9iU291cmNlU3FsQ29ubmVjdGlvblN1YnNldHNSZXNwb25zZSIAEo8BCh5VcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb24SNC5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlcXVlc3QaNS5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlIgASjwEKHkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbhI0Lm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uUmVxdWVzdBo1Lm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uUmVzcG9uc2UiABKSAQofQ3JlYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9ucxI1Lm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uc1JlcXVlc3QaNi5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnNSZXNwb25zZSIAEk0KCFBhdXNlSm9iEh4ubWdtdC52MWFscGhhMS5QYXVzZUpvYlJlcXVlc3QaHy5tZ210LnYxYWxwaGExLlBhdXNlSm9iUmVzcG9uc2UiABJoChBHZXRKb2JSZWNlbnRSdW5zEiYubWdtdC52MWFscGhhMS5HZXRKb2JSZWNlbnRSdW5zUmVxdWVzdBonLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVjZW50UnVuc1Jlc3BvbnNlIgOQAgESYgoOR2V0Sm9iTmV4dFJ1bnMSJC5tZ210LnYxYWxwaGExLkdldEpvYk5leHRSdW5zUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuR2V0Sm9iTmV4dFJ1bnNSZXNwb25zZSIDkAIBElwKDEdldEpvYlN0YXR1cxIiLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzUmVxdWVzdBojLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzUmVzcG9uc2UiA5ACARJiCg5HZXRKb2JTdGF0dXNlcxIkLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzZXNSZXF1ZXN0GiUubWdtdC52MWFscGhhMS5HZXRKb2JTdGF0dXNlc1Jlc3BvbnNlIgOQAgESVgoKR2V0Sm9iUnVucxIgLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuc1JlcXVlc3QaIS5tZ210LnYxYWxwaGExLkdldEpvYlJ1bnNSZXNwb25zZSIDkAIBEmUKD0dldEpvYlJ1bkV2ZW50cxIlLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuRXZlbnRzUmVxdWVzdBomLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuRXZlbnRzUmVzcG9uc2UiA5ACARJTCglHZXRKb2JSdW4SHy5tZ210LnYxYWxwaGExLkdldEpvYlJ1blJlcXVlc3QaIC5tZ210LnYxYWxwaGExLkdldEpvYlJ1blJlc3BvbnNlIgOQAgESWQoMRGVsZXRlSm9iUnVuEiIubWdtdC52MWFscGhhMS5EZWxldGVKb2JSdW5SZXF1ZXN0GiMubWdtdC52MWFscGhhMS5EZWxldGVKb2JSdW5SZXNwb25zZSIAElkKDENyZWF0ZUpvYlJ1bhIiLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iUnVuUmVxdWVzdBojLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iUnVuUmVzcG9uc2UiABJZCgxDYW5jZWxKb2JSdW4SIi5tZ210LnYxYWxwaGExLkNhbmNlbEpvYlJ1blJlcXVlc3QaIy5tZ210LnYxYWxwaGExLkNhbmNlbEpvYlJ1blJlc3BvbnNlIgASYgoPVGVybWluYXRlSm9iUnVuEiUubWdtdC52MWFscGhhMS5UZXJtaW5hdGVKb2JSdW5SZXF1ZXN0GiYubWdtdC52MWFscGhhMS5UZXJtaW5hdGVKb2JSdW5SZXNwb25zZSIAEnAKE0dldEpvYlJ1bkxvZ3NTdHJlYW0SKS5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkxvZ3NTdHJlYW1SZXF1ZXN0GioubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzU3RyZWFtUmVzcG9uc2UiADABElwKDUdldEpvYlJ1bkxvZ3MSIy5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkxvZ3NSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVzcG9uc2UiABJ0ChVTZXRKb2JXb3JrZmxvd09wdGlvbnMSKy5tZ210LnYxYWxwaGExLlNldEpvYldvcmtmbG93T3B0aW9uc1JlcXVlc3QaLC5tZ210LnYxYWxwaGExLlNldEpvYldvcmtmbG93T3B0aW9uc1Jlc3BvbnNlIgASaAoRU2V0Sm9iU3luY09wdGlvbnMSJy5tZ210LnYxYWxwaGExLlNldEpvYlN5bmNPcHRpb25zUmVxdWVzdBooLm1nbXQudjFhbHBoYTEuU2V0Sm9iU3luY09wdGlvbnNSZXNwb25zZSIAEm4KE1ZhbGlkYXRlSm9iTWFwcGluZ3MSKS5tZ210LnYxYWxwaGExLlZhbGlkYXRlSm9iTWFwcGluZ3NSZXF1ZXN0GioubWdtdC52MWFscGhhMS5WYWxpZGF0ZUpvYk1hcHBpbmdzUmVzcG9uc2UiABJfCg5WYWxpZGF0ZVNjaGVtYRIkLm1nbXQudjFhbHBoYTEuVmFsaWRhdGVTY2hlbWFSZXF1ZXN0GiUubWdtdC52MWFscGhhMS5WYWxpZGF0ZVNjaGVtYVJlc3BvbnNlIgASXAoNR2V0UnVuQ29udGV4dBIjLm1nbXQudjFhbHBoYTEuR2V0UnVuQ29udGV4dFJlcXVlc3QaJC5tZ210LnYxYWxwaGExLkdldFJ1bkNvbnRleHRSZXNwb25zZSIAElwKDVNldFJ1bkNvbnRleHQSIy5tZ210LnYxYWxwaGExLlNldFJ1bkNvbnRleHRSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5TZXRSdW5Db250ZXh0UmVzcG9uc2UiABJhCg5TZXRSdW5Db250ZXh0cxIkLm1nbXQudjFhbHBoYTEuU2V0UnVuQ29udGV4dHNSZXF1ZXN0GiUubWdtdC52MWFscGhhMS5TZXRSdW5Db250ZXh0c1Jlc3BvbnNlIgAoARJZCgtHZXRKb2JIb29rcxIhLm1nbXQudjFhbHBoYTEuR2V0Sm9iSG9va3NSZXF1ZXN0GiIubWdtdC52MWFscGhhMS5HZXRKb2JIb29rc1Jlc3BvbnNlIgOQAgESVgoKR2V0Sm9iSG9vaxIgLm1nbXQudjFhbHBoYTEuR2V0Sm9iSG9va1JlcXVlc3QaIS5tZ210LnYxYWxwaGExLkdldEpvYkhvb2tSZXNwb25zZSIDkAIBElwKDUNyZWF0ZUpvYkhvb2sSIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkhvb2tSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5DcmVhdGVKb2JIb29rUmVzcG9uc2UiABJcCg1EZWxldGVKb2JIb29rEiMubWdtdC52MWFscGhhMS5EZWxldGVKb2JIb29rUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iSG9va1Jlc3BvbnNlIgASdwoWSXNKb2JIb29rTmFtZUF2YWlsYWJsZRIsLm1nbXQudjFhbHBoYTEuSXNKb2JIb29rTmFtZUF2YWlsYWJsZVJlcXVlc3QaLS5tZ210LnYxYWxwaGExLklzSm9iSG9va05hbWVBdmFpbGFibGVSZXNwb25zZSIAElwKDVVwZGF0ZUpvYkhvb2sSIy5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYkhvb2tSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5VcGRhdGVKb2JIb29rUmVzcG9uc2UiABJoChFTZXRKb2JIb29rRW5hYmxlZBInLm1nbXQudjFhbHBoYTEuU2V0Sm9iSG9va0VuYWJsZWRSZXF1ZXN0GigubWdtdC52MWFscGhhMS5TZXRKb2JIb29rRW5hYmxlZFJlc3BvbnNlIgASgwEKGUdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmcSLy5tZ210LnYxYWxwaGExLkdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmdSZXF1ZXN0GjAubWdtdC52MWFscGhhMS5HZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVzcG9uc2UiA5ACARJ3ChVHZXRQaWlEZXRlY3Rpb25SZXBvcnQSKy5tZ210LnYxYWxwaGExLkdldFBpaURldGVjdGlvblJlcG9ydFJlcXVlc3QaLC5tZ210LnYxYWxwaGExLkdldFBpaURldGVjdGlvblJlcG9ydFJlc3BvbnNlIgOQAgFCxAEKEWNvbS5tZ210LnYxYWxwaGExQghKb2JQcm90b1ABWlBnaXRodWIuY29tL251Y2xldXNjbG91ZC9uZW9zeW5jL2JhY2tlbmQvZ2VuL2dvL3Byb3Rvcy9tZ210L3YxYWxwaGExO21nbXR2MWFscGhhMaICA01YWKoCDU1nbXQuVjFhbHBoYTHKAg1NZ210XFYxYWxwaGEx4gIZTWdtdFxWMWFscGhhMVxHUEJNZXRhZGF0YeoCDk1nbXQ6OlYxYWxwaGExYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_mgmt_v1alpha1_connection_data, file_mgmt_v1alpha1_transformer]); + fileDesc("ChdtZ210L3YxYWxwaGExL2pvYi5wcm90bxINbWdtdC52MWFscGhhMSIuCg5HZXRKb2JzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASIzCg9HZXRKb2JzUmVzcG9uc2USIAoEam9icxgBIAMoCzISLm1nbXQudjFhbHBoYTEuSm9iIkUKCUpvYlNvdXJjZRI4CgdvcHRpb25zGAEgASgLMh8ubWdtdC52MWFscGhhMS5Kb2JTb3VyY2VPcHRpb25zQga6SAPIAQEioQQKEEpvYlNvdXJjZU9wdGlvbnMSQgoIcG9zdGdyZXMYASABKAsyLi5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABI9CgZhd3NfczMYAiABKAsyKy5tZ210LnYxYWxwaGExLkF3c1MzU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABI8CgVteXNxbBgDIAEoCzIrLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9uc0gAEjgKCGdlbmVyYXRlGAQgASgLMiQubWdtdC52MWFscGhhMS5HZW5lcmF0ZVNvdXJjZU9wdGlvbnNIABI9CgthaV9nZW5lcmF0ZRgFIAEoCzImLm1nbXQudjFhbHBoYTEuQWlHZW5lcmF0ZVNvdXJjZU9wdGlvbnNIABJACgdtb25nb2RiGAYgASgLMi0ubWdtdC52MWFscGhhMS5Nb25nb0RCU291cmNlQ29ubmVjdGlvbk9wdGlvbnNIABJCCghkeW5hbW9kYhgHIAEoCzIuLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VDb25uZWN0aW9uT3B0aW9uc0gAEjwKBW1zc3FsGAggASgLMisubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zSABCDwoGY29uZmlnEgW6SAIIASJuChRDcmVhdGVKb2JEZXN0aW5hdGlvbhIfCg1jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABARI1CgdvcHRpb25zGAIgASgLMiQubWdtdC52MWFscGhhMS5Kb2JEZXN0aW5hdGlvbk9wdGlvbnMidAoOSm9iRGVzdGluYXRpb24SHwoNY29ubmVjdGlvbl9pZBgBIAEoCUIIukgFcgOwAQESNQoHb3B0aW9ucxgCIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iRGVzdGluYXRpb25PcHRpb25zEgoKAmlkGAMgASgJIt0CChdBaUdlbmVyYXRlU291cmNlT3B0aW9ucxIiChBhaV9jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABARJGCgdzY2hlbWFzGAIgAygLMisubWdtdC52MWFscGhhMS5BaUdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uQgi6SAWSAQIIARIuChdma19zb3VyY2VfY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQFIAIgBARIbCgptb2RlbF9uYW1lGAQgASgJQge6SARyAhABEhgKC3VzZXJfcHJvbXB0GAUgASgJSAGIAQESKwoTZ2VuZXJhdGVfYmF0Y2hfc2l6ZRgGIAEoA0IJukgGIgQYZCgBSAKIAQFCGgoYX2ZrX3NvdXJjZV9jb25uZWN0aW9uX2lkQg4KDF91c2VyX3Byb21wdEIWChRfZ2VuZXJhdGVfYmF0Y2hfc2l6ZSJ9ChxBaUdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARJECgZ0YWJsZXMYAiADKAsyKi5tZ210LnYxYWxwaGExLkFpR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiVAobQWlHZW5lcmF0ZVNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEh0KCXJvd19jb3VudBgCIAEoA0IKukgHIgUY6AcoASKvAQoVR2VuZXJhdGVTb3VyY2VPcHRpb25zEkQKB3NjaGVtYXMYASADKAsyKS5tZ210LnYxYWxwaGExLkdlbmVyYXRlU291cmNlU2NoZW1hT3B0aW9uQgi6SAWSAQIIARIuChdma19zb3VyY2VfY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQFIAIgBAUIaChhfZmtfc291cmNlX2Nvbm5lY3Rpb25faWRKBAgCEAMieQoaR2VuZXJhdGVTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEkIKBnRhYmxlcxgCIAMoCzIoLm1nbXQudjFhbHBoYTEuR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiTwoZR2VuZXJhdGVTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIaCglyb3dfY291bnQYAiABKANCB7pIBCICKAEiQQoeTW9uZ29EQlNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEh8KDWNvbm5lY3Rpb25faWQYASABKAlCCLpIBXIDsAEBIu8BCh9EeW5hbW9EQlNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEh8KDWNvbm5lY3Rpb25faWQYASABKAlCCLpIBXIDsAEBEjgKBnRhYmxlcxgCIAMoCzIoLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VUYWJsZU9wdGlvbhJRChN1bm1hcHBlZF90cmFuc2Zvcm1zGAMgASgLMjQubWdtdC52MWFscGhhMS5EeW5hbW9EQlNvdXJjZVVubWFwcGVkVHJhbnNmb3JtQ29uZmlnEh4KFmVuYWJsZV9jb25zaXN0ZW50X3JlYWQYBCABKAgi/QEKJUR5bmFtb0RCU291cmNlVW5tYXBwZWRUcmFuc2Zvcm1Db25maWcSLwoBYhgBIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVyEjUKB2Jvb2xlYW4YAiABKAsyJC5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmdUcmFuc2Zvcm1lchIvCgFuGAQgASgLMiQubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nVHJhbnNmb3JtZXISLwoBcxgGIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZ1RyYW5zZm9ybWVySgQIAxAESgQIBRAGIl8KGUR5bmFtb0RCU291cmNlVGFibGVPcHRpb24SFgoFdGFibGUYASABKAlCB7pIBHICEAESGQoMd2hlcmVfY2xhdXNlGAIgASgJSACIAQFCDwoNX3doZXJlX2NsYXVzZSKeBwofUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxI6CgdzY2hlbWFzGAIgAygLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSbgocbmV3X2NvbHVtbl9hZGRpdGlvbl9zdHJhdGVneRgFIAEoCzJILm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5EmUKF2NvbHVtbl9yZW1vdmFsX3N0cmF0ZWd5GAYgASgLMkQubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZUNvbm5lY3Rpb25PcHRpb25zLkNvbHVtblJlbW92YWxTdHJhdGVneRqJAgoZTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRJkCghoYWx0X2pvYhgBIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkhhbHRKb2JIABJkCghhdXRvX21hcBgCIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkF1dG9NYXBIABoJCgdIYWx0Sm9iGgkKB0F1dG9NYXBCCgoIc3RyYXRlZ3kaiQIKFUNvbHVtblJlbW92YWxTdHJhdGVneRJgCghoYWx0X2pvYhgBIAEoCzJMLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5Db2x1bW5SZW1vdmFsU3RyYXRlZ3kuSGFsdEpvYkgAEmgKDGNvbnRpbnVlX2pvYhgCIAEoCzJQLm1nbXQudjFhbHBoYTEuUG9zdGdyZXNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5Db2x1bW5SZW1vdmFsU3RyYXRlZ3kuQ29udGludWVKb2JIABoJCgdIYWx0Sm9iGg0KC0NvbnRpbnVlSm9iQgoKCHN0cmF0ZWd5SgQIARACInkKGlBvc3RncmVzU291cmNlU2NoZW1hT3B0aW9uEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARJCCgZ0YWJsZXMYAiADKAsyKC5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlVGFibGVPcHRpb25CCLpIBZIBAggBIl8KGVBvc3RncmVzU291cmNlVGFibGVPcHRpb24SFgoFdGFibGUYASABKAlCB7pIBHICEAESGQoMd2hlcmVfY2xhdXNlGAIgASgJSACIAQFCDwoNX3doZXJlX2NsYXVzZSKpBwocTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxInChtoYWx0X29uX25ld19jb2x1bW5fYWRkaXRpb24YASABKAhCAhgBEjcKB3NjaGVtYXMYAiADKAsyJi5tZ210LnYxYWxwaGExLk15c3FsU291cmNlU2NoZW1hT3B0aW9uEh8KDWNvbm5lY3Rpb25faWQYAyABKAlCCLpIBXIDsAEBEikKIXN1YnNldF9ieV9mb3JlaWduX2tleV9jb25zdHJhaW50cxgEIAEoCBJiChdjb2x1bW5fcmVtb3ZhbF9zdHJhdGVneRgFIAEoCzJBLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5Db2x1bW5SZW1vdmFsU3RyYXRlZ3kSawocbmV3X2NvbHVtbl9hZGRpdGlvbl9zdHJhdGVneRgGIAEoCzJFLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5GoMCChVDb2x1bW5SZW1vdmFsU3RyYXRlZ3kSXQoIaGFsdF9qb2IYASABKAsySS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkhhbHRKb2JIABJlCgxjb250aW51ZV9qb2IYAiABKAsyTS5tZ210LnYxYWxwaGExLk15c3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkNvbnRpbnVlSm9iSAAaCQoHSGFsdEpvYhoNCgtDb250aW51ZUpvYkIKCghzdHJhdGVneRqDAgoZTmV3Q29sdW1uQWRkaXRpb25TdHJhdGVneRJhCghoYWx0X2pvYhgBIAEoCzJNLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkhhbHRKb2JIABJhCghhdXRvX21hcBgCIAEoCzJNLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VDb25uZWN0aW9uT3B0aW9ucy5OZXdDb2x1bW5BZGRpdGlvblN0cmF0ZWd5LkF1dG9NYXBIABoJCgdIYWx0Sm9iGgkKB0F1dG9NYXBCCgoIc3RyYXRlZ3kicwoXTXlzcWxTb3VyY2VTY2hlbWFPcHRpb24SFwoGc2NoZW1hGAEgASgJQge6SARyAhABEj8KBnRhYmxlcxgCIAMoCzIlLm1nbXQudjFhbHBoYTEuTXlzcWxTb3VyY2VUYWJsZU9wdGlvbkIIukgFkgECCAEiXAoWTXlzcWxTb3VyY2VUYWJsZU9wdGlvbhIWCgV0YWJsZRgBIAEoCUIHukgEcgIQARIZCgx3aGVyZV9jbGF1c2UYAiABKAlIAIgBAUIPCg1fd2hlcmVfY2xhdXNlIrIEChxNc3NxbFNvdXJjZUNvbm5lY3Rpb25PcHRpb25zEiMKG2hhbHRfb25fbmV3X2NvbHVtbl9hZGRpdGlvbhgBIAEoCBI3CgdzY2hlbWFzGAIgAygLMiYubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVNjaGVtYU9wdGlvbhIfCg1jb25uZWN0aW9uX2lkGAMgASgJQgi6SAVyA7ABARIpCiFzdWJzZXRfYnlfZm9yZWlnbl9rZXlfY29uc3RyYWludHMYBCABKAgSYgoXY29sdW1uX3JlbW92YWxfc3RyYXRlZ3kYBSABKAsyQS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5GoMCChVDb2x1bW5SZW1vdmFsU3RyYXRlZ3kSXQoIaGFsdF9qb2IYASABKAsySS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkhhbHRKb2JIABJlCgxjb250aW51ZV9qb2IYAiABKAsyTS5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlQ29ubmVjdGlvbk9wdGlvbnMuQ29sdW1uUmVtb3ZhbFN0cmF0ZWd5LkNvbnRpbnVlSm9iSAAaCQoHSGFsdEpvYhoNCgtDb250aW51ZUpvYkIKCghzdHJhdGVneSJzChdNc3NxbFNvdXJjZVNjaGVtYU9wdGlvbhIXCgZzY2hlbWEYASABKAlCB7pIBHICEAESPwoGdGFibGVzGAIgAygLMiUubWdtdC52MWFscGhhMS5Nc3NxbFNvdXJjZVRhYmxlT3B0aW9uQgi6SAWSAQIIASJcChZNc3NxbFNvdXJjZVRhYmxlT3B0aW9uEhYKBXRhYmxlGAEgASgJQge6SARyAhABEhkKDHdoZXJlX2NsYXVzZRgCIAEoCUgAiAEBQg8KDV93aGVyZV9jbGF1c2UiPwocQXdzUzNTb3VyY2VDb25uZWN0aW9uT3B0aW9ucxIfCg1jb25uZWN0aW9uX2lkGAEgASgJQgi6SAVyA7ABASLbBAoVSm9iRGVzdGluYXRpb25PcHRpb25zEk8KEHBvc3RncmVzX29wdGlvbnMYASABKAsyMy5tZ210LnYxYWxwaGExLlBvc3RncmVzRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9uc0gAEkoKDmF3c19zM19vcHRpb25zGAIgASgLMjAubWdtdC52MWFscGhhMS5Bd3NTM0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnNIABJJCg1teXNxbF9vcHRpb25zGAMgASgLMjAubWdtdC52MWFscGhhMS5NeXNxbERlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnNIABJNCg9tb25nb2RiX29wdGlvbnMYBCABKAsyMi5tZ210LnYxYWxwaGExLk1vbmdvREJEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASXgoYZ2NwX2Nsb3Vkc3RvcmFnZV9vcHRpb25zGAUgASgLMjoubWdtdC52MWFscGhhMS5HY3BDbG91ZFN0b3JhZ2VEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASTwoQZHluYW1vZGJfb3B0aW9ucxgGIAEoCzIzLm1nbXQudjFhbHBoYTEuRHluYW1vREJEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSAASSQoNbXNzcWxfb3B0aW9ucxgHIAEoCzIwLm1nbXQudjFhbHBoYTEuTXNzcWxEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zSABCDwoGY29uZmlnEgW6SAIIASIlCiNNb25nb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucyItCitHY3BDbG91ZFN0b3JhZ2VEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zIm4KJER5bmFtb0RCRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxJGCg50YWJsZV9tYXBwaW5ncxgBIAMoCzIuLm1nbXQudjFhbHBoYTEuRHluYW1vREJEZXN0aW5hdGlvblRhYmxlTWFwcGluZyJSCh9EeW5hbW9EQkRlc3RpbmF0aW9uVGFibGVNYXBwaW5nEhQKDHNvdXJjZV90YWJsZRgBIAEoCRIZChFkZXN0aW5hdGlvbl90YWJsZRgCIAEoCSLKAgokUG9zdGdyZXNEZXN0aW5hdGlvbkNvbm5lY3Rpb25PcHRpb25zEkIKDnRydW5jYXRlX3RhYmxlGAEgASgLMioubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1RydW5jYXRlVGFibGVDb25maWcSGQoRaW5pdF90YWJsZV9zY2hlbWEYAiABKAgSPAoLb25fY29uZmxpY3QYAyABKAsyJy5tZ210LnYxYWxwaGExLlBvc3RncmVzT25Db25mbGljdENvbmZpZxIjChtza2lwX2ZvcmVpZ25fa2V5X3Zpb2xhdGlvbnMYBCABKAgSKQoFYmF0Y2gYBSABKAsyGi5tZ210LnYxYWxwaGExLkJhdGNoQ29uZmlnEiMKDW1heF9pbl9mbGlnaHQYBiABKA1CB7pIBCoCKAFIAIgBAUIQCg5fbWF4X2luX2ZsaWdodCKsAgoYUG9zdGdyZXNPbkNvbmZsaWN0Q29uZmlnEhYKCmRvX25vdGhpbmcYASABKAhCAhgBElYKB25vdGhpbmcYAiABKAsyQy5tZ210LnYxYWxwaGExLlBvc3RncmVzT25Db25mbGljdENvbmZpZy5Qb3N0Z3Jlc09uQ29uZmxpY3REb05vdGhpbmdIABJSCgZ1cGRhdGUYAyABKAsyQC5tZ210LnYxYWxwaGExLlBvc3RncmVzT25Db25mbGljdENvbmZpZy5Qb3N0Z3Jlc09uQ29uZmxpY3RVcGRhdGVIABodChtQb3N0Z3Jlc09uQ29uZmxpY3REb05vdGhpbmcaGgoYUG9zdGdyZXNPbkNvbmZsaWN0VXBkYXRlQhEKCHN0cmF0ZWd5EgW6SAIIACJOChtQb3N0Z3Jlc1RydW5jYXRlVGFibGVDb25maWcSHgoWdHJ1bmNhdGVfYmVmb3JlX2luc2VydBgBIAEoCBIPCgdjYXNjYWRlGAIgASgIIsECCiFNeXNxbERlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMSPwoOdHJ1bmNhdGVfdGFibGUYASABKAsyJy5tZ210LnYxYWxwaGExLk15c3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIZChFpbml0X3RhYmxlX3NjaGVtYRgCIAEoCBI5Cgtvbl9jb25mbGljdBgDIAEoCzIkLm1nbXQudjFhbHBoYTEuTXlzcWxPbkNvbmZsaWN0Q29uZmlnEiMKG3NraXBfZm9yZWlnbl9rZXlfdmlvbGF0aW9ucxgEIAEoCBIpCgViYXRjaBgFIAEoCzIaLm1nbXQudjFhbHBoYTEuQmF0Y2hDb25maWcSIwoNbWF4X2luX2ZsaWdodBgGIAEoDUIHukgEKgIoAUgAiAEBQhAKDl9tYXhfaW5fZmxpZ2h0IjoKGE15c3FsVHJ1bmNhdGVUYWJsZUNvbmZpZxIeChZ0cnVuY2F0ZV9iZWZvcmVfaW5zZXJ0GAEgASgIIpMCChVNeXNxbE9uQ29uZmxpY3RDb25maWcSEgoKZG9fbm90aGluZxgBIAEoCBJQCgdub3RoaW5nGAIgASgLMj0ubWdtdC52MWFscGhhMS5NeXNxbE9uQ29uZmxpY3RDb25maWcuTXlzcWxPbkNvbmZsaWN0RG9Ob3RoaW5nSAASTAoGdXBkYXRlGAMgASgLMjoubWdtdC52MWFscGhhMS5NeXNxbE9uQ29uZmxpY3RDb25maWcuTXlzcWxPbkNvbmZsaWN0VXBkYXRlSAAaGgoYTXlzcWxPbkNvbmZsaWN0RG9Ob3RoaW5nGhcKFU15c3FsT25Db25mbGljdFVwZGF0ZUIRCghzdHJhdGVneRIFukgCCAAiwQIKIU1zc3FsRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxI/Cg50cnVuY2F0ZV90YWJsZRgBIAEoCzInLm1nbXQudjFhbHBoYTEuTXNzcWxUcnVuY2F0ZVRhYmxlQ29uZmlnEhkKEWluaXRfdGFibGVfc2NoZW1hGAIgASgIEjkKC29uX2NvbmZsaWN0GAMgASgLMiQubWdtdC52MWFscGhhMS5Nc3NxbE9uQ29uZmxpY3RDb25maWcSIwobc2tpcF9mb3JlaWduX2tleV92aW9sYXRpb25zGAQgASgIEikKBWJhdGNoGAUgASgLMhoubWdtdC52MWFscGhhMS5CYXRjaENvbmZpZxIjCg1tYXhfaW5fZmxpZ2h0GAYgASgNQge6SAQqAigBSACIAQFCEAoOX21heF9pbl9mbGlnaHQiOgoYTXNzcWxUcnVuY2F0ZVRhYmxlQ29uZmlnEh4KFnRydW5jYXRlX2JlZm9yZV9pbnNlcnQYASABKAgiKwoVTXNzcWxPbkNvbmZsaWN0Q29uZmlnEhIKCmRvX25vdGhpbmcYASABKAgijgQKIUF3c1MzRGVzdGluYXRpb25Db25uZWN0aW9uT3B0aW9ucxJUCg1zdG9yYWdlX2NsYXNzGAEgASgOMj0ubWdtdC52MWFscGhhMS5Bd3NTM0Rlc3RpbmF0aW9uQ29ubmVjdGlvbk9wdGlvbnMuU3RvcmFnZUNsYXNzEiMKDW1heF9pbl9mbGlnaHQYAiABKA1CB7pIBCoCKAFIAIgBARIUCgd0aW1lb3V0GAMgASgJSAGIAQESKQoFYmF0Y2gYBCABKAsyGi5tZ210LnYxYWxwaGExLkJhdGNoQ29uZmlnIo4CCgxTdG9yYWdlQ2xhc3MSHQoZU1RPUkFHRV9DTEFTU19VTlNQRUNJRklFRBAAEhoKFlNUT1JBR0VfQ0xBU1NfU1RBTkRBUkQQARIkCiBTVE9SQUdFX0NMQVNTX1JFRFVDRURfUkVEVU5EQU5DWRACEhkKFVNUT1JBR0VfQ0xBU1NfR0xBQ0lFUhADEh0KGVNUT1JBR0VfQ0xBU1NfU1RBTkRBUkRfSUEQBBIcChhTVE9SQUdFX0NMQVNTX09ORVpPTkVfSUEQBRIlCiFTVE9SQUdFX0NMQVNTX0lOVEVMTElHRU5UX1RJRVJJTkcQBhIeChpTVE9SQUdFX0NMQVNTX0RFRVBfQVJDSElWRRAHQhAKDl9tYXhfaW5fZmxpZ2h0QgoKCF90aW1lb3V0IksKC0JhdGNoQ29uZmlnEhIKBWNvdW50GAEgASgNSACIAQESEwoGcGVyaW9kGAIgASgJSAGIAQFCCAoGX2NvdW50QgkKB19wZXJpb2QihwcKEENyZWF0ZUpvYlJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESKwoIam9iX25hbWUYAiABKAlCGbpIFnIUMhJeW2EtejAtOS1dezMsMTAwfSQSGgoNY3Jvbl9zY2hlZHVsZRgDIAEoCUgAiAEBEisKCG1hcHBpbmdzGAQgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEigKBnNvdXJjZRgFIAEoCzIYLm1nbXQudjFhbHBoYTEuSm9iU291cmNlEjkKDGRlc3RpbmF0aW9ucxgGIAMoCzIjLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iRGVzdGluYXRpb24SGAoQaW5pdGlhdGVfam9iX3J1bhgHIAEoCBI4ChB3b3JrZmxvd19vcHRpb25zGAggASgLMh4ubWdtdC52MWFscGhhMS5Xb3JrZmxvd09wdGlvbnMSNAoMc3luY19vcHRpb25zGAkgASgLMh4ubWdtdC52MWFscGhhMS5BY3Rpdml0eU9wdGlvbnMSRQoUdmlydHVhbF9mb3JlaWduX2tleXMYCiADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIzCghqb2JfdHlwZRgLIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZ0gBiAEBOtQCukjQAhqfAQoabWFwcGluZ3NfcmVxdWlyZWRfZm9yX3N5bmMSL0ZvciBzeW5jIGpvYnMsIGF0IGxlYXN0IG9uZSBtYXBwaW5nIGlzIHJlcXVpcmVkGlAhaGFzKHRoaXMuam9iX3R5cGUpIHx8IGhhcyh0aGlzLmpvYl90eXBlLnN5bmMpID8gc2l6ZSh0aGlzLm1hcHBpbmdzKSA+PSAxIDogdHJ1ZRqrAQoeZGVzdGluYXRpb25zX3JlcXVpcmVkX2Zvcl9zeW5jEjNGb3Igc3luYyBqb2JzLCBhdCBsZWFzdCBvbmUgZGVzdGluYXRpb24gaXMgcmVxdWlyZWQaVCFoYXModGhpcy5qb2JfdHlwZSkgfHwgaGFzKHRoaXMuam9iX3R5cGUuc3luYykgPyBzaXplKHRoaXMuZGVzdGluYXRpb25zKSA+PSAxIDogdHJ1ZUIQCg5fY3Jvbl9zY2hlZHVsZUILCglfam9iX3R5cGUinwgKDUpvYlR5cGVDb25maWcSOAoEc3luYxgBIAEoCzIoLm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlU3luY0gAEkMKCnBpaV9kZXRlY3QYAiABKAsyLS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdEgAGg0KC0pvYlR5cGVTeW5jGuwGChBKb2JUeXBlUGlpRGV0ZWN0ElEKDWRhdGFfc2FtcGxpbmcYASABKAsyOi5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5EYXRhU2FtcGxpbmcSWAoRdGFibGVfc2Nhbl9maWx0ZXIYAiABKAsyPS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZVNjYW5GaWx0ZXISGAoLdXNlcl9wcm9tcHQYAyABKAlIAIgBARJTCgtpbmNyZW1lbnRhbBgEIAEoCzI5Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlUGlpRGV0ZWN0LkluY3JlbWVudGFsSAGIAQEaIQoLSW5jcmVtZW50YWwSEgoKaXNfZW5hYmxlZBgBIAEoCBoiCgxEYXRhU2FtcGxpbmcSEgoKaXNfZW5hYmxlZBgBIAEoCBqRAgoPVGFibGVTY2FuRmlsdGVyEk8KC2luY2x1ZGVfYWxsGAEgASgLMjgubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnLkpvYlR5cGVQaWlEZXRlY3QuSW5jbHVkZUFsbEgAEk4KB2luY2x1ZGUYAiABKAsyOy5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZVBhdHRlcm5zSAASTgoHZXhjbHVkZRgDIAEoCzI7Lm1nbXQudjFhbHBoYTEuSm9iVHlwZUNvbmZpZy5Kb2JUeXBlUGlpRGV0ZWN0LlRhYmxlUGF0dGVybnNIAEINCgRtb2RlEgW6SAIIARoMCgpJbmNsdWRlQWxsGm8KDVRhYmxlUGF0dGVybnMSDwoHc2NoZW1hcxgBIAMoCRJNCgZ0YWJsZXMYAiADKAsyPS5tZ210LnYxYWxwaGExLkpvYlR5cGVDb25maWcuSm9iVHlwZVBpaURldGVjdC5UYWJsZUlkZW50aWZpZXIaQgoPVGFibGVJZGVudGlmaWVyEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARIWCgV0YWJsZRgCIAEoCUIHukgEcgIQAUIOCgxfdXNlcl9wcm9tcHRCDgoMX2luY3JlbWVudGFsQhEKCGpvYl90eXBlEgW6SAIIACJlCg9Xb3JrZmxvd09wdGlvbnMSGAoLcnVuX3RpbWVvdXQYCCABKANIAIgBAUIOCgxfcnVuX3RpbWVvdXRKBAgBEAJKBAgCEANKBAgDEARKBAgEEAVKBAgFEAZKBAgGEAdKBAgHEAgi2wEKD0FjdGl2aXR5T3B0aW9ucxIvChlzY2hlZHVsZV90b19jbG9zZV90aW1lb3V0GAEgASgDQge6SAQiAigBSACIAQESLAoWc3RhcnRfdG9fY2xvc2VfdGltZW91dBgCIAEoA0IHukgEIgIoAUgBiAEBEjAKDHJldHJ5X3BvbGljeRgDIAEoCzIaLm1nbXQudjFhbHBoYTEuUmV0cnlQb2xpY3lCHAoaX3NjaGVkdWxlX3RvX2Nsb3NlX3RpbWVvdXRCGQoXX3N0YXJ0X3RvX2Nsb3NlX3RpbWVvdXQiSgoLUmV0cnlQb2xpY3kSJgoQbWF4aW11bV9hdHRlbXB0cxgBIAEoBUIHukgEGgIoAEgAiAEBQhMKEV9tYXhpbXVtX2F0dGVtcHRzIjQKEUNyZWF0ZUpvYlJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIk8KFUpvYk1hcHBpbmdUcmFuc2Zvcm1lchIwCgZjb25maWcYAyABKAsyIC5tZ210LnYxYWxwaGExLlRyYW5zZm9ybWVyQ29uZmlnSgQIARACIpEBCgpKb2JNYXBwaW5nEhcKBnNjaGVtYRgBIAEoCUIHukgEcgIQARIWCgV0YWJsZRgCIAEoCUIHukgEcgIQARIXCgZjb2x1bW4YAyABKAlCB7pIBHICEAESOQoLdHJhbnNmb3JtZXIYBSABKAsyJC5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmdUcmFuc2Zvcm1lciIlCg1HZXRKb2JSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASIxCg5HZXRKb2JSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJeChhVcGRhdGVKb2JTY2hlZHVsZVJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBEhoKDWNyb25fc2NoZWR1bGUYAiABKAlIAIgBAUIQCg5fY3Jvbl9zY2hlZHVsZSI8ChlVcGRhdGVKb2JTY2hlZHVsZVJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIlIKD1BhdXNlSm9iUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESDQoFcGF1c2UYAiABKAgSEQoEbm90ZRgDIAEoCUgAiAEBQgcKBV9ub3RlIjMKEFBhdXNlSm9iUmVzcG9uc2USHwoDam9iGAEgASgLMhIubWdtdC52MWFscGhhMS5Kb2IihgIKIFVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb25SZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABARIoCgZzb3VyY2UYAiABKAsyGC5tZ210LnYxYWxwaGExLkpvYlNvdXJjZRIrCghtYXBwaW5ncxgDIAMoCzIZLm1nbXQudjFhbHBoYTEuSm9iTWFwcGluZxJFChR2aXJ0dWFsX2ZvcmVpZ25fa2V5cxgEIAMoCzInLm1nbXQudjFhbHBoYTEuVmlydHVhbEZvcmVpZ25Db25zdHJhaW50Ei4KCGpvYl90eXBlGAUgASgLMhwubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnIkQKIVVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb25SZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiJhChpQb3N0Z3Jlc1NvdXJjZVNjaGVtYVN1YnNldBJDChBwb3N0Z3Jlc19zY2hlbWFzGAEgAygLMikubWdtdC52MWFscGhhMS5Qb3N0Z3Jlc1NvdXJjZVNjaGVtYU9wdGlvbiJYChdNeXNxbFNvdXJjZVNjaGVtYVN1YnNldBI9Cg1teXNxbF9zY2hlbWFzGAEgAygLMiYubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVNjaGVtYU9wdGlvbiJWChpEeW5hbW9EQlNvdXJjZVNjaGVtYVN1YnNldBI4CgZ0YWJsZXMYASADKAsyKC5tZ210LnYxYWxwaGExLkR5bmFtb0RCU291cmNlVGFibGVPcHRpb24iWAoXTXNzcWxTb3VyY2VTY2hlbWFTdWJzZXQSPQoNbXNzcWxfc2NoZW1hcxgBIAMoCzImLm1nbXQudjFhbHBoYTEuTXNzcWxTb3VyY2VTY2hlbWFPcHRpb24ivgIKGEpvYlNvdXJjZVNxbFN1YmV0U2NoZW1hcxJECg9wb3N0Z3Jlc19zdWJzZXQYAiABKAsyKS5tZ210LnYxYWxwaGExLlBvc3RncmVzU291cmNlU2NoZW1hU3Vic2V0SAASPgoMbXlzcWxfc3Vic2V0GAMgASgLMiYubWdtdC52MWFscGhhMS5NeXNxbFNvdXJjZVNjaGVtYVN1YnNldEgAEkQKD2R5bmFtb2RiX3N1YnNldBgEIAEoCzIpLm1nbXQudjFhbHBoYTEuRHluYW1vREJTb3VyY2VTY2hlbWFTdWJzZXRIABI+Cgxtc3NxbF9zdWJzZXQYBSABKAsyJi5tZ210LnYxYWxwaGExLk1zc3FsU291cmNlU2NoZW1hU3Vic2V0SABCEAoHc2NoZW1hcxIFukgCCAFKBAgBEAIipAEKJ1NldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESOAoHc2NoZW1hcxgCIAEoCzInLm1nbXQudjFhbHBoYTEuSm9iU291cmNlU3FsU3ViZXRTY2hlbWFzEikKIXN1YnNldF9ieV9mb3JlaWduX2tleV9jb25zdHJhaW50cxgDIAEoCCJLCihTZXRKb2JTb3VyY2VTcWxDb25uZWN0aW9uU3Vic2V0c1Jlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIrEBCiVVcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25SZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQESHwoNY29ubmVjdGlvbl9pZBgCIAEoCUIIukgFcgOwAQESNQoHb3B0aW9ucxgDIAEoCzIkLm1nbXQudjFhbHBoYTEuSm9iRGVzdGluYXRpb25PcHRpb25zEhYKDmRlc3RpbmF0aW9uX2lkGAQgASgJIkkKJlVwZGF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iIkkKJURlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlcXVlc3QSIAoOZGVzdGluYXRpb25faWQYASABKAlCCLpIBXIDsAEBIigKJkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlIocBCiZDcmVhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb25zUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBEkMKDGRlc3RpbmF0aW9ucxgCIAMoCzIjLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iRGVzdGluYXRpb25CCLpIBZIBAggBIkoKJ0NyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiIoChBEZWxldGVKb2JSZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASITChFEZWxldGVKb2JSZXNwb25zZSJiChlJc0pvYk5hbWVBdmFpbGFibGVSZXF1ZXN0EicKBG5hbWUYASABKAlCGbpIFnIUMhJeW2EtejAtOS1dezMsMTAwfSQSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiMgoaSXNKb2JOYW1lQXZhaWxhYmxlUmVzcG9uc2USFAoMaXNfYXZhaWxhYmxlGAEgASgIIlUKEUdldEpvYlJ1bnNSZXF1ZXN0EhoKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQFIABIeCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABAUgAQgQKAmlkIj0KEkdldEpvYlJ1bnNSZXNwb25zZRInCghqb2JfcnVucxgBIAMoCzIVLm1nbXQudjFhbHBoYTEuSm9iUnVuIkQKEEdldEpvYlJ1blJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASI7ChFHZXRKb2JSdW5SZXNwb25zZRImCgdqb2JfcnVuGAEgASgLMhUubWdtdC52MWFscGhhMS5Kb2JSdW4iLwoTQ3JlYXRlSm9iUnVuUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIhYKFENyZWF0ZUpvYlJ1blJlc3BvbnNlIkcKE0NhbmNlbEpvYlJ1blJlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASIWChRDYW5jZWxKb2JSdW5SZXNwb25zZSLsBAoDSm9iEgoKAmlkGAEgASgJEhoKEmNyZWF0ZWRfYnlfdXNlcl9pZBgCIAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJ1cGRhdGVkX2J5X3VzZXJfaWQYBCABKAkSLgoKdXBkYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEbmFtZRgGIAEoCRIoCgZzb3VyY2UYByABKAsyGC5tZ210LnYxYWxwaGExLkpvYlNvdXJjZRIzCgxkZXN0aW5hdGlvbnMYCCADKAsyHS5tZ210LnYxYWxwaGExLkpvYkRlc3RpbmF0aW9uEisKCG1hcHBpbmdzGAkgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEhoKDWNyb25fc2NoZWR1bGUYCiABKAlIAIgBARISCgphY2NvdW50X2lkGAsgASgJEjQKDHN5bmNfb3B0aW9ucxgMIAEoCzIeLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlPcHRpb25zEjgKEHdvcmtmbG93X29wdGlvbnMYDSABKAsyHi5tZ210LnYxYWxwaGExLldvcmtmbG93T3B0aW9ucxJFChR2aXJ0dWFsX2ZvcmVpZ25fa2V5cxgOIAMoCzInLm1nbXQudjFhbHBoYTEuVmlydHVhbEZvcmVpZ25Db25zdHJhaW50Ei4KCGpvYl90eXBlGA8gASgLMhwubWdtdC52MWFscGhhMS5Kb2JUeXBlQ29uZmlnQhAKDl9jcm9uX3NjaGVkdWxlIlIKDEpvYlJlY2VudFJ1bhIuCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgpqb2JfcnVuX2lkGAIgASgJIjMKF0dldEpvYlJlY2VudFJ1bnNSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQEiTAoYR2V0Sm9iUmVjZW50UnVuc1Jlc3BvbnNlEjAKC3JlY2VudF9ydW5zGAEgAygLMhsubWdtdC52MWFscGhhMS5Kb2JSZWNlbnRSdW4iQQoLSm9iTmV4dFJ1bnMSMgoObmV4dF9ydW5fdGltZXMYASADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjEKFUdldEpvYk5leHRSdW5zUmVxdWVzdBIYCgZqb2JfaWQYASABKAlCCLpIBXIDsAEBIkcKFkdldEpvYk5leHRSdW5zUmVzcG9uc2USLQoJbmV4dF9ydW5zGAEgASgLMhoubWdtdC52MWFscGhhMS5Kb2JOZXh0UnVucyIvChNHZXRKb2JTdGF0dXNSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQEiQAoUR2V0Sm9iU3RhdHVzUmVzcG9uc2USKAoGc3RhdHVzGAEgASgOMhgubWdtdC52MWFscGhhMS5Kb2JTdGF0dXMiVQoPSm9iU3RhdHVzUmVjb3JkEhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQESKAoGc3RhdHVzGAIgASgOMhgubWdtdC52MWFscGhhMS5Kb2JTdGF0dXMiNQoVR2V0Sm9iU3RhdHVzZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIkoKFkdldEpvYlN0YXR1c2VzUmVzcG9uc2USMAoIc3RhdHVzZXMYASADKAsyHi5tZ210LnYxYWxwaGExLkpvYlN0YXR1c1JlY29yZCIiCg9BY3Rpdml0eUZhaWx1cmUSDwoHbWVzc2FnZRgBIAEoCSKjAQoPUGVuZGluZ0FjdGl2aXR5Ei0KBnN0YXR1cxgBIAEoDjIdLm1nbXQudjFhbHBoYTEuQWN0aXZpdHlTdGF0dXMSFQoNYWN0aXZpdHlfbmFtZRgCIAEoCRI5CgxsYXN0X2ZhaWx1cmUYAyABKAsyHi5tZ210LnYxYWxwaGExLkFjdGl2aXR5RmFpbHVyZUgAiAEBQg8KDV9sYXN0X2ZhaWx1cmUimQIKBkpvYlJ1bhIKCgJpZBgBIAEoCRIOCgZqb2JfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIrCgZzdGF0dXMYBCABKA4yGy5tZ210LnYxYWxwaGExLkpvYlJ1blN0YXR1cxIuCgpzdGFydGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESOgoScGVuZGluZ19hY3Rpdml0aWVzGAggAygLMh4ubWdtdC52MWFscGhhMS5QZW5kaW5nQWN0aXZpdHlCDwoNX2NvbXBsZXRlZF9hdEoECAUQBiI8ChRKb2JSdW5FdmVudFRhc2tFcnJvchIPCgdtZXNzYWdlGAEgASgJEhMKC3JldHJ5X3N0YXRlGAIgASgJIo8BCg9Kb2JSdW5FdmVudFRhc2sSCgoCaWQYASABKAMSDAoEdHlwZRgCIAEoCRIuCgpldmVudF90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCgVlcnJvchgEIAEoCzIjLm1nbXQudjFhbHBoYTEuSm9iUnVuRXZlbnRUYXNrRXJyb3IiMwoSSm9iUnVuU3luY01ldGFkYXRhEg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCSJkChNKb2JSdW5FdmVudE1ldGFkYXRhEjoKDXN5bmNfbWV0YWRhdGEYASABKAsyIS5tZ210LnYxYWxwaGExLkpvYlJ1blN5bmNNZXRhZGF0YUgAQhEKCG1ldGFkYXRhEgW6SAIIASLsAQoLSm9iUnVuRXZlbnQSCgoCaWQYASABKAMSDAoEdHlwZRgCIAEoCRIuCgpzdGFydF90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjbG9zZV90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CghtZXRhZGF0YRgFIAEoCzIiLm1nbXQudjFhbHBoYTEuSm9iUnVuRXZlbnRNZXRhZGF0YRItCgV0YXNrcxgGIAMoCzIeLm1nbXQudjFhbHBoYTEuSm9iUnVuRXZlbnRUYXNrIkoKFkdldEpvYlJ1bkV2ZW50c1JlcXVlc3QSEgoKam9iX3J1bl9pZBgBIAEoCRIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASJeChdHZXRKb2JSdW5FdmVudHNSZXNwb25zZRIqCgZldmVudHMYASADKAsyGi5tZ210LnYxYWxwaGExLkpvYlJ1bkV2ZW50EhcKD2lzX3J1bl9jb21wbGV0ZRgCIAEoCCJHChNEZWxldGVKb2JSdW5SZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQEiFgoURGVsZXRlSm9iUnVuUmVzcG9uc2UiSgoWVGVybWluYXRlSm9iUnVuUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBIhkKF1Rlcm1pbmF0ZUpvYlJ1blJlc3BvbnNlIvEBChpHZXRKb2JSdW5Mb2dzU3RyZWFtUmVxdWVzdBISCgpqb2JfcnVuX2lkGAEgASgJEhwKCmFjY291bnRfaWQYAiABKAlCCLpIBXIDsAEBEigKBndpbmRvdxgDIAEoDjIYLm1nbXQudjFhbHBoYTEuTG9nV2luZG93EhMKC3Nob3VsZF90YWlsGAQgASgIEiMKDW1heF9sb2dfbGluZXMYBSABKANCB7pIBCICKAFIAIgBARIrCgpsb2dfbGV2ZWxzGAYgAygOMhcubWdtdC52MWFscGhhMS5Mb2dMZXZlbEIQCg5fbWF4X2xvZ19saW5lcyLoAQobR2V0Sm9iUnVuTG9nc1N0cmVhbVJlc3BvbnNlEhAKCGxvZ19saW5lGAEgASgJEjIKCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARJGCgZsYWJlbHMYAyADKAsyNi5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkxvZ3NTdHJlYW1SZXNwb25zZS5MYWJlbHNFbnRyeRotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl90aW1lc3RhbXAi1gEKFEdldEpvYlJ1bkxvZ3NSZXF1ZXN0EhIKCmpvYl9ydW5faWQYASABKAkSHAoKYWNjb3VudF9pZBgCIAEoCUIIukgFcgOwAQESKAoGd2luZG93GAMgASgOMhgubWdtdC52MWFscGhhMS5Mb2dXaW5kb3cSIwoNbWF4X2xvZ19saW5lcxgEIAEoA0IHukgEIgIoAUgAiAEBEisKCmxvZ19sZXZlbHMYBSADKA4yFy5tZ210LnYxYWxwaGExLkxvZ0xldmVsQhAKDl9tYXhfbG9nX2xpbmVzIrECChVHZXRKb2JSdW5Mb2dzUmVzcG9uc2USPwoJbG9nX2xpbmVzGAEgAygLMiwubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVzcG9uc2UuTG9nTGluZRrWAQoHTG9nTGluZRIQCghsb2dfbGluZRgBIAEoCRIyCgl0aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESSAoGbGFiZWxzGAMgAygLMjgubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVzcG9uc2UuTG9nTGluZS5MYWJlbHNFbnRyeRotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgwKCl90aW1lc3RhbXAibgocU2V0Sm9iV29ya2Zsb3dPcHRpb25zUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESOAoQd29yZmtsb3dfb3B0aW9ucxgCIAEoCzIeLm1nbXQudjFhbHBoYTEuV29ya2Zsb3dPcHRpb25zIkAKHVNldEpvYldvcmtmbG93T3B0aW9uc1Jlc3BvbnNlEh8KA2pvYhgBIAEoCzISLm1nbXQudjFhbHBoYTEuSm9iImYKGFNldEpvYlN5bmNPcHRpb25zUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESNAoMc3luY19vcHRpb25zGAIgASgLMh4ubWdtdC52MWFscGhhMS5BY3Rpdml0eU9wdGlvbnMiPAoZU2V0Sm9iU3luY09wdGlvbnNSZXNwb25zZRIfCgNqb2IYASABKAsyEi5tZ210LnYxYWxwaGExLkpvYiKRAgoaVmFsaWRhdGVKb2JNYXBwaW5nc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESKwoIbWFwcGluZ3MYAiADKAsyGS5tZ210LnYxYWxwaGExLkpvYk1hcHBpbmcSHwoNY29ubmVjdGlvbl9pZBgDIAEoCUIIukgFcgOwAQESRQoUdmlydHVhbF9mb3JlaWduX2tleXMYBCADKAsyJy5tZ210LnYxYWxwaGExLlZpcnR1YWxGb3JlaWduQ29uc3RyYWludBIxCgpqb2Jfc291cmNlGAUgASgLMhgubWdtdC52MWFscGhhMS5Kb2JTb3VyY2VIAIgBAUINCgtfam9iX3NvdXJjZSKrBwoLQ29sdW1uRXJyb3ISDgoGc2NoZW1hGAEgASgJEg0KBXRhYmxlGAIgASgJEg4KBmNvbHVtbhgDIAEoCRISCgZlcnJvcnMYBCADKAlCAhgBEkMKDWVycm9yX3JlcG9ydHMYBSADKAsyLC5tZ210LnYxYWxwaGExLkNvbHVtbkVycm9yLkNvbHVtbkVycm9yUmVwb3J0Gl4KEUNvbHVtbkVycm9yUmVwb3J0EjgKBGNvZGUYASABKA4yKi5tZ210LnYxYWxwaGExLkNvbHVtbkVycm9yLkNvbHVtbkVycm9yQ29kZRIPCgdtZXNzYWdlGAIgASgJIrMFCg9Db2x1bW5FcnJvckNvZGUSIQodQ09MVU1OX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIpCiVDT0xVTU5fRVJST1JfQ09ERV9OT1RfRk9VTkRfSU5fU09VUkNFEAESKgomQ09MVU1OX0VSUk9SX0NPREVfTk9UX0ZPVU5EX0lOX01BUFBJTkcQAhI6CjZDT0xVTU5fRVJST1JfQ09ERV9SRVFVSVJFRF9DT0xVTU5fTk9UX0ZPVU5EX0lOX01BUFBJTkcQAxI/CjtDT0xVTU5fRVJST1JfQ09ERV9SRVFVSVJFRF9GT1JFSUdOX0tFWV9OT1RfRk9VTkRfSU5fTUFQUElORxAEEksKR0NPTFVNTl9FUlJPUl9DT0RFX1VOU1VQUE9SVEVEX0NJUkNVTEFSX0RFUEVOREVOQ1lfQVRfTEVBU1RfT05FX05VTExBQkxFEAUSPAo4Q09MVU1OX0VSUk9SX0NPREVfVkZLX1NPVVJDRV9DT0xVTU5fTk9UX0ZPVU5EX0lOX01BUFBJTkcQBhI7CjdDT0xVTU5fRVJST1JfQ09ERV9WRktfU09VUkNFX0NPTFVNTl9OT1RfRk9VTkRfSU5fU09VUkNFEAcSPAo4Q09MVU1OX0VSUk9SX0NPREVfVkZLX1RBUkdFVF9DT0xVTU5fTk9UX0ZPVU5EX0lOX01BUFBJTkcQCBI7CjdDT0xVTU5fRVJST1JfQ09ERV9WRktfVEFSR0VUX0NPTFVNTl9OT1RfRk9VTkRfSU5fU09VUkNFEAkSMgouQ09MVU1OX0VSUk9SX0NPREVfVkZLX0NPTFVNTl9EQVRBVFlQRV9NSVNNQVRDSBAKEjIKLkNPTFVNTl9FUlJPUl9DT0RFX1ZGS19TT1VSQ0VfQ09MVU1OX05PVF9VTklRVUUQCyKbAwoNQ29sdW1uV2FybmluZxIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSDgoGY29sdW1uGAMgASgJEhQKCHdhcm5pbmdzGAUgAygJQgIYARJJCg93YXJuaW5nX3JlcG9ydHMYBiADKAsyMC5tZ210LnYxYWxwaGExLkNvbHVtbldhcm5pbmcuQ29sdW1uV2FybmluZ1JlcG9ydBpkChNDb2x1bW5XYXJuaW5nUmVwb3J0EjwKBGNvZGUYASABKA4yLi5tZ210LnYxYWxwaGExLkNvbHVtbldhcm5pbmcuQ29sdW1uV2FybmluZ0NvZGUSDwoHbWVzc2FnZRgCIAEoCSKTAQoRQ29sdW1uV2FybmluZ0NvZGUSIwofQ09MVU1OX1dBUk5JTkdfQ09ERV9VTlNQRUNJRklFRBAAEisKJ0NPTFVNTl9XQVJOSU5HX0NPREVfTk9UX0ZPVU5EX0lOX1NPVVJDRRABEiwKKENPTFVNTl9XQVJOSU5HX0NPREVfTk9UX0ZPVU5EX0lOX01BUFBJTkcQAiKJAwoNRGF0YWJhc2VFcnJvchISCgZlcnJvcnMYASADKAlCAhgBEkcKDWVycm9yX3JlcG9ydHMYAiADKAsyMC5tZ210LnYxYWxwaGExLkRhdGFiYXNlRXJyb3IuRGF0YWJhc2VFcnJvclJlcG9ydBpkChNEYXRhYmFzZUVycm9yUmVwb3J0EjwKBGNvZGUYASABKA4yLi5tZ210LnYxYWxwaGExLkRhdGFiYXNlRXJyb3IuRGF0YWJhc2VFcnJvckNvZGUSDwoHbWVzc2FnZRgCIAEoCSK0AQoRRGF0YWJhc2VFcnJvckNvZGUSIwofREFUQUJBU0VfRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEk0KSURBVEFCQVNFX0VSUk9SX0NPREVfVU5TVVBQT1JURURfQ0lSQ1VMQVJfREVQRU5ERU5DWV9BVF9MRUFTVF9PTkVfTlVMTEFCTEUQARIrCidEQVRBQkFTRV9FUlJPUl9DT0RFX1ZGS19DT0xVTU5fTUlTTUFUQ0gQAiKeBAoKVGFibGVFcnJvchIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSQQoNZXJyb3JfcmVwb3J0cxgDIAMoCzIqLm1nbXQudjFhbHBoYTEuVGFibGVFcnJvci5UYWJsZUVycm9yUmVwb3J0GlsKEFRhYmxlRXJyb3JSZXBvcnQSNgoEY29kZRgBIAEoDjIoLm1nbXQudjFhbHBoYTEuVGFibGVFcnJvci5UYWJsZUVycm9yQ29kZRIPCgdtZXNzYWdlGAIgASgJItACCg5UYWJsZUVycm9yQ29kZRIgChxUQUJMRV9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASLgoqVEFCTEVfRVJST1JfQ09ERV9UQUJMRV9OT1RfRk9VTkRfSU5fU09VUkNFEAESOgo2VEFCTEVfRVJST1JfQ09ERV9WRktfU09VUkNFX1RBQkxFX05PVF9GT1VORF9JTl9NQVBQSU5HEAISOQo1VEFCTEVfRVJST1JfQ09ERV9WRktfU09VUkNFX1RBQkxFX05PVF9GT1VORF9JTl9TT1VSQ0UQAxI6CjZUQUJMRV9FUlJPUl9DT0RFX1ZGS19UQVJHRVRfVEFCTEVfTk9UX0ZPVU5EX0lOX01BUFBJTkcQBBI5CjVUQUJMRV9FUlJPUl9DT0RFX1ZGS19UQVJHRVRfVEFCTEVfTk9UX0ZPVU5EX0lOX1NPVVJDRRAFIu8BChtWYWxpZGF0ZUpvYk1hcHBpbmdzUmVzcG9uc2USMQoNY29sdW1uX2Vycm9ycxgBIAMoCzIaLm1nbXQudjFhbHBoYTEuQ29sdW1uRXJyb3ISNQoPZGF0YWJhc2VfZXJyb3JzGAIgASgLMhwubWdtdC52MWFscGhhMS5EYXRhYmFzZUVycm9yEjUKD2NvbHVtbl93YXJuaW5ncxgDIAMoCzIcLm1nbXQudjFhbHBoYTEuQ29sdW1uV2FybmluZxIvCgx0YWJsZV9lcnJvcnMYBCADKAsyGS5tZ210LnYxYWxwaGExLlRhYmxlRXJyb3IiZQoVVmFsaWRhdGVTY2hlbWFSZXF1ZXN0EisKCG1hcHBpbmdzGAEgAygLMhkubWdtdC52MWFscGhhMS5Kb2JNYXBwaW5nEh8KDWNvbm5lY3Rpb25faWQYAiABKAlCCLpIBXIDsAEBIowCChZWYWxpZGF0ZVNjaGVtYVJlc3BvbnNlEjYKD21pc3NpbmdfY29sdW1ucxgBIAMoCzIdLm1nbXQudjFhbHBoYTEuRGF0YWJhc2VDb2x1bW4SNAoNZXh0cmFfY29sdW1ucxgCIAMoCzIdLm1nbXQudjFhbHBoYTEuRGF0YWJhc2VDb2x1bW4SQwoObWlzc2luZ190YWJsZXMYAyADKAsyKy5tZ210LnYxYWxwaGExLlZhbGlkYXRlU2NoZW1hUmVzcG9uc2UuVGFibGUSFwoPbWlzc2luZ19zY2hlbWFzGAQgAygJGiYKBVRhYmxlEg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCSJDChFWaXJ0dWFsRm9yZWlnbktleRIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSDwoHY29sdW1ucxgDIAMoCSKBAQoYVmlydHVhbEZvcmVpZ25Db25zdHJhaW50Eg4KBnNjaGVtYRgBIAEoCRINCgV0YWJsZRgCIAEoCRIPCgdjb2x1bW5zGAMgAygJEjUKC2ZvcmVpZ25fa2V5GAQgASgLMiAubWdtdC52MWFscGhhMS5WaXJ0dWFsRm9yZWlnbktleSJnCg1SdW5Db250ZXh0S2V5EhsKCmpvYl9ydW5faWQYASABKAlCB7pIBHICEAESHAoLZXh0ZXJuYWxfaWQYAiABKAlCB7pIBHICEAESGwoKYWNjb3VudF9pZBgDIAEoCUIHukgEcgIQASJAChRHZXRSdW5Db250ZXh0UmVxdWVzdBIoCgJpZBgBIAEoCzIcLm1nbXQudjFhbHBoYTEuUnVuQ29udGV4dEtleSImChVHZXRSdW5Db250ZXh0UmVzcG9uc2USDQoFdmFsdWUYASABKAwiTwoUU2V0UnVuQ29udGV4dFJlcXVlc3QSKAoCaWQYASABKAsyHC5tZ210LnYxYWxwaGExLlJ1bkNvbnRleHRLZXkSDQoFdmFsdWUYAiABKAwiFwoVU2V0UnVuQ29udGV4dFJlc3BvbnNlIlAKFVNldFJ1bkNvbnRleHRzUmVxdWVzdBIoCgJpZBgBIAEoCzIcLm1nbXQudjFhbHBoYTEuUnVuQ29udGV4dEtleRINCgV2YWx1ZRgCIAEoDCIYChZTZXRSdW5Db250ZXh0c1Jlc3BvbnNlIrwCCgdKb2JIb29rEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDgoGam9iX2lkGAQgASgJEiwKBmNvbmZpZxgFIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iSG9va0NvbmZpZxIaChJjcmVhdGVkX2J5X3VzZXJfaWQYBiABKAkSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoSdXBkYXRlZF9ieV91c2VyX2lkGAggASgJEi4KCnVwZGF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg8KB2VuYWJsZWQYCiABKAgSGwoIcHJpb3JpdHkYCyABKA1CCbpIBioEGGQoACKvAQoKTmV3Sm9iSG9vaxInCgRuYW1lGAEgASgJQhm6SBZyFDISXlthLXowLTktXXszLDEwMH0kEhwKC2Rlc2NyaXB0aW9uGAIgASgJQge6SARyAhABEiwKBmNvbmZpZxgDIAEoCzIcLm1nbXQudjFhbHBoYTEuSm9iSG9va0NvbmZpZxIPCgdlbmFibGVkGAQgASgIEhsKCHByaW9yaXR5GAUgASgNQgm6SAYqBBhkKAAiiAMKDUpvYkhvb2tDb25maWcSNgoDc3FsGAUgASgLMicubWdtdC52MWFscGhhMS5Kb2JIb29rQ29uZmlnLkpvYlNxbEhvb2tIABqVAgoKSm9iU3FsSG9vaxIWCgVxdWVyeRgBIAEoCUIHukgEcgIQARIfCg1jb25uZWN0aW9uX2lkGAIgASgJQgi6SAVyA7ABARI+CgZ0aW1pbmcYAyABKAsyLi5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcuSm9iU3FsSG9vay5UaW1pbmcajQEKBlRpbWluZxI3CghwcmVfc3luYxgDIAEoCzIjLm1nbXQudjFhbHBoYTEuSm9iSG9va1RpbWluZ1ByZVN5bmNIABI5Cglwb3N0X3N5bmMYBCABKAsyJC5tZ210LnYxYWxwaGExLkpvYkhvb2tUaW1pbmdQb3N0U3luY0gAQg8KBnRpbWluZxIFukgCCAFCDwoGY29uZmlnEgW6SAIIAUoECAEQAkoECAIQA0oECAMQBEoECAQQBSIWChRKb2JIb29rVGltaW5nUHJlU3luYyIXChVKb2JIb29rVGltaW5nUG9zdFN5bmMiLgoSR2V0Sm9iSG9va3NSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQEiPAoTR2V0Sm9iSG9va3NSZXNwb25zZRIlCgVob29rcxgBIAMoCzIWLm1nbXQudjFhbHBoYTEuSm9iSG9vayIpChFHZXRKb2JIb29rUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQEiOgoSR2V0Sm9iSG9va1Jlc3BvbnNlEiQKBGhvb2sYASABKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2siTwoUQ3JlYXRlSm9iSG9va1JlcXVlc3QSDgoGam9iX2lkGAEgASgJEicKBGhvb2sYAiABKAsyGS5tZ210LnYxYWxwaGExLk5ld0pvYkhvb2siPQoVQ3JlYXRlSm9iSG9va1Jlc3BvbnNlEiQKBGhvb2sYASABKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2siLAoURGVsZXRlSm9iSG9va1JlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIhcKFURlbGV0ZUpvYkhvb2tSZXNwb25zZSI9Ch1Jc0pvYkhvb2tOYW1lQXZhaWxhYmxlUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCSI2Ch5Jc0pvYkhvb2tOYW1lQXZhaWxhYmxlUmVzcG9uc2USFAoMaXNfYXZhaWxhYmxlGAEgASgIIs8BChRVcGRhdGVKb2JIb29rUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESJwoEbmFtZRgCIAEoCUIZukgWchQyEl5bYS16MC05LV17MywxMDB9JBIcCgtkZXNjcmlwdGlvbhgDIAEoCUIHukgEcgIQARIsCgZjb25maWcYBCABKAsyHC5tZ210LnYxYWxwaGExLkpvYkhvb2tDb25maWcSDwoHZW5hYmxlZBgFIAEoCBIbCghwcmlvcml0eRgGIAEoDUIJukgGKgQYZCgAIj0KFVVwZGF0ZUpvYkhvb2tSZXNwb25zZRIkCgRob29rGAEgASgLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIkEKGFNldEpvYkhvb2tFbmFibGVkUmVxdWVzdBIUCgJpZBgBIAEoCUIIukgFcgOwAQESDwoHZW5hYmxlZBgCIAEoCCJBChlTZXRKb2JIb29rRW5hYmxlZFJlc3BvbnNlEiQKBGhvb2sYASABKAsyFi5tZ210LnYxYWxwaGExLkpvYkhvb2sizwEKIEdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmdSZXF1ZXN0EhgKBmpvYl9pZBgBIAEoCUIIukgFcgOwAQESRgoGdGltaW5nGAIgASgOMjYubWdtdC52MWFscGhhMS5HZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVxdWVzdC5UaW1pbmciSQoGVGltaW5nEhYKElRJTUlOR19VTlNQRUNJRklFRBAAEhIKDlRJTUlOR19QUkVTWU5DEAESEwoPVElNSU5HX1BPU1RTWU5DEAIiSgohR2V0QWN0aXZlSm9iSG9va3NCeVRpbWluZ1Jlc3BvbnNlEiUKBWhvb2tzGAEgAygLMhYubWdtdC52MWFscGhhMS5Kb2JIb29rIlkKHEdldFBpaURldGVjdGlvblJlcG9ydFJlcXVlc3QSGwoKam9iX3J1bl9pZBgBIAEoCUIHukgEcgIQARIcCgphY2NvdW50X2lkGAIgASgJQgi6SAVyA7ABASJSCh1HZXRQaWlEZXRlY3Rpb25SZXBvcnRSZXNwb25zZRIxCgZyZXBvcnQYASABKAsyIS5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydCKOBAoSUGlpRGV0ZWN0aW9uUmVwb3J0Ej0KBnRhYmxlcxgBIAMoCzItLm1nbXQudjFhbHBoYTEuUGlpRGV0ZWN0aW9uUmVwb3J0LlRhYmxlUmVwb3J0GrgDCgtUYWJsZVJlcG9ydBIOCgZzY2hlbWEYASABKAkSDQoFdGFibGUYAiABKAkSSwoHY29sdW1ucxgDIAMoCzI6Lm1nbXQudjFhbHBoYTEuUGlpRGV0ZWN0aW9uUmVwb3J0LlRhYmxlUmVwb3J0LkNvbHVtblJlcG9ydBq8AgoMQ29sdW1uUmVwb3J0Eg4KBmNvbHVtbhgBIAEoCRJbCgxyZWdleF9yZXBvcnQYAiABKAsyQC5tZ210LnYxYWxwaGExLlBpaURldGVjdGlvblJlcG9ydC5UYWJsZVJlcG9ydC5Db2x1bW5SZXBvcnQuUmVnZXhIAIgBARJXCgpsbG1fcmVwb3J0GAMgASgLMj4ubWdtdC52MWFscGhhMS5QaWlEZXRlY3Rpb25SZXBvcnQuVGFibGVSZXBvcnQuQ29sdW1uUmVwb3J0LkxMTUgBiAEBGhkKBVJlZ2V4EhAKCGNhdGVnb3J5GAEgASgJGisKA0xMTRIQCghjYXRlZ29yeRgBIAEoCRISCgpjb25maWRlbmNlGAIgASgCQg8KDV9yZWdleF9yZXBvcnRCDQoLX2xsbV9yZXBvcnQqbwoJSm9iU3RhdHVzEhoKFkpPQl9TVEFUVVNfVU5TUEVDSUZJRUQQABIWChJKT0JfU1RBVFVTX0VOQUJMRUQQARIVChFKT0JfU1RBVFVTX1BBVVNFRBADEhcKE0pPQl9TVEFUVVNfRElTQUJMRUQQBCqnAQoOQWN0aXZpdHlTdGF0dXMSHwobQUNUSVZJVFlfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHQoZQUNUSVZJVFlfU1RBVFVTX1NDSEVEVUxFRBABEhsKF0FDVElWSVRZX1NUQVRVU19TVEFSVEVEEAISHAoYQUNUSVZJVFlfU1RBVFVTX0NBTkNFTEVEEAMSGgoWQUNUSVZJVFlfU1RBVFVTX0ZBSUxFRBAEKpICCgxKb2JSdW5TdGF0dXMSHgoaSk9CX1JVTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZKT0JfUlVOX1NUQVRVU19QRU5ESU5HEAESGgoWSk9CX1JVTl9TVEFUVVNfUlVOTklORxACEhsKF0pPQl9SVU5fU1RBVFVTX0NPTVBMRVRFEAMSGAoUSk9CX1JVTl9TVEFUVVNfRVJST1IQBBIbChdKT0JfUlVOX1NUQVRVU19DQU5DRUxFRBAFEh0KGUpPQl9SVU5fU1RBVFVTX1RFUk1JTkFURUQQBhIZChVKT0JfUlVOX1NUQVRVU19GQUlMRUQQBxIcChhKT0JfUlVOX1NUQVRVU19USU1FRF9PVVQQCCp8CglMb2dXaW5kb3cSIgoeTE9HX1dJTkRPV19OT19USU1FX1VOU1BFQ0lGSUVEEAASGgoWTE9HX1dJTkRPV19GSUZURUVOX01JThABEhcKE0xPR19XSU5ET1dfT05FX0hPVVIQAhIWChJMT0dfV0lORE9XX09ORV9EQVkQAyp3CghMb2dMZXZlbBIZChVMT0dfTEVWRUxfVU5TUEVDSUZJRUQQABITCg9MT0dfTEVWRUxfREVCVUcQARISCg5MT0dfTEVWRUxfSU5GTxACEhIKDkxPR19MRVZFTF9XQVJOEAMSEwoPTE9HX0xFVkVMX0VSUk9SEAQysCEKCkpvYlNlcnZpY2USTQoHR2V0Sm9icxIdLm1nbXQudjFhbHBoYTEuR2V0Sm9ic1JlcXVlc3QaHi5tZ210LnYxYWxwaGExLkdldEpvYnNSZXNwb25zZSIDkAIBEkoKBkdldEpvYhIcLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVxdWVzdBodLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVzcG9uc2UiA5ACARJQCglDcmVhdGVKb2ISHy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJlcXVlc3QaIC5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYlJlc3BvbnNlIgASUAoJRGVsZXRlSm9iEh8ubWdtdC52MWFscGhhMS5EZWxldGVKb2JSZXF1ZXN0GiAubWdtdC52MWFscGhhMS5EZWxldGVKb2JSZXNwb25zZSIAEm4KEklzSm9iTmFtZUF2YWlsYWJsZRIoLm1nbXQudjFhbHBoYTEuSXNKb2JOYW1lQXZhaWxhYmxlUmVxdWVzdBopLm1nbXQudjFhbHBoYTEuSXNKb2JOYW1lQXZhaWxhYmxlUmVzcG9uc2UiA5ACARJoChFVcGRhdGVKb2JTY2hlZHVsZRInLm1nbXQudjFhbHBoYTEuVXBkYXRlSm9iU2NoZWR1bGVSZXF1ZXN0GigubWdtdC52MWFscGhhMS5VcGRhdGVKb2JTY2hlZHVsZVJlc3BvbnNlIgASgAEKGVVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb24SLy5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYlNvdXJjZUNvbm5lY3Rpb25SZXF1ZXN0GjAubWdtdC52MWFscGhhMS5VcGRhdGVKb2JTb3VyY2VDb25uZWN0aW9uUmVzcG9uc2UiABKVAQogU2V0Sm9iU291cmNlU3FsQ29ubmVjdGlvblN1YnNldHMSNi5tZ210LnYxYWxwaGExLlNldEpvYlNvdXJjZVNxbENvbm5lY3Rpb25TdWJzZXRzUmVxdWVzdBo3Lm1nbXQudjFhbHBoYTEuU2V0Sm9iU291cmNlU3FsQ29ubmVjdGlvblN1YnNldHNSZXNwb25zZSIAEo8BCh5VcGRhdGVKb2JEZXN0aW5hdGlvbkNvbm5lY3Rpb24SNC5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlcXVlc3QaNS5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvblJlc3BvbnNlIgASjwEKHkRlbGV0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbhI0Lm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uUmVxdWVzdBo1Lm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uUmVzcG9uc2UiABKSAQofQ3JlYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9ucxI1Lm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iRGVzdGluYXRpb25Db25uZWN0aW9uc1JlcXVlc3QaNi5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkRlc3RpbmF0aW9uQ29ubmVjdGlvbnNSZXNwb25zZSIAEk0KCFBhdXNlSm9iEh4ubWdtdC52MWFscGhhMS5QYXVzZUpvYlJlcXVlc3QaHy5tZ210LnYxYWxwaGExLlBhdXNlSm9iUmVzcG9uc2UiABJoChBHZXRKb2JSZWNlbnRSdW5zEiYubWdtdC52MWFscGhhMS5HZXRKb2JSZWNlbnRSdW5zUmVxdWVzdBonLm1nbXQudjFhbHBoYTEuR2V0Sm9iUmVjZW50UnVuc1Jlc3BvbnNlIgOQAgESYgoOR2V0Sm9iTmV4dFJ1bnMSJC5tZ210LnYxYWxwaGExLkdldEpvYk5leHRSdW5zUmVxdWVzdBolLm1nbXQudjFhbHBoYTEuR2V0Sm9iTmV4dFJ1bnNSZXNwb25zZSIDkAIBElwKDEdldEpvYlN0YXR1cxIiLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzUmVxdWVzdBojLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzUmVzcG9uc2UiA5ACARJiCg5HZXRKb2JTdGF0dXNlcxIkLm1nbXQudjFhbHBoYTEuR2V0Sm9iU3RhdHVzZXNSZXF1ZXN0GiUubWdtdC52MWFscGhhMS5HZXRKb2JTdGF0dXNlc1Jlc3BvbnNlIgOQAgESVgoKR2V0Sm9iUnVucxIgLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuc1JlcXVlc3QaIS5tZ210LnYxYWxwaGExLkdldEpvYlJ1bnNSZXNwb25zZSIDkAIBEmUKD0dldEpvYlJ1bkV2ZW50cxIlLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuRXZlbnRzUmVxdWVzdBomLm1nbXQudjFhbHBoYTEuR2V0Sm9iUnVuRXZlbnRzUmVzcG9uc2UiA5ACARJTCglHZXRKb2JSdW4SHy5tZ210LnYxYWxwaGExLkdldEpvYlJ1blJlcXVlc3QaIC5tZ210LnYxYWxwaGExLkdldEpvYlJ1blJlc3BvbnNlIgOQAgESWQoMRGVsZXRlSm9iUnVuEiIubWdtdC52MWFscGhhMS5EZWxldGVKb2JSdW5SZXF1ZXN0GiMubWdtdC52MWFscGhhMS5EZWxldGVKb2JSdW5SZXNwb25zZSIAElkKDENyZWF0ZUpvYlJ1bhIiLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iUnVuUmVxdWVzdBojLm1nbXQudjFhbHBoYTEuQ3JlYXRlSm9iUnVuUmVzcG9uc2UiABJZCgxDYW5jZWxKb2JSdW4SIi5tZ210LnYxYWxwaGExLkNhbmNlbEpvYlJ1blJlcXVlc3QaIy5tZ210LnYxYWxwaGExLkNhbmNlbEpvYlJ1blJlc3BvbnNlIgASYgoPVGVybWluYXRlSm9iUnVuEiUubWdtdC52MWFscGhhMS5UZXJtaW5hdGVKb2JSdW5SZXF1ZXN0GiYubWdtdC52MWFscGhhMS5UZXJtaW5hdGVKb2JSdW5SZXNwb25zZSIAEnAKE0dldEpvYlJ1bkxvZ3NTdHJlYW0SKS5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkxvZ3NTdHJlYW1SZXF1ZXN0GioubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzU3RyZWFtUmVzcG9uc2UiADABElwKDUdldEpvYlJ1bkxvZ3MSIy5tZ210LnYxYWxwaGExLkdldEpvYlJ1bkxvZ3NSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5HZXRKb2JSdW5Mb2dzUmVzcG9uc2UiABJ0ChVTZXRKb2JXb3JrZmxvd09wdGlvbnMSKy5tZ210LnYxYWxwaGExLlNldEpvYldvcmtmbG93T3B0aW9uc1JlcXVlc3QaLC5tZ210LnYxYWxwaGExLlNldEpvYldvcmtmbG93T3B0aW9uc1Jlc3BvbnNlIgASaAoRU2V0Sm9iU3luY09wdGlvbnMSJy5tZ210LnYxYWxwaGExLlNldEpvYlN5bmNPcHRpb25zUmVxdWVzdBooLm1nbXQudjFhbHBoYTEuU2V0Sm9iU3luY09wdGlvbnNSZXNwb25zZSIAEm4KE1ZhbGlkYXRlSm9iTWFwcGluZ3MSKS5tZ210LnYxYWxwaGExLlZhbGlkYXRlSm9iTWFwcGluZ3NSZXF1ZXN0GioubWdtdC52MWFscGhhMS5WYWxpZGF0ZUpvYk1hcHBpbmdzUmVzcG9uc2UiABJfCg5WYWxpZGF0ZVNjaGVtYRIkLm1nbXQudjFhbHBoYTEuVmFsaWRhdGVTY2hlbWFSZXF1ZXN0GiUubWdtdC52MWFscGhhMS5WYWxpZGF0ZVNjaGVtYVJlc3BvbnNlIgASXAoNR2V0UnVuQ29udGV4dBIjLm1nbXQudjFhbHBoYTEuR2V0UnVuQ29udGV4dFJlcXVlc3QaJC5tZ210LnYxYWxwaGExLkdldFJ1bkNvbnRleHRSZXNwb25zZSIAElwKDVNldFJ1bkNvbnRleHQSIy5tZ210LnYxYWxwaGExLlNldFJ1bkNvbnRleHRSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5TZXRSdW5Db250ZXh0UmVzcG9uc2UiABJhCg5TZXRSdW5Db250ZXh0cxIkLm1nbXQudjFhbHBoYTEuU2V0UnVuQ29udGV4dHNSZXF1ZXN0GiUubWdtdC52MWFscGhhMS5TZXRSdW5Db250ZXh0c1Jlc3BvbnNlIgAoARJZCgtHZXRKb2JIb29rcxIhLm1nbXQudjFhbHBoYTEuR2V0Sm9iSG9va3NSZXF1ZXN0GiIubWdtdC52MWFscGhhMS5HZXRKb2JIb29rc1Jlc3BvbnNlIgOQAgESVgoKR2V0Sm9iSG9vaxIgLm1nbXQudjFhbHBoYTEuR2V0Sm9iSG9va1JlcXVlc3QaIS5tZ210LnYxYWxwaGExLkdldEpvYkhvb2tSZXNwb25zZSIDkAIBElwKDUNyZWF0ZUpvYkhvb2sSIy5tZ210LnYxYWxwaGExLkNyZWF0ZUpvYkhvb2tSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5DcmVhdGVKb2JIb29rUmVzcG9uc2UiABJcCg1EZWxldGVKb2JIb29rEiMubWdtdC52MWFscGhhMS5EZWxldGVKb2JIb29rUmVxdWVzdBokLm1nbXQudjFhbHBoYTEuRGVsZXRlSm9iSG9va1Jlc3BvbnNlIgASdwoWSXNKb2JIb29rTmFtZUF2YWlsYWJsZRIsLm1nbXQudjFhbHBoYTEuSXNKb2JIb29rTmFtZUF2YWlsYWJsZVJlcXVlc3QaLS5tZ210LnYxYWxwaGExLklzSm9iSG9va05hbWVBdmFpbGFibGVSZXNwb25zZSIAElwKDVVwZGF0ZUpvYkhvb2sSIy5tZ210LnYxYWxwaGExLlVwZGF0ZUpvYkhvb2tSZXF1ZXN0GiQubWdtdC52MWFscGhhMS5VcGRhdGVKb2JIb29rUmVzcG9uc2UiABJoChFTZXRKb2JIb29rRW5hYmxlZBInLm1nbXQudjFhbHBoYTEuU2V0Sm9iSG9va0VuYWJsZWRSZXF1ZXN0GigubWdtdC52MWFscGhhMS5TZXRKb2JIb29rRW5hYmxlZFJlc3BvbnNlIgASgwEKGUdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmcSLy5tZ210LnYxYWxwaGExLkdldEFjdGl2ZUpvYkhvb2tzQnlUaW1pbmdSZXF1ZXN0GjAubWdtdC52MWFscGhhMS5HZXRBY3RpdmVKb2JIb29rc0J5VGltaW5nUmVzcG9uc2UiA5ACARJ3ChVHZXRQaWlEZXRlY3Rpb25SZXBvcnQSKy5tZ210LnYxYWxwaGExLkdldFBpaURldGVjdGlvblJlcG9ydFJlcXVlc3QaLC5tZ210LnYxYWxwaGExLkdldFBpaURldGVjdGlvblJlcG9ydFJlc3BvbnNlIgOQAgFCxAEKEWNvbS5tZ210LnYxYWxwaGExQghKb2JQcm90b1ABWlBnaXRodWIuY29tL251Y2xldXNjbG91ZC9uZW9zeW5jL2JhY2tlbmQvZ2VuL2dvL3Byb3Rvcy9tZ210L3YxYWxwaGExO21nbXR2MWFscGhhMaICA01YWKoCDU1nbXQuVjFhbHBoYTHKAg1NZ210XFYxYWxwaGEx4gIZTWdtdFxWMWFscGhhMVxHUEJNZXRhZGF0YeoCDk1nbXQ6OlYxYWxwaGExYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_mgmt_v1alpha1_connection_data, file_mgmt_v1alpha1_transformer]); /** * @generated from message mgmt.v1alpha1.GetJobsRequest @@ -751,8 +751,10 @@ export const PostgresSourceTableOptionSchema: GenMessage & { /** * Whether to halt the job if a new column is added + * Deprecated: Use new_column_addition_strategy instead * - * @generated from field: bool halt_on_new_column_addition = 1; + * @generated from field: bool halt_on_new_column_addition = 1 [deprecated = true]; + * @deprecated */ haltOnNewColumnAddition: boolean; @@ -783,6 +785,13 @@ export type MysqlSourceConnectionOptions = Message<"mgmt.v1alpha1.MysqlSourceCon * @generated from field: mgmt.v1alpha1.MysqlSourceConnectionOptions.ColumnRemovalStrategy column_removal_strategy = 5; */ columnRemovalStrategy?: MysqlSourceConnectionOptions_ColumnRemovalStrategy; + + /** + * Provide a strategy of what to do in the event Neosync encounters an unmapped column for the job's mapped tables. + * + * @generated from field: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy new_column_addition_strategy = 6; + */ + newColumnAdditionStrategy?: MysqlSourceConnectionOptions_NewColumnAdditionStrategy; }; /** @@ -855,6 +864,71 @@ export type MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJob = Mes export const MysqlSourceConnectionOptions_ColumnRemovalStrategy_ContinueJobSchema: GenMessage = /*@__PURE__*/ messageDesc(file_mgmt_v1alpha1_job, 19, 0, 1); +/** + * @generated from message mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy + */ +export type MysqlSourceConnectionOptions_NewColumnAdditionStrategy = Message<"mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy"> & { + /** + * @generated from oneof mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.strategy + */ + strategy: { + /** + * halt job if a new column is detected. + * + * @generated from field: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob halt_job = 1; + */ + value: MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob; + case: "haltJob"; + } | { + /** + * automatically handle unmapped columns. It handles this by using the DBs default/nullable values. + * If this doesn't exist, will fall back to configuring generators for supported datatypes. + * If none of the criteria above can be met, the job run will fail to prevent leaking of PII. + * + * @generated from field: mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap auto_map = 2; + */ + value: MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap; + case: "autoMap"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy. + * Use `create(MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema)` to create a new message. + */ +export const MysqlSourceConnectionOptions_NewColumnAdditionStrategySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mgmt_v1alpha1_job, 19, 1); + +/** + * Configuration for the HaltJob strategy + * + * @generated from message mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob + */ +export type MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob = Message<"mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob"> & { +}; + +/** + * Describes the message mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob. + * Use `create(MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema)` to create a new message. + */ +export const MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJobSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mgmt_v1alpha1_job, 19, 1, 0); + +/** + * Configuration for the AutoMap strategy + * + * @generated from message mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap + */ +export type MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap = Message<"mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap"> & { +}; + +/** + * Describes the message mgmt.v1alpha1.MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap. + * Use `create(MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMapSchema)` to create a new message. + */ +export const MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMapSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mgmt_v1alpha1_job, 19, 1, 1); + /** * @generated from message mgmt.v1alpha1.MysqlSourceSchemaOption */ diff --git a/internal/benthos/benthos-builder/builders/sql-util.go b/internal/benthos/benthos-builder/builders/sql-util.go index 26e0a268ec..604e1b7f3a 100644 --- a/internal/benthos/benthos-builder/builders/sql-util.go +++ b/internal/benthos/benthos-builder/builders/sql-util.go @@ -4,6 +4,8 @@ import ( "errors" "fmt" "log/slog" + "math" + "strconv" "strings" "time" @@ -619,6 +621,17 @@ func getAdditionalJobMappings( 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", @@ -775,6 +788,437 @@ func getJmTransformerByPostgresDataType(colInfo *sqlmanager_shared.DatabaseSchem } } +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 { @@ -783,6 +1227,60 @@ func cleanPostgresType(dataType string) string { 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 { for _, cd := range columnDefaults { if cd != nil && !cd.HasDefaultTransformer && cd.NeedsOverride { diff --git a/internal/benthos/benthos-builder/builders/sql-util_test.go b/internal/benthos/benthos-builder/builders/sql-util_test.go index ef37e41752..f108de7c2f 100644 --- a/internal/benthos/benthos-builder/builders/sql-util_test.go +++ b/internal/benthos/benthos-builder/builders/sql-util_test.go @@ -381,3 +381,157 @@ func Test_removeMappingsNotFoundInSource(t *testing.T) { require.Empty(t, result) }) } + +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) + }) + }) +} diff --git a/internal/job/job.go b/internal/job/job.go index 7ddcf5e9be..5c3d57495c 100644 --- a/internal/job/job.go +++ b/internal/job/job.go @@ -87,13 +87,25 @@ func GetSqlJobSourceOpts( Tables: tableOpts, }) } + shouldHalt := false + shouldGenerateNewColTransforms := false + switch jobSourceConfig.Mysql.GetNewColumnAdditionStrategy().GetStrategy().(type) { + case *mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_HaltJob_: + shouldHalt = true + case *mgmtv1alpha1.MysqlSourceConnectionOptions_NewColumnAdditionStrategy_AutoMap_: + shouldGenerateNewColTransforms = true + } + if !shouldHalt && jobSourceConfig.Mysql.GetHaltOnNewColumnAddition() { //nolint:staticcheck + shouldHalt = true + } shouldHaltOnColumnRemoval := false if jobSourceConfig.Mysql.GetColumnRemovalStrategy().GetHaltJob() != nil { shouldHaltOnColumnRemoval = true } return &SqlJobSourceOpts{ - HaltOnNewColumnAddition: jobSourceConfig.Mysql.HaltOnNewColumnAddition, + HaltOnNewColumnAddition: shouldHalt, HaltOnColumnRemoval: shouldHaltOnColumnRemoval, + GenerateNewColumnTransformers: shouldGenerateNewColTransforms, SubsetByForeignKeyConstraints: jobSourceConfig.Mysql.SubsetByForeignKeyConstraints, SchemaOpt: schemaOpt, }, nil diff --git a/python/src/neosync/mgmt/v1alpha1/job_pb2.py b/python/src/neosync/mgmt/v1alpha1/job_pb2.py index 354e77dc2a..fd3231d65c 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\"\xaf\x08\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\x9b\x02\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\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMapB\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\"\xae\x05\n\x1cMysqlSourceConnectionOptions\x12<\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08R\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\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\"\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\"\xae\x05\n\x1cMssqlSourceConnectionOptions\x12<\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08R\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\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\"\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\"\xaf\x08\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\x9b\x02\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\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMapB\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\"\xd3\x08\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\x95\x02\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\x1a\t\n\x07HaltJob\x1a\t\n\x07\x41utoMapB\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\"\xae\x05\n\x1cMssqlSourceConnectionOptions\x12<\n\x1bhalt_on_new_column_addition\x18\x01 \x01(\x08R\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\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\"\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -90,6 +90,8 @@ _globals['_POSTGRESSOURCESCHEMAOPTION'].fields_by_name['tables']._serialized_options = b'\272H\005\222\001\002\010\001' _globals['_POSTGRESSOURCETABLEOPTION'].fields_by_name['table']._loaded_options = None _globals['_POSTGRESSOURCETABLEOPTION'].fields_by_name['table']._serialized_options = b'\272H\004r\002\020\001' + _globals['_MYSQLSOURCECONNECTIONOPTIONS'].fields_by_name['halt_on_new_column_addition']._loaded_options = None + _globals['_MYSQLSOURCECONNECTIONOPTIONS'].fields_by_name['halt_on_new_column_addition']._serialized_options = b'\030\001' _globals['_MYSQLSOURCECONNECTIONOPTIONS'].fields_by_name['connection_id']._loaded_options = None _globals['_MYSQLSOURCECONNECTIONOPTIONS'].fields_by_name['connection_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_MYSQLSOURCESCHEMAOPTION'].fields_by_name['schema']._loaded_options = None @@ -306,16 +308,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=29690 - _globals['_JOBSTATUS']._serialized_end=29801 - _globals['_ACTIVITYSTATUS']._serialized_start=29804 - _globals['_ACTIVITYSTATUS']._serialized_end=29971 - _globals['_JOBRUNSTATUS']._serialized_start=29974 - _globals['_JOBRUNSTATUS']._serialized_end=30248 - _globals['_LOGWINDOW']._serialized_start=30250 - _globals['_LOGWINDOW']._serialized_end=30374 - _globals['_LOGLEVEL']._serialized_start=30376 - _globals['_LOGLEVEL']._serialized_end=30495 + _globals['_JOBSTATUS']._serialized_start=30111 + _globals['_JOBSTATUS']._serialized_end=30222 + _globals['_ACTIVITYSTATUS']._serialized_start=30225 + _globals['_ACTIVITYSTATUS']._serialized_end=30392 + _globals['_JOBRUNSTATUS']._serialized_start=30395 + _globals['_JOBRUNSTATUS']._serialized_end=30669 + _globals['_LOGWINDOW']._serialized_start=30671 + _globals['_LOGWINDOW']._serialized_end=30795 + _globals['_LOGLEVEL']._serialized_start=30797 + _globals['_LOGLEVEL']._serialized_end=30916 _globals['_GETJOBSREQUEST']._serialized_start=174 _globals['_GETJOBSREQUEST']._serialized_end=231 _globals['_GETJOBSRESPONSE']._serialized_start=233 @@ -367,359 +369,365 @@ _globals['_POSTGRESSOURCETABLEOPTION']._serialized_start=4401 _globals['_POSTGRESSOURCETABLEOPTION']._serialized_end=4516 _globals['_MYSQLSOURCECONNECTIONOPTIONS']._serialized_start=4519 - _globals['_MYSQLSOURCECONNECTIONOPTIONS']._serialized_end=5205 - _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_start=4924 - _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_end=5205 + _globals['_MYSQLSOURCECONNECTIONOPTIONS']._serialized_end=5626 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_start=5065 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_end=5346 _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_HALTJOB']._serialized_start=3931 _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_HALTJOB']._serialized_end=3940 _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_CONTINUEJOB']._serialized_start=4228 _globals['_MYSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_CONTINUEJOB']._serialized_end=4241 - _globals['_MYSQLSOURCESCHEMAOPTION']._serialized_start=5208 - _globals['_MYSQLSOURCESCHEMAOPTION']._serialized_end=5339 - _globals['_MYSQLSOURCETABLEOPTION']._serialized_start=5341 - _globals['_MYSQLSOURCETABLEOPTION']._serialized_end=5453 - _globals['_MSSQLSOURCECONNECTIONOPTIONS']._serialized_start=5456 - _globals['_MSSQLSOURCECONNECTIONOPTIONS']._serialized_end=6142 - _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_start=5861 - _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_end=6142 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_NEWCOLUMNADDITIONSTRATEGY']._serialized_start=5349 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_NEWCOLUMNADDITIONSTRATEGY']._serialized_end=5626 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_NEWCOLUMNADDITIONSTRATEGY_HALTJOB']._serialized_start=3931 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_NEWCOLUMNADDITIONSTRATEGY_HALTJOB']._serialized_end=3940 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_NEWCOLUMNADDITIONSTRATEGY_AUTOMAP']._serialized_start=3942 + _globals['_MYSQLSOURCECONNECTIONOPTIONS_NEWCOLUMNADDITIONSTRATEGY_AUTOMAP']._serialized_end=3951 + _globals['_MYSQLSOURCESCHEMAOPTION']._serialized_start=5629 + _globals['_MYSQLSOURCESCHEMAOPTION']._serialized_end=5760 + _globals['_MYSQLSOURCETABLEOPTION']._serialized_start=5762 + _globals['_MYSQLSOURCETABLEOPTION']._serialized_end=5874 + _globals['_MSSQLSOURCECONNECTIONOPTIONS']._serialized_start=5877 + _globals['_MSSQLSOURCECONNECTIONOPTIONS']._serialized_end=6563 + _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_start=6282 + _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY']._serialized_end=6563 _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_HALTJOB']._serialized_start=3931 _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_HALTJOB']._serialized_end=3940 _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_CONTINUEJOB']._serialized_start=4228 _globals['_MSSQLSOURCECONNECTIONOPTIONS_COLUMNREMOVALSTRATEGY_CONTINUEJOB']._serialized_end=4241 - _globals['_MSSQLSOURCESCHEMAOPTION']._serialized_start=6145 - _globals['_MSSQLSOURCESCHEMAOPTION']._serialized_end=6276 - _globals['_MSSQLSOURCETABLEOPTION']._serialized_start=6278 - _globals['_MSSQLSOURCETABLEOPTION']._serialized_end=6390 - _globals['_AWSS3SOURCECONNECTIONOPTIONS']._serialized_start=6392 - _globals['_AWSS3SOURCECONNECTIONOPTIONS']._serialized_end=6469 - _globals['_JOBDESTINATIONOPTIONS']._serialized_start=6472 - _globals['_JOBDESTINATIONOPTIONS']._serialized_end=7191 - _globals['_MONGODBDESTINATIONCONNECTIONOPTIONS']._serialized_start=7193 - _globals['_MONGODBDESTINATIONCONNECTIONOPTIONS']._serialized_end=7230 - _globals['_GCPCLOUDSTORAGEDESTINATIONCONNECTIONOPTIONS']._serialized_start=7232 - _globals['_GCPCLOUDSTORAGEDESTINATIONCONNECTIONOPTIONS']._serialized_end=7277 - _globals['_DYNAMODBDESTINATIONCONNECTIONOPTIONS']._serialized_start=7279 - _globals['_DYNAMODBDESTINATIONCONNECTIONOPTIONS']._serialized_end=7404 - _globals['_DYNAMODBDESTINATIONTABLEMAPPING']._serialized_start=7406 - _globals['_DYNAMODBDESTINATIONTABLEMAPPING']._serialized_end=7519 - _globals['_POSTGRESDESTINATIONCONNECTIONOPTIONS']._serialized_start=7522 - _globals['_POSTGRESDESTINATIONCONNECTIONOPTIONS']._serialized_end=7942 - _globals['_POSTGRESONCONFLICTCONFIG']._serialized_start=7945 - _globals['_POSTGRESONCONFLICTCONFIG']._serialized_end=8273 - _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTDONOTHING']._serialized_start=8197 - _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTDONOTHING']._serialized_end=8226 - _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTUPDATE']._serialized_start=8228 - _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTUPDATE']._serialized_end=8254 - _globals['_POSTGRESTRUNCATETABLECONFIG']._serialized_start=8275 - _globals['_POSTGRESTRUNCATETABLECONFIG']._serialized_end=8384 - _globals['_MYSQLDESTINATIONCONNECTIONOPTIONS']._serialized_start=8387 - _globals['_MYSQLDESTINATIONCONNECTIONOPTIONS']._serialized_end=8798 - _globals['_MYSQLTRUNCATETABLECONFIG']._serialized_start=8800 - _globals['_MYSQLTRUNCATETABLECONFIG']._serialized_end=8880 - _globals['_MYSQLONCONFLICTCONFIG']._serialized_start=8883 - _globals['_MYSQLONCONFLICTCONFIG']._serialized_end=9186 - _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTDONOTHING']._serialized_start=9116 - _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTDONOTHING']._serialized_end=9142 - _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTUPDATE']._serialized_start=9144 - _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTUPDATE']._serialized_end=9167 - _globals['_MSSQLDESTINATIONCONNECTIONOPTIONS']._serialized_start=9189 - _globals['_MSSQLDESTINATIONCONNECTIONOPTIONS']._serialized_end=9600 - _globals['_MSSQLTRUNCATETABLECONFIG']._serialized_start=9602 - _globals['_MSSQLTRUNCATETABLECONFIG']._serialized_end=9682 - _globals['_MSSQLONCONFLICTCONFIG']._serialized_start=9684 - _globals['_MSSQLONCONFLICTCONFIG']._serialized_end=9738 - _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS']._serialized_start=9741 - _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS']._serialized_end=10310 - _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS_STORAGECLASS']._serialized_start=10010 - _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS_STORAGECLASS']._serialized_end=10280 - _globals['_BATCHCONFIG']._serialized_start=10312 - _globals['_BATCHCONFIG']._serialized_end=10402 - _globals['_CREATEJOBREQUEST']._serialized_start=10405 - _globals['_CREATEJOBREQUEST']._serialized_end=11449 - _globals['_JOBTYPECONFIG']._serialized_start=11452 - _globals['_JOBTYPECONFIG']._serialized_end=12665 - _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_start=11613 - _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_end=11626 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_start=11629 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_end=12646 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_start=11989 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_end=12033 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_start=12035 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_end=12080 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_start=12083 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_end=12386 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_start=12388 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_end=12400 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_start=12403 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_end=12531 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_start=12533 - _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_end=12614 - _globals['_WORKFLOWOPTIONS']._serialized_start=12667 - _globals['_WORKFLOWOPTIONS']._serialized_end=12780 - _globals['_ACTIVITYOPTIONS']._serialized_start=12783 - _globals['_ACTIVITYOPTIONS']._serialized_end=13060 - _globals['_RETRYPOLICY']._serialized_start=13062 - _globals['_RETRYPOLICY']._serialized_end=13153 - _globals['_CREATEJOBRESPONSE']._serialized_start=13155 - _globals['_CREATEJOBRESPONSE']._serialized_end=13212 - _globals['_JOBMAPPINGTRANSFORMER']._serialized_start=13214 - _globals['_JOBMAPPINGTRANSFORMER']._serialized_end=13301 - _globals['_JOBMAPPING']._serialized_start=13304 - _globals['_JOBMAPPING']._serialized_end=13485 - _globals['_GETJOBREQUEST']._serialized_start=13487 - _globals['_GETJOBREQUEST']._serialized_end=13528 - _globals['_GETJOBRESPONSE']._serialized_start=13530 - _globals['_GETJOBRESPONSE']._serialized_end=13584 - _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_start=13586 - _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_end=13698 - _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_start=13700 - _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_end=13765 - _globals['_PAUSEJOBREQUEST']._serialized_start=13767 - _globals['_PAUSEJOBREQUEST']._serialized_end=13866 - _globals['_PAUSEJOBRESPONSE']._serialized_start=13868 - _globals['_PAUSEJOBRESPONSE']._serialized_end=13924 - _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_start=13927 - _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_end=14240 - _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_start=14242 - _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_end=14315 - _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_start=14317 - _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_end=14431 - _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_start=14433 - _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_end=14535 - _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_start=14537 - _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_end=14631 - _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_start=14633 - _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_end=14735 - _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_start=14738 - _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_end=15114 - _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_start=15117 - _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_end=15325 - _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_start=15327 - _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_end=15407 - _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=15410 - _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=15632 - _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=15634 - _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=15712 - _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=15714 - _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=15802 - _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=15804 - _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=15844 - _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_start=15847 - _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_end=16003 - _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_start=16005 - _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_end=16084 - _globals['_DELETEJOBREQUEST']._serialized_start=16086 - _globals['_DELETEJOBREQUEST']._serialized_end=16130 - _globals['_DELETEJOBRESPONSE']._serialized_start=16132 - _globals['_DELETEJOBRESPONSE']._serialized_end=16151 - _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_start=16153 - _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_end=16268 - _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_start=16270 - _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_end=16333 - _globals['_GETJOBRUNSREQUEST']._serialized_start=16335 - _globals['_GETJOBRUNSREQUEST']._serialized_end=16438 - _globals['_GETJOBRUNSRESPONSE']._serialized_start=16440 - _globals['_GETJOBRUNSRESPONSE']._serialized_end=16510 - _globals['_GETJOBRUNREQUEST']._serialized_start=16512 - _globals['_GETJOBRUNREQUEST']._serialized_end=16601 - _globals['_GETJOBRUNRESPONSE']._serialized_start=16603 - _globals['_GETJOBRUNRESPONSE']._serialized_end=16670 - _globals['_CREATEJOBRUNREQUEST']._serialized_start=16672 - _globals['_CREATEJOBRUNREQUEST']._serialized_end=16726 - _globals['_CREATEJOBRUNRESPONSE']._serialized_start=16728 - _globals['_CREATEJOBRUNRESPONSE']._serialized_end=16750 - _globals['_CANCELJOBRUNREQUEST']._serialized_start=16752 - _globals['_CANCELJOBRUNREQUEST']._serialized_end=16844 - _globals['_CANCELJOBRUNRESPONSE']._serialized_start=16846 - _globals['_CANCELJOBRUNRESPONSE']._serialized_end=16868 - _globals['_JOB']._serialized_start=16871 - _globals['_JOB']._serialized_end=17673 - _globals['_JOBRECENTRUN']._serialized_start=17675 - _globals['_JOBRECENTRUN']._serialized_end=17778 - _globals['_GETJOBRECENTRUNSREQUEST']._serialized_start=17780 - _globals['_GETJOBRECENTRUNSREQUEST']._serialized_end=17838 - _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_start=17840 - _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_end=17928 - _globals['_JOBNEXTRUNS']._serialized_start=17930 - _globals['_JOBNEXTRUNS']._serialized_end=18009 - _globals['_GETJOBNEXTRUNSREQUEST']._serialized_start=18011 - _globals['_GETJOBNEXTRUNSREQUEST']._serialized_end=18067 - _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_start=18069 - _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_end=18150 - _globals['_GETJOBSTATUSREQUEST']._serialized_start=18152 - _globals['_GETJOBSTATUSREQUEST']._serialized_end=18206 - _globals['_GETJOBSTATUSRESPONSE']._serialized_start=18208 - _globals['_GETJOBSTATUSRESPONSE']._serialized_end=18280 - _globals['_JOBSTATUSRECORD']._serialized_start=18282 - _globals['_JOBSTATUSRECORD']._serialized_end=18382 - _globals['_GETJOBSTATUSESREQUEST']._serialized_start=18384 - _globals['_GETJOBSTATUSESREQUEST']._serialized_end=18448 - _globals['_GETJOBSTATUSESRESPONSE']._serialized_start=18450 - _globals['_GETJOBSTATUSESRESPONSE']._serialized_end=18534 - _globals['_ACTIVITYFAILURE']._serialized_start=18536 - _globals['_ACTIVITYFAILURE']._serialized_end=18579 - _globals['_PENDINGACTIVITY']._serialized_start=18582 - _globals['_PENDINGACTIVITY']._serialized_end=18780 - _globals['_JOBRUN']._serialized_start=18783 - _globals['_JOBRUN']._serialized_end=19132 - _globals['_JOBRUNEVENTTASKERROR']._serialized_start=19134 - _globals['_JOBRUNEVENTTASKERROR']._serialized_end=19215 - _globals['_JOBRUNEVENTTASK']._serialized_start=19218 - _globals['_JOBRUNEVENTTASK']._serialized_end=19389 - _globals['_JOBRUNSYNCMETADATA']._serialized_start=19391 - _globals['_JOBRUNSYNCMETADATA']._serialized_end=19457 - _globals['_JOBRUNEVENTMETADATA']._serialized_start=19459 - _globals['_JOBRUNEVENTMETADATA']._serialized_end=19573 - _globals['_JOBRUNEVENT']._serialized_start=19576 - _globals['_JOBRUNEVENT']._serialized_end=19861 - _globals['_GETJOBRUNEVENTSREQUEST']._serialized_start=19863 - _globals['_GETJOBRUNEVENTSREQUEST']._serialized_end=19958 - _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_start=19960 - _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_end=20077 - _globals['_DELETEJOBRUNREQUEST']._serialized_start=20079 - _globals['_DELETEJOBRUNREQUEST']._serialized_end=20171 - _globals['_DELETEJOBRUNRESPONSE']._serialized_start=20173 - _globals['_DELETEJOBRUNRESPONSE']._serialized_end=20195 - _globals['_TERMINATEJOBRUNREQUEST']._serialized_start=20197 - _globals['_TERMINATEJOBRUNREQUEST']._serialized_end=20292 - _globals['_TERMINATEJOBRUNRESPONSE']._serialized_start=20294 - _globals['_TERMINATEJOBRUNRESPONSE']._serialized_end=20319 - _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_start=20322 - _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_end=20628 - _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_start=20631 - _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_end=20903 - _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_start=20832 - _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_end=20889 - _globals['_GETJOBRUNLOGSREQUEST']._serialized_start=20906 - _globals['_GETJOBRUNLOGSREQUEST']._serialized_end=21173 - _globals['_GETJOBRUNLOGSRESPONSE']._serialized_start=21176 - _globals['_GETJOBRUNLOGSRESPONSE']._serialized_end=21531 - _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_start=21277 - _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_end=21531 - _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_start=20832 - _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_end=20889 - _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_start=21534 - _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_end=21665 - _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_start=21667 - _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_end=21736 - _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_start=21738 - _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_end=21857 - _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_start=21859 - _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_end=21924 - _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_start=21927 - _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_end=22266 - _globals['_COLUMNERROR']._serialized_start=22269 - _globals['_COLUMNERROR']._serialized_end=23268 - _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_start=22465 - _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_end=22574 - _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_start=22577 - _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_end=23268 - _globals['_COLUMNWARNING']._serialized_start=23271 - _globals['_COLUMNWARNING']._serialized_end=23746 - _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_start=23481 - _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_end=23596 - _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_start=23599 - _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_end=23746 - _globals['_DATABASEERROR']._serialized_start=23749 - _globals['_DATABASEERROR']._serialized_end=24179 - _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_start=23881 - _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_end=23996 - _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_start=23999 - _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_end=24179 - _globals['_TABLEERROR']._serialized_start=24182 - _globals['_TABLEERROR']._serialized_end=24768 - _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_start=24323 - _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_end=24429 - _globals['_TABLEERROR_TABLEERRORCODE']._serialized_start=24432 - _globals['_TABLEERROR_TABLEERRORCODE']._serialized_end=24768 - _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_start=24771 - _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_end=25069 - _globals['_VALIDATESCHEMAREQUEST']._serialized_start=25071 - _globals['_VALIDATESCHEMAREQUEST']._serialized_end=25196 - _globals['_VALIDATESCHEMARESPONSE']._serialized_start=25199 - _globals['_VALIDATESCHEMARESPONSE']._serialized_end=25543 - _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_start=25490 - _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_end=25543 - _globals['_VIRTUALFOREIGNKEY']._serialized_start=25545 - _globals['_VIRTUALFOREIGNKEY']._serialized_end=25636 - _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_start=25639 - _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_end=25804 - _globals['_RUNCONTEXTKEY']._serialized_start=25807 - _globals['_RUNCONTEXTKEY']._serialized_end=25943 - _globals['_GETRUNCONTEXTREQUEST']._serialized_start=25945 - _globals['_GETRUNCONTEXTREQUEST']._serialized_end=26013 - _globals['_GETRUNCONTEXTRESPONSE']._serialized_start=26015 - _globals['_GETRUNCONTEXTRESPONSE']._serialized_end=26060 - _globals['_SETRUNCONTEXTREQUEST']._serialized_start=26062 - _globals['_SETRUNCONTEXTREQUEST']._serialized_end=26152 - _globals['_SETRUNCONTEXTRESPONSE']._serialized_start=26154 - _globals['_SETRUNCONTEXTRESPONSE']._serialized_end=26177 - _globals['_SETRUNCONTEXTSREQUEST']._serialized_start=26179 - _globals['_SETRUNCONTEXTSREQUEST']._serialized_end=26270 - _globals['_SETRUNCONTEXTSRESPONSE']._serialized_start=26272 - _globals['_SETRUNCONTEXTSRESPONSE']._serialized_end=26296 - _globals['_JOBHOOK']._serialized_start=26299 - _globals['_JOBHOOK']._serialized_end=26728 - _globals['_NEWJOBHOOK']._serialized_start=26731 - _globals['_NEWJOBHOOK']._serialized_end=26952 - _globals['_JOBHOOKCONFIG']._serialized_start=26955 - _globals['_JOBHOOKCONFIG']._serialized_end=27400 - _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_start=27034 - _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_end=27359 - _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_start=27199 - _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_end=27359 - _globals['_JOBHOOKTIMINGPRESYNC']._serialized_start=27402 - _globals['_JOBHOOKTIMINGPRESYNC']._serialized_end=27424 - _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_start=27426 - _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_end=27449 - _globals['_GETJOBHOOKSREQUEST']._serialized_start=27451 - _globals['_GETJOBHOOKSREQUEST']._serialized_end=27504 - _globals['_GETJOBHOOKSRESPONSE']._serialized_start=27506 - _globals['_GETJOBHOOKSRESPONSE']._serialized_end=27573 - _globals['_GETJOBHOOKREQUEST']._serialized_start=27575 - _globals['_GETJOBHOOKREQUEST']._serialized_end=27620 - _globals['_GETJOBHOOKRESPONSE']._serialized_start=27622 - _globals['_GETJOBHOOKRESPONSE']._serialized_end=27686 - _globals['_CREATEJOBHOOKREQUEST']._serialized_start=27688 - _globals['_CREATEJOBHOOKREQUEST']._serialized_end=27780 - _globals['_CREATEJOBHOOKRESPONSE']._serialized_start=27782 - _globals['_CREATEJOBHOOKRESPONSE']._serialized_end=27849 - _globals['_DELETEJOBHOOKREQUEST']._serialized_start=27851 - _globals['_DELETEJOBHOOKREQUEST']._serialized_end=27899 - _globals['_DELETEJOBHOOKRESPONSE']._serialized_start=27901 - _globals['_DELETEJOBHOOKRESPONSE']._serialized_end=27924 - _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_start=27926 - _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_end=28000 - _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_start=28002 - _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_end=28069 - _globals['_UPDATEJOBHOOKREQUEST']._serialized_start=28072 - _globals['_UPDATEJOBHOOKREQUEST']._serialized_end=28329 - _globals['_UPDATEJOBHOOKRESPONSE']._serialized_start=28331 - _globals['_UPDATEJOBHOOKRESPONSE']._serialized_end=28398 - _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_start=28400 - _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_end=28478 - _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_start=28480 - _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_end=28551 - _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_start=28554 - _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_end=28776 - _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_start=28703 - _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_end=28776 - _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_start=28778 - _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_end=28859 - _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_start=28861 - _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_end=28971 - _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_start=28973 - _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_end=29063 - _globals['_PIIDETECTIONREPORT']._serialized_start=29066 - _globals['_PIIDETECTIONREPORT']._serialized_end=29688 - _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_start=29160 - _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_end=29688 - _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_start=29308 - _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_end=29688 - _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_start=29554 - _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_end=29589 - _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_start=29591 - _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_end=29656 - _globals['_JOBSERVICE']._serialized_start=30498 - _globals['_JOBSERVICE']._serialized_end=34770 + _globals['_MSSQLSOURCESCHEMAOPTION']._serialized_start=6566 + _globals['_MSSQLSOURCESCHEMAOPTION']._serialized_end=6697 + _globals['_MSSQLSOURCETABLEOPTION']._serialized_start=6699 + _globals['_MSSQLSOURCETABLEOPTION']._serialized_end=6811 + _globals['_AWSS3SOURCECONNECTIONOPTIONS']._serialized_start=6813 + _globals['_AWSS3SOURCECONNECTIONOPTIONS']._serialized_end=6890 + _globals['_JOBDESTINATIONOPTIONS']._serialized_start=6893 + _globals['_JOBDESTINATIONOPTIONS']._serialized_end=7612 + _globals['_MONGODBDESTINATIONCONNECTIONOPTIONS']._serialized_start=7614 + _globals['_MONGODBDESTINATIONCONNECTIONOPTIONS']._serialized_end=7651 + _globals['_GCPCLOUDSTORAGEDESTINATIONCONNECTIONOPTIONS']._serialized_start=7653 + _globals['_GCPCLOUDSTORAGEDESTINATIONCONNECTIONOPTIONS']._serialized_end=7698 + _globals['_DYNAMODBDESTINATIONCONNECTIONOPTIONS']._serialized_start=7700 + _globals['_DYNAMODBDESTINATIONCONNECTIONOPTIONS']._serialized_end=7825 + _globals['_DYNAMODBDESTINATIONTABLEMAPPING']._serialized_start=7827 + _globals['_DYNAMODBDESTINATIONTABLEMAPPING']._serialized_end=7940 + _globals['_POSTGRESDESTINATIONCONNECTIONOPTIONS']._serialized_start=7943 + _globals['_POSTGRESDESTINATIONCONNECTIONOPTIONS']._serialized_end=8363 + _globals['_POSTGRESONCONFLICTCONFIG']._serialized_start=8366 + _globals['_POSTGRESONCONFLICTCONFIG']._serialized_end=8694 + _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTDONOTHING']._serialized_start=8618 + _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTDONOTHING']._serialized_end=8647 + _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTUPDATE']._serialized_start=8649 + _globals['_POSTGRESONCONFLICTCONFIG_POSTGRESONCONFLICTUPDATE']._serialized_end=8675 + _globals['_POSTGRESTRUNCATETABLECONFIG']._serialized_start=8696 + _globals['_POSTGRESTRUNCATETABLECONFIG']._serialized_end=8805 + _globals['_MYSQLDESTINATIONCONNECTIONOPTIONS']._serialized_start=8808 + _globals['_MYSQLDESTINATIONCONNECTIONOPTIONS']._serialized_end=9219 + _globals['_MYSQLTRUNCATETABLECONFIG']._serialized_start=9221 + _globals['_MYSQLTRUNCATETABLECONFIG']._serialized_end=9301 + _globals['_MYSQLONCONFLICTCONFIG']._serialized_start=9304 + _globals['_MYSQLONCONFLICTCONFIG']._serialized_end=9607 + _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTDONOTHING']._serialized_start=9537 + _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTDONOTHING']._serialized_end=9563 + _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTUPDATE']._serialized_start=9565 + _globals['_MYSQLONCONFLICTCONFIG_MYSQLONCONFLICTUPDATE']._serialized_end=9588 + _globals['_MSSQLDESTINATIONCONNECTIONOPTIONS']._serialized_start=9610 + _globals['_MSSQLDESTINATIONCONNECTIONOPTIONS']._serialized_end=10021 + _globals['_MSSQLTRUNCATETABLECONFIG']._serialized_start=10023 + _globals['_MSSQLTRUNCATETABLECONFIG']._serialized_end=10103 + _globals['_MSSQLONCONFLICTCONFIG']._serialized_start=10105 + _globals['_MSSQLONCONFLICTCONFIG']._serialized_end=10159 + _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS']._serialized_start=10162 + _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS']._serialized_end=10731 + _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS_STORAGECLASS']._serialized_start=10431 + _globals['_AWSS3DESTINATIONCONNECTIONOPTIONS_STORAGECLASS']._serialized_end=10701 + _globals['_BATCHCONFIG']._serialized_start=10733 + _globals['_BATCHCONFIG']._serialized_end=10823 + _globals['_CREATEJOBREQUEST']._serialized_start=10826 + _globals['_CREATEJOBREQUEST']._serialized_end=11870 + _globals['_JOBTYPECONFIG']._serialized_start=11873 + _globals['_JOBTYPECONFIG']._serialized_end=13086 + _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_start=12034 + _globals['_JOBTYPECONFIG_JOBTYPESYNC']._serialized_end=12047 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_start=12050 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT']._serialized_end=13067 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_start=12410 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCREMENTAL']._serialized_end=12454 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_start=12456 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_DATASAMPLING']._serialized_end=12501 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_start=12504 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLESCANFILTER']._serialized_end=12807 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_start=12809 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_INCLUDEALL']._serialized_end=12821 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_start=12824 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEPATTERNS']._serialized_end=12952 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_start=12954 + _globals['_JOBTYPECONFIG_JOBTYPEPIIDETECT_TABLEIDENTIFIER']._serialized_end=13035 + _globals['_WORKFLOWOPTIONS']._serialized_start=13088 + _globals['_WORKFLOWOPTIONS']._serialized_end=13201 + _globals['_ACTIVITYOPTIONS']._serialized_start=13204 + _globals['_ACTIVITYOPTIONS']._serialized_end=13481 + _globals['_RETRYPOLICY']._serialized_start=13483 + _globals['_RETRYPOLICY']._serialized_end=13574 + _globals['_CREATEJOBRESPONSE']._serialized_start=13576 + _globals['_CREATEJOBRESPONSE']._serialized_end=13633 + _globals['_JOBMAPPINGTRANSFORMER']._serialized_start=13635 + _globals['_JOBMAPPINGTRANSFORMER']._serialized_end=13722 + _globals['_JOBMAPPING']._serialized_start=13725 + _globals['_JOBMAPPING']._serialized_end=13906 + _globals['_GETJOBREQUEST']._serialized_start=13908 + _globals['_GETJOBREQUEST']._serialized_end=13949 + _globals['_GETJOBRESPONSE']._serialized_start=13951 + _globals['_GETJOBRESPONSE']._serialized_end=14005 + _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_start=14007 + _globals['_UPDATEJOBSCHEDULEREQUEST']._serialized_end=14119 + _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_start=14121 + _globals['_UPDATEJOBSCHEDULERESPONSE']._serialized_end=14186 + _globals['_PAUSEJOBREQUEST']._serialized_start=14188 + _globals['_PAUSEJOBREQUEST']._serialized_end=14287 + _globals['_PAUSEJOBRESPONSE']._serialized_start=14289 + _globals['_PAUSEJOBRESPONSE']._serialized_end=14345 + _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_start=14348 + _globals['_UPDATEJOBSOURCECONNECTIONREQUEST']._serialized_end=14661 + _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_start=14663 + _globals['_UPDATEJOBSOURCECONNECTIONRESPONSE']._serialized_end=14736 + _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_start=14738 + _globals['_POSTGRESSOURCESCHEMASUBSET']._serialized_end=14852 + _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_start=14854 + _globals['_MYSQLSOURCESCHEMASUBSET']._serialized_end=14956 + _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_start=14958 + _globals['_DYNAMODBSOURCESCHEMASUBSET']._serialized_end=15052 + _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_start=15054 + _globals['_MSSQLSOURCESCHEMASUBSET']._serialized_end=15156 + _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_start=15159 + _globals['_JOBSOURCESQLSUBETSCHEMAS']._serialized_end=15535 + _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_start=15538 + _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSREQUEST']._serialized_end=15746 + _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_start=15748 + _globals['_SETJOBSOURCESQLCONNECTIONSUBSETSRESPONSE']._serialized_end=15828 + _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=15831 + _globals['_UPDATEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=16053 + _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=16055 + _globals['_UPDATEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=16133 + _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_start=16135 + _globals['_DELETEJOBDESTINATIONCONNECTIONREQUEST']._serialized_end=16223 + _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_start=16225 + _globals['_DELETEJOBDESTINATIONCONNECTIONRESPONSE']._serialized_end=16265 + _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_start=16268 + _globals['_CREATEJOBDESTINATIONCONNECTIONSREQUEST']._serialized_end=16424 + _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_start=16426 + _globals['_CREATEJOBDESTINATIONCONNECTIONSRESPONSE']._serialized_end=16505 + _globals['_DELETEJOBREQUEST']._serialized_start=16507 + _globals['_DELETEJOBREQUEST']._serialized_end=16551 + _globals['_DELETEJOBRESPONSE']._serialized_start=16553 + _globals['_DELETEJOBRESPONSE']._serialized_end=16572 + _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_start=16574 + _globals['_ISJOBNAMEAVAILABLEREQUEST']._serialized_end=16689 + _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_start=16691 + _globals['_ISJOBNAMEAVAILABLERESPONSE']._serialized_end=16754 + _globals['_GETJOBRUNSREQUEST']._serialized_start=16756 + _globals['_GETJOBRUNSREQUEST']._serialized_end=16859 + _globals['_GETJOBRUNSRESPONSE']._serialized_start=16861 + _globals['_GETJOBRUNSRESPONSE']._serialized_end=16931 + _globals['_GETJOBRUNREQUEST']._serialized_start=16933 + _globals['_GETJOBRUNREQUEST']._serialized_end=17022 + _globals['_GETJOBRUNRESPONSE']._serialized_start=17024 + _globals['_GETJOBRUNRESPONSE']._serialized_end=17091 + _globals['_CREATEJOBRUNREQUEST']._serialized_start=17093 + _globals['_CREATEJOBRUNREQUEST']._serialized_end=17147 + _globals['_CREATEJOBRUNRESPONSE']._serialized_start=17149 + _globals['_CREATEJOBRUNRESPONSE']._serialized_end=17171 + _globals['_CANCELJOBRUNREQUEST']._serialized_start=17173 + _globals['_CANCELJOBRUNREQUEST']._serialized_end=17265 + _globals['_CANCELJOBRUNRESPONSE']._serialized_start=17267 + _globals['_CANCELJOBRUNRESPONSE']._serialized_end=17289 + _globals['_JOB']._serialized_start=17292 + _globals['_JOB']._serialized_end=18094 + _globals['_JOBRECENTRUN']._serialized_start=18096 + _globals['_JOBRECENTRUN']._serialized_end=18199 + _globals['_GETJOBRECENTRUNSREQUEST']._serialized_start=18201 + _globals['_GETJOBRECENTRUNSREQUEST']._serialized_end=18259 + _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_start=18261 + _globals['_GETJOBRECENTRUNSRESPONSE']._serialized_end=18349 + _globals['_JOBNEXTRUNS']._serialized_start=18351 + _globals['_JOBNEXTRUNS']._serialized_end=18430 + _globals['_GETJOBNEXTRUNSREQUEST']._serialized_start=18432 + _globals['_GETJOBNEXTRUNSREQUEST']._serialized_end=18488 + _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_start=18490 + _globals['_GETJOBNEXTRUNSRESPONSE']._serialized_end=18571 + _globals['_GETJOBSTATUSREQUEST']._serialized_start=18573 + _globals['_GETJOBSTATUSREQUEST']._serialized_end=18627 + _globals['_GETJOBSTATUSRESPONSE']._serialized_start=18629 + _globals['_GETJOBSTATUSRESPONSE']._serialized_end=18701 + _globals['_JOBSTATUSRECORD']._serialized_start=18703 + _globals['_JOBSTATUSRECORD']._serialized_end=18803 + _globals['_GETJOBSTATUSESREQUEST']._serialized_start=18805 + _globals['_GETJOBSTATUSESREQUEST']._serialized_end=18869 + _globals['_GETJOBSTATUSESRESPONSE']._serialized_start=18871 + _globals['_GETJOBSTATUSESRESPONSE']._serialized_end=18955 + _globals['_ACTIVITYFAILURE']._serialized_start=18957 + _globals['_ACTIVITYFAILURE']._serialized_end=19000 + _globals['_PENDINGACTIVITY']._serialized_start=19003 + _globals['_PENDINGACTIVITY']._serialized_end=19201 + _globals['_JOBRUN']._serialized_start=19204 + _globals['_JOBRUN']._serialized_end=19553 + _globals['_JOBRUNEVENTTASKERROR']._serialized_start=19555 + _globals['_JOBRUNEVENTTASKERROR']._serialized_end=19636 + _globals['_JOBRUNEVENTTASK']._serialized_start=19639 + _globals['_JOBRUNEVENTTASK']._serialized_end=19810 + _globals['_JOBRUNSYNCMETADATA']._serialized_start=19812 + _globals['_JOBRUNSYNCMETADATA']._serialized_end=19878 + _globals['_JOBRUNEVENTMETADATA']._serialized_start=19880 + _globals['_JOBRUNEVENTMETADATA']._serialized_end=19994 + _globals['_JOBRUNEVENT']._serialized_start=19997 + _globals['_JOBRUNEVENT']._serialized_end=20282 + _globals['_GETJOBRUNEVENTSREQUEST']._serialized_start=20284 + _globals['_GETJOBRUNEVENTSREQUEST']._serialized_end=20379 + _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_start=20381 + _globals['_GETJOBRUNEVENTSRESPONSE']._serialized_end=20498 + _globals['_DELETEJOBRUNREQUEST']._serialized_start=20500 + _globals['_DELETEJOBRUNREQUEST']._serialized_end=20592 + _globals['_DELETEJOBRUNRESPONSE']._serialized_start=20594 + _globals['_DELETEJOBRUNRESPONSE']._serialized_end=20616 + _globals['_TERMINATEJOBRUNREQUEST']._serialized_start=20618 + _globals['_TERMINATEJOBRUNREQUEST']._serialized_end=20713 + _globals['_TERMINATEJOBRUNRESPONSE']._serialized_start=20715 + _globals['_TERMINATEJOBRUNRESPONSE']._serialized_end=20740 + _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_start=20743 + _globals['_GETJOBRUNLOGSSTREAMREQUEST']._serialized_end=21049 + _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_start=21052 + _globals['_GETJOBRUNLOGSSTREAMRESPONSE']._serialized_end=21324 + _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_start=21253 + _globals['_GETJOBRUNLOGSSTREAMRESPONSE_LABELSENTRY']._serialized_end=21310 + _globals['_GETJOBRUNLOGSREQUEST']._serialized_start=21327 + _globals['_GETJOBRUNLOGSREQUEST']._serialized_end=21594 + _globals['_GETJOBRUNLOGSRESPONSE']._serialized_start=21597 + _globals['_GETJOBRUNLOGSRESPONSE']._serialized_end=21952 + _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_start=21698 + _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE']._serialized_end=21952 + _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_start=21253 + _globals['_GETJOBRUNLOGSRESPONSE_LOGLINE_LABELSENTRY']._serialized_end=21310 + _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_start=21955 + _globals['_SETJOBWORKFLOWOPTIONSREQUEST']._serialized_end=22086 + _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_start=22088 + _globals['_SETJOBWORKFLOWOPTIONSRESPONSE']._serialized_end=22157 + _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_start=22159 + _globals['_SETJOBSYNCOPTIONSREQUEST']._serialized_end=22278 + _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_start=22280 + _globals['_SETJOBSYNCOPTIONSRESPONSE']._serialized_end=22345 + _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_start=22348 + _globals['_VALIDATEJOBMAPPINGSREQUEST']._serialized_end=22687 + _globals['_COLUMNERROR']._serialized_start=22690 + _globals['_COLUMNERROR']._serialized_end=23689 + _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_start=22886 + _globals['_COLUMNERROR_COLUMNERRORREPORT']._serialized_end=22995 + _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_start=22998 + _globals['_COLUMNERROR_COLUMNERRORCODE']._serialized_end=23689 + _globals['_COLUMNWARNING']._serialized_start=23692 + _globals['_COLUMNWARNING']._serialized_end=24167 + _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_start=23902 + _globals['_COLUMNWARNING_COLUMNWARNINGREPORT']._serialized_end=24017 + _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_start=24020 + _globals['_COLUMNWARNING_COLUMNWARNINGCODE']._serialized_end=24167 + _globals['_DATABASEERROR']._serialized_start=24170 + _globals['_DATABASEERROR']._serialized_end=24600 + _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_start=24302 + _globals['_DATABASEERROR_DATABASEERRORREPORT']._serialized_end=24417 + _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_start=24420 + _globals['_DATABASEERROR_DATABASEERRORCODE']._serialized_end=24600 + _globals['_TABLEERROR']._serialized_start=24603 + _globals['_TABLEERROR']._serialized_end=25189 + _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_start=24744 + _globals['_TABLEERROR_TABLEERRORREPORT']._serialized_end=24850 + _globals['_TABLEERROR_TABLEERRORCODE']._serialized_start=24853 + _globals['_TABLEERROR_TABLEERRORCODE']._serialized_end=25189 + _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_start=25192 + _globals['_VALIDATEJOBMAPPINGSRESPONSE']._serialized_end=25490 + _globals['_VALIDATESCHEMAREQUEST']._serialized_start=25492 + _globals['_VALIDATESCHEMAREQUEST']._serialized_end=25617 + _globals['_VALIDATESCHEMARESPONSE']._serialized_start=25620 + _globals['_VALIDATESCHEMARESPONSE']._serialized_end=25964 + _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_start=25911 + _globals['_VALIDATESCHEMARESPONSE_TABLE']._serialized_end=25964 + _globals['_VIRTUALFOREIGNKEY']._serialized_start=25966 + _globals['_VIRTUALFOREIGNKEY']._serialized_end=26057 + _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_start=26060 + _globals['_VIRTUALFOREIGNCONSTRAINT']._serialized_end=26225 + _globals['_RUNCONTEXTKEY']._serialized_start=26228 + _globals['_RUNCONTEXTKEY']._serialized_end=26364 + _globals['_GETRUNCONTEXTREQUEST']._serialized_start=26366 + _globals['_GETRUNCONTEXTREQUEST']._serialized_end=26434 + _globals['_GETRUNCONTEXTRESPONSE']._serialized_start=26436 + _globals['_GETRUNCONTEXTRESPONSE']._serialized_end=26481 + _globals['_SETRUNCONTEXTREQUEST']._serialized_start=26483 + _globals['_SETRUNCONTEXTREQUEST']._serialized_end=26573 + _globals['_SETRUNCONTEXTRESPONSE']._serialized_start=26575 + _globals['_SETRUNCONTEXTRESPONSE']._serialized_end=26598 + _globals['_SETRUNCONTEXTSREQUEST']._serialized_start=26600 + _globals['_SETRUNCONTEXTSREQUEST']._serialized_end=26691 + _globals['_SETRUNCONTEXTSRESPONSE']._serialized_start=26693 + _globals['_SETRUNCONTEXTSRESPONSE']._serialized_end=26717 + _globals['_JOBHOOK']._serialized_start=26720 + _globals['_JOBHOOK']._serialized_end=27149 + _globals['_NEWJOBHOOK']._serialized_start=27152 + _globals['_NEWJOBHOOK']._serialized_end=27373 + _globals['_JOBHOOKCONFIG']._serialized_start=27376 + _globals['_JOBHOOKCONFIG']._serialized_end=27821 + _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_start=27455 + _globals['_JOBHOOKCONFIG_JOBSQLHOOK']._serialized_end=27780 + _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_start=27620 + _globals['_JOBHOOKCONFIG_JOBSQLHOOK_TIMING']._serialized_end=27780 + _globals['_JOBHOOKTIMINGPRESYNC']._serialized_start=27823 + _globals['_JOBHOOKTIMINGPRESYNC']._serialized_end=27845 + _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_start=27847 + _globals['_JOBHOOKTIMINGPOSTSYNC']._serialized_end=27870 + _globals['_GETJOBHOOKSREQUEST']._serialized_start=27872 + _globals['_GETJOBHOOKSREQUEST']._serialized_end=27925 + _globals['_GETJOBHOOKSRESPONSE']._serialized_start=27927 + _globals['_GETJOBHOOKSRESPONSE']._serialized_end=27994 + _globals['_GETJOBHOOKREQUEST']._serialized_start=27996 + _globals['_GETJOBHOOKREQUEST']._serialized_end=28041 + _globals['_GETJOBHOOKRESPONSE']._serialized_start=28043 + _globals['_GETJOBHOOKRESPONSE']._serialized_end=28107 + _globals['_CREATEJOBHOOKREQUEST']._serialized_start=28109 + _globals['_CREATEJOBHOOKREQUEST']._serialized_end=28201 + _globals['_CREATEJOBHOOKRESPONSE']._serialized_start=28203 + _globals['_CREATEJOBHOOKRESPONSE']._serialized_end=28270 + _globals['_DELETEJOBHOOKREQUEST']._serialized_start=28272 + _globals['_DELETEJOBHOOKREQUEST']._serialized_end=28320 + _globals['_DELETEJOBHOOKRESPONSE']._serialized_start=28322 + _globals['_DELETEJOBHOOKRESPONSE']._serialized_end=28345 + _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_start=28347 + _globals['_ISJOBHOOKNAMEAVAILABLEREQUEST']._serialized_end=28421 + _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_start=28423 + _globals['_ISJOBHOOKNAMEAVAILABLERESPONSE']._serialized_end=28490 + _globals['_UPDATEJOBHOOKREQUEST']._serialized_start=28493 + _globals['_UPDATEJOBHOOKREQUEST']._serialized_end=28750 + _globals['_UPDATEJOBHOOKRESPONSE']._serialized_start=28752 + _globals['_UPDATEJOBHOOKRESPONSE']._serialized_end=28819 + _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_start=28821 + _globals['_SETJOBHOOKENABLEDREQUEST']._serialized_end=28899 + _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_start=28901 + _globals['_SETJOBHOOKENABLEDRESPONSE']._serialized_end=28972 + _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_start=28975 + _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST']._serialized_end=29197 + _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_start=29124 + _globals['_GETACTIVEJOBHOOKSBYTIMINGREQUEST_TIMING']._serialized_end=29197 + _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_start=29199 + _globals['_GETACTIVEJOBHOOKSBYTIMINGRESPONSE']._serialized_end=29280 + _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_start=29282 + _globals['_GETPIIDETECTIONREPORTREQUEST']._serialized_end=29392 + _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_start=29394 + _globals['_GETPIIDETECTIONREPORTRESPONSE']._serialized_end=29484 + _globals['_PIIDETECTIONREPORT']._serialized_start=29487 + _globals['_PIIDETECTIONREPORT']._serialized_end=30109 + _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_start=29581 + _globals['_PIIDETECTIONREPORT_TABLEREPORT']._serialized_end=30109 + _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_start=29729 + _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT']._serialized_end=30109 + _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_start=29975 + _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_REGEX']._serialized_end=30010 + _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_start=30012 + _globals['_PIIDETECTIONREPORT_TABLEREPORT_COLUMNREPORT_LLM']._serialized_end=30077 + _globals['_JOBSERVICE']._serialized_start=30919 + _globals['_JOBSERVICE']._serialized_end=35191 # @@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 9be5676fff..fda13ffeac 100644 --- a/python/src/neosync/mgmt/v1alpha1/job_pb2.pyi +++ b/python/src/neosync/mgmt/v1alpha1/job_pb2.pyi @@ -286,7 +286,7 @@ class PostgresSourceTableOption(_message.Message): def __init__(self, table: _Optional[str] = ..., where_clause: _Optional[str] = ...) -> None: ... class MysqlSourceConnectionOptions(_message.Message): - __slots__ = ("halt_on_new_column_addition", "schemas", "connection_id", "subset_by_foreign_key_constraints", "column_removal_strategy") + __slots__ = ("halt_on_new_column_addition", "schemas", "connection_id", "subset_by_foreign_key_constraints", "column_removal_strategy", "new_column_addition_strategy") class ColumnRemovalStrategy(_message.Message): __slots__ = ("halt_job", "continue_job") class HaltJob(_message.Message): @@ -300,17 +300,32 @@ class MysqlSourceConnectionOptions(_message.Message): halt_job: MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob continue_job: MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob def __init__(self, halt_job: _Optional[_Union[MysqlSourceConnectionOptions.ColumnRemovalStrategy.HaltJob, _Mapping]] = ..., continue_job: _Optional[_Union[MysqlSourceConnectionOptions.ColumnRemovalStrategy.ContinueJob, _Mapping]] = ...) -> None: ... + class NewColumnAdditionStrategy(_message.Message): + __slots__ = ("halt_job", "auto_map") + class HaltJob(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + class AutoMap(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + HALT_JOB_FIELD_NUMBER: _ClassVar[int] + AUTO_MAP_FIELD_NUMBER: _ClassVar[int] + halt_job: MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob + auto_map: MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap + def __init__(self, halt_job: _Optional[_Union[MysqlSourceConnectionOptions.NewColumnAdditionStrategy.HaltJob, _Mapping]] = ..., auto_map: _Optional[_Union[MysqlSourceConnectionOptions.NewColumnAdditionStrategy.AutoMap, _Mapping]] = ...) -> None: ... HALT_ON_NEW_COLUMN_ADDITION_FIELD_NUMBER: _ClassVar[int] SCHEMAS_FIELD_NUMBER: _ClassVar[int] CONNECTION_ID_FIELD_NUMBER: _ClassVar[int] SUBSET_BY_FOREIGN_KEY_CONSTRAINTS_FIELD_NUMBER: _ClassVar[int] COLUMN_REMOVAL_STRATEGY_FIELD_NUMBER: _ClassVar[int] + NEW_COLUMN_ADDITION_STRATEGY_FIELD_NUMBER: _ClassVar[int] halt_on_new_column_addition: bool schemas: _containers.RepeatedCompositeFieldContainer[MysqlSourceSchemaOption] connection_id: str subset_by_foreign_key_constraints: bool column_removal_strategy: MysqlSourceConnectionOptions.ColumnRemovalStrategy - def __init__(self, halt_on_new_column_addition: bool = ..., schemas: _Optional[_Iterable[_Union[MysqlSourceSchemaOption, _Mapping]]] = ..., connection_id: _Optional[str] = ..., subset_by_foreign_key_constraints: bool = ..., column_removal_strategy: _Optional[_Union[MysqlSourceConnectionOptions.ColumnRemovalStrategy, _Mapping]] = ...) -> None: ... + new_column_addition_strategy: MysqlSourceConnectionOptions.NewColumnAdditionStrategy + def __init__(self, halt_on_new_column_addition: bool = ..., schemas: _Optional[_Iterable[_Union[MysqlSourceSchemaOption, _Mapping]]] = ..., connection_id: _Optional[str] = ..., subset_by_foreign_key_constraints: bool = ..., column_removal_strategy: _Optional[_Union[MysqlSourceConnectionOptions.ColumnRemovalStrategy, _Mapping]] = ..., new_column_addition_strategy: _Optional[_Union[MysqlSourceConnectionOptions.NewColumnAdditionStrategy, _Mapping]] = ...) -> None: ... class MysqlSourceSchemaOption(_message.Message): __slots__ = ("schema", "tables") diff --git a/worker/pkg/benthos/transformers/utils/integer_utils.go b/worker/pkg/benthos/transformers/utils/integer_utils.go index a9fa573ff6..9f4bc5c99c 100644 --- a/worker/pkg/benthos/transformers/utils/integer_utils.go +++ b/worker/pkg/benthos/transformers/utils/integer_utils.go @@ -65,8 +65,19 @@ func GenerateRandomInt64InValueRange(randomizer rng.Rand, minValue, maxValue int return minValue, nil } - rangeVal := maxValue - minValue + 1 - return minValue + randomizer.Int63n(rangeVal), nil + // Calculate range without the +1 to avoid overflow + rangeVal := maxValue - minValue + if rangeVal < 0 { + return 0, fmt.Errorf("invalid range: difference between max (%d) and min (%d) would result in non-positive range", maxValue, minValue) + } + + // Special case when maxValue is MaxInt64 to avoid overflow + if maxValue == math.MaxInt64 { + return minValue + randomizer.Int63n(rangeVal), nil + } + + // Normal case + return minValue + randomizer.Int63n(rangeVal+1), nil } // gets the number of digits in an int64 @@ -174,7 +185,11 @@ func AnyToInt64(value any) (int64, error) { switch v := value.(type) { case string: - return strconv.ParseInt(v, 10, 64) + val, err := strconv.ParseInt(v, 10, 64) + if err != nil { + return 0, fmt.Errorf("failed to convert string to int64 in AnyToInt64: %s", err) + } + return val, nil case float32: return int64(v), nil case float64: diff --git a/worker/pkg/benthos/transformers/utils/integer_utils_test.go b/worker/pkg/benthos/transformers/utils/integer_utils_test.go index 869c3965a2..ba6aafc099 100644 --- a/worker/pkg/benthos/transformers/utils/integer_utils_test.go +++ b/worker/pkg/benthos/transformers/utils/integer_utils_test.go @@ -2,6 +2,7 @@ package transformer_utils import ( "fmt" + "math" "testing" "time" @@ -46,30 +47,66 @@ func Test_GenerateRandomInt64InLengthRangeError(t *testing.T) { } func Test_GenerateRandomInt64InValueRange(t *testing.T) { - type testcase struct { - min int64 - max int64 - } - testcases := []testcase{ - {min: int64(2), max: int64(5)}, - {min: int64(23), max: int64(24)}, - {min: int64(4), max: int64(24)}, - {min: int64(2), max: int64(2)}, - {min: int64(2), max: int64(4)}, - {min: int64(1), max: int64(1)}, - {min: int64(0), max: int64(0)}, - {min: int64(-9), max: int64(-2)}, - {min: int64(-2), max: int64(9)}, - } - for _, tc := range testcases { - name := fmt.Sprintf("%s_%d_%d", t.Name(), tc.min, tc.max) - t.Run(name, func(t *testing.T) { - output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), tc.min, tc.max) - assert.NoError(t, err) - assert.GreaterOrEqual(t, output, tc.min, "%d>=%d was not true. output should be greater than or equal to the min. output: %s", output, tc.min, output) - assert.LessOrEqual(t, output, tc.max, "%d<=%d was not true. output should be less than or equal to the max. output: %s", output, tc.max, output) - }) - } + t.Run("basic range", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), 2, 5) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, int64(2)) + assert.LessOrEqual(t, output, int64(5)) + }) + + t.Run("same min and max", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), 2, 2) + require.NoError(t, err) + assert.Equal(t, int64(2), output) + }) + + t.Run("negative range", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), -9, -2) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, int64(-9)) + assert.LessOrEqual(t, output, int64(-2)) + }) + + t.Run("crossing zero", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), -2, 9) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, int64(-2)) + assert.LessOrEqual(t, output, int64(9)) + }) + + t.Run("zero range", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), 0, 0) + require.NoError(t, err) + assert.Equal(t, int64(0), output) + }) + + t.Run("swapped min max", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), 5, 2) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, int64(2)) + assert.LessOrEqual(t, output, int64(5)) + }) + + t.Run("max int64", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), int64(0), math.MaxInt64) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, int64(0)) + assert.LessOrEqual(t, output, int64(math.MaxInt64)) + }) + + t.Run("near max int64", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), math.MaxInt64-int64(10), math.MaxInt64) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, math.MaxInt64-int64(10)) + assert.LessOrEqual(t, output, int64(math.MaxInt64)) + }) + + t.Run("large range near max int64", func(t *testing.T) { + output, err := GenerateRandomInt64InValueRange(rng.New(time.Now().UnixNano()), math.MaxInt64/int64(2), math.MaxInt64) + require.NoError(t, err) + assert.GreaterOrEqual(t, output, math.MaxInt64/int64(2)) + assert.LessOrEqual(t, output, int64(math.MaxInt64)) + }) } func Test_GenerateRandomInt64InValueRange_Swapped_MinMax(t *testing.T) { diff --git a/worker/pkg/benthos/transformers/utils/string_utils.go b/worker/pkg/benthos/transformers/utils/string_utils.go index b37b6bf759..d788376dcb 100644 --- a/worker/pkg/benthos/transformers/utils/string_utils.go +++ b/worker/pkg/benthos/transformers/utils/string_utils.go @@ -6,6 +6,7 @@ import ( "regexp" "strings" "unicode" + "unsafe" "github.com/nucleuscloud/neosync/worker/pkg/rng" ) @@ -45,12 +46,53 @@ func GenerateRandomStringWithDefinedLength(randomizer rng.Rand, length int64) (s return strings.ToLower(string(result)), nil } +const ( + // Define size limits and thresholds + maxStringLength = 65535 // Maximum length of a TEXT field + smallStringThreshold = 1024 // 1KB - use simple generation for small strings + // Pre-generate chunks of 64 bytes for better performance + chunkSize = 64 +) + +// Pre-generate lowercase alphanumeric for better performance +var ( + lowercaseAlphanumeric = func() []byte { + result := make([]byte, len(alphanumeric)) + for i, c := range alphanumeric { + result[i] = byte(unicode.ToLower(c)) + } + return result + }() + + // Pre-generate random chunks for faster generation + randomChunks = func() [][]byte { + r := rng.New(1) // Use fixed seed for deterministic chunks + chunks := make([][]byte, 256) // 256 different chunks + for i := range chunks { + chunk := make([]byte, chunkSize) + for j := range chunk { + chunk[j] = lowercaseAlphanumeric[r.Intn(len(lowercaseAlphanumeric))] + } + chunks[i] = chunk + } + return chunks + }() +) + // Generate a random alphanumeric string within the interval [min, max] func GenerateRandomStringWithInclusiveBounds(randomizer rng.Rand, minValue, maxValue int64) (string, error) { if minValue < 0 || maxValue < 0 || minValue > maxValue { return "", fmt.Errorf("invalid bounds when attempting to generate random string: [%d:%d]", minValue, maxValue) } + // Cap the maximum length + if maxValue > maxStringLength { + maxValue = maxStringLength + if minValue > maxValue { + minValue = maxValue + } + } + var length int64 if minValue == maxValue { length = minValue @@ -62,14 +104,60 @@ func GenerateRandomStringWithInclusiveBounds(randomizer rng.Rand, minValue, maxV length = randlength } + if length == 0 { + return "", nil + } + + // For small strings, use the direct approach + if length <= smallStringThreshold { + return generateSmallString(randomizer, length) + } + + // For larger strings, use the optimized chunk approach + return generateLargeString(randomizer, length) +} + +func generateSmallString(randomizer rng.Rand, length int64) (string, error) { result := make([]byte, length) - for i := int64(0); i < length; i++ { - // Generate a random index in the range [0, len(alphabet)) - index := randomizer.Intn(len(alphanumeric)) - // Get the character at the generated index and append it to the result - result[i] = alphanumeric[index] + alphaLen := len(lowercaseAlphanumeric) + + // Generate 8 bytes at a time when possible + for i := int64(0); i+8 <= length; i += 8 { + // Generate a single random number for 8 characters + r := randomizer.Int63() + for j := 0; j < 8; j++ { + result[i+int64(j)] = lowercaseAlphanumeric[int(r>>(j*8))%alphaLen] + } } - return strings.ToLower(string(result)), nil + + // Handle remaining characters + for i := length - (length % 8); i < length; i++ { + result[i] = lowercaseAlphanumeric[randomizer.Intn(alphaLen)] + } + + return *(*string)(unsafe.Pointer(&result)), nil +} + +func generateLargeString(randomizer rng.Rand, length int64) (string, error) { + var builder strings.Builder + builder.Grow(int(length)) + + // Write full chunks + remaining := length + for remaining >= chunkSize { + // Use a random pre-generated chunk + chunk := randomChunks[randomizer.Intn(256)] + builder.Write(chunk) + remaining -= chunkSize + } + + // Handle remaining characters (less than chunkSize) + if remaining > 0 { + chunk := randomChunks[randomizer.Intn(256)] + builder.Write(chunk[:remaining]) + } + + return builder.String(), nil } const ( diff --git a/worker/pkg/benthos/transformers/utils/string_utils_test.go b/worker/pkg/benthos/transformers/utils/string_utils_test.go index 2163357baf..fa5f3508d1 100644 --- a/worker/pkg/benthos/transformers/utils/string_utils_test.go +++ b/worker/pkg/benthos/transformers/utils/string_utils_test.go @@ -256,3 +256,35 @@ func Test_getRangeFromCandidates(t *testing.T) { }) } } + +func BenchmarkGenerateRandomStringWithInclusiveBounds(b *testing.B) { + randomizer := rng.New(42) // Use a fixed seed for reproducibility + + benchCases := []struct { + name string + min int64 + max int64 + }{ + {"SmallRange_1_10", 1, 10}, + {"MediumRange_10_100", 10, 100}, + {"LargeRange_100_1000", 100, 1000}, + {"FixedLength_50_50", 50, 50}, + {"ZeroLength_0_0", 0, 0}, + {"Text_1_65535", 1, 65535}, // TEXT max size + {"AboveLimit_1_100000", 1, 100000}, // Should be capped at 65535 + {"FixedAboveLimit_100000", 100000, 100000}, // Should be capped at 65535 + {"MaxTextSize_65535", 65535, 65535}, // Maximum TEXT size + } + + for _, bc := range benchCases { + b.Run(bc.name, func(b *testing.B) { + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := GenerateRandomStringWithInclusiveBounds(randomizer, bc.min, bc.max) + if err != nil { + b.Fatalf("Error generating random string: %v", err) + } + } + }) + } +}