From 446b575f56444a976ab4ef0759bd0877035652cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20M=C3=BCller?= Date: Wed, 2 Nov 2022 22:59:42 +0100 Subject: [PATCH] Cache eviction for single execution in datacatalog and flyteadmin (#318) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added datacatalog endpoint for updating artifacts Existing artifacts can have their associated ArtifactData overwritten Signed-off-by: Nick Müller * datacatalog.UpdateArtifact returns ArtifactID Signed-off-by: Nick Müller * Added skip_cache override to ExecutionSpec, LaunchPlanSpec and WorkflowExecutionConfig Signed-off-by: Nick Müller * Added CatalogCacheStatus for skipped cache lookups Signed-off-by: Nick Müller * Added skip_cache flag to ExecutionRelaunchRequest Signed-off-by: Nick Müller * Renamed skip_cache flag to overwrite_cache Signed-off-by: Nick Müller Signed-off-by: Nick Müller --- clients/go/admin/authtype_enumer.go | 1 + .../go/datacatalog/mocks/DataCatalogClient.go | 48 + gen/pb-cpp/flyteidl/admin/execution.pb.cc | 328 ++- gen/pb-cpp/flyteidl/admin/execution.pb.h | 42 + gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc | 115 +- gen/pb-cpp/flyteidl/admin/launch_plan.pb.h | 21 + .../flyteidl/admin/matchable_resource.pb.cc | 130 +- .../flyteidl/admin/matchable_resource.pb.h | 21 + gen/pb-cpp/flyteidl/core/catalog.pb.cc | 10 +- gen/pb-cpp/flyteidl/core/catalog.pb.h | 3 +- .../datacatalog/datacatalog.grpc.pb.cc | 48 +- .../datacatalog/datacatalog.grpc.pb.h | 208 +- .../flyteidl/datacatalog/datacatalog.pb.cc | 1475 ++++++++-- .../flyteidl/datacatalog/datacatalog.pb.h | 693 ++++- gen/pb-go/flyteidl/admin/execution.pb.go | 247 +- .../flyteidl/admin/execution.pb.validate.go | 4 + gen/pb-go/flyteidl/admin/launch_plan.pb.go | 162 +- .../flyteidl/admin/launch_plan.pb.validate.go | 2 + .../flyteidl/admin/matchable_resource.pb.go | 186 +- .../admin/matchable_resource.pb.validate.go | 2 + gen/pb-go/flyteidl/core/catalog.pb.go | 65 +- .../flyteidl/datacatalog/datacatalog.pb.go | 441 ++- .../datacatalog/datacatalog.pb.validate.go | 171 ++ gen/pb-go/flyteidl/service/admin.swagger.json | 25 +- .../service/flyteadmin/api/swagger.yaml | 51 +- .../model_admin_execution_relaunch_request.go | 2 + .../flyteadmin/model_admin_execution_spec.go | 2 + .../model_admin_launch_plan_spec.go | 2 + .../model_admin_workflow_execution_config.go | 2 + .../model_core_catalog_cache_status.go | 3 +- gen/pb-go/flyteidl/service/openapi.go | 4 +- gen/pb-java/datacatalog/Datacatalog.java | 2418 ++++++++++++++++- .../flyteidl/admin/ExecutionOuterClass.java | 378 ++- .../flyteidl/admin/LaunchPlanOuterClass.java | 143 +- .../admin/MatchableResourceOuterClass.java | 162 +- gen/pb-java/flyteidl/core/Catalog.java | 24 +- gen/pb-js/flyteidl.d.ts | 27 +- gen/pb-js/flyteidl.js | 73 + gen/pb_python/flyteidl/admin/execution_pb2.py | 102 +- .../flyteidl/admin/launch_plan_pb2.py | 39 +- .../flyteidl/admin/matchable_resource_pb2.py | 31 +- gen/pb_python/flyteidl/core/catalog_pb2.py | 9 +- .../flyteidl/datacatalog/datacatalog_pb2.py | 229 +- .../datacatalog/datacatalog_pb2_grpc.py | 17 + .../admin_execution_relaunch_request.py | 34 +- .../flyteadmin/models/admin_execution_spec.py | 34 +- .../models/admin_launch_plan_spec.py | 34 +- .../models/admin_workflow_execution_config.py | 34 +- .../models/core_catalog_cache_status.py | 1 + protos/docs/admin/admin.rst | 4 + protos/docs/core/core.rst | 1 + protos/docs/datacatalog/datacatalog.rst | 46 + protos/flyteidl/admin/execution.proto | 13 + protos/flyteidl/admin/launch_plan.proto | 5 + .../flyteidl/admin/matchable_resource.proto | 5 + protos/flyteidl/core/catalog.proto | 2 + protos/flyteidl/datacatalog/datacatalog.proto | 29 + 57 files changed, 7035 insertions(+), 1373 deletions(-) diff --git a/clients/go/admin/authtype_enumer.go b/clients/go/admin/authtype_enumer.go index 33a816637..d09a85ac6 100644 --- a/clients/go/admin/authtype_enumer.go +++ b/clients/go/admin/authtype_enumer.go @@ -1,5 +1,6 @@ // Code generated by "enumer --type=AuthType -json -yaml -trimprefix=AuthType"; DO NOT EDIT. +// package admin import ( diff --git a/clients/go/datacatalog/mocks/DataCatalogClient.go b/clients/go/datacatalog/mocks/DataCatalogClient.go index 7ad132ad9..28e347f66 100644 --- a/clients/go/datacatalog/mocks/DataCatalogClient.go +++ b/clients/go/datacatalog/mocks/DataCatalogClient.go @@ -447,3 +447,51 @@ func (_m *DataCatalogClient) ReleaseReservation(ctx context.Context, in *datacat return r0, r1 } + +type DataCatalogClient_UpdateArtifact struct { + *mock.Call +} + +func (_m DataCatalogClient_UpdateArtifact) Return(_a0 *datacatalog.UpdateArtifactResponse, _a1 error) *DataCatalogClient_UpdateArtifact { + return &DataCatalogClient_UpdateArtifact{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *DataCatalogClient) OnUpdateArtifact(ctx context.Context, in *datacatalog.UpdateArtifactRequest, opts ...grpc.CallOption) *DataCatalogClient_UpdateArtifact { + c_call := _m.On("UpdateArtifact", ctx, in, opts) + return &DataCatalogClient_UpdateArtifact{Call: c_call} +} + +func (_m *DataCatalogClient) OnUpdateArtifactMatch(matchers ...interface{}) *DataCatalogClient_UpdateArtifact { + c_call := _m.On("UpdateArtifact", matchers...) + return &DataCatalogClient_UpdateArtifact{Call: c_call} +} + +// UpdateArtifact provides a mock function with given fields: ctx, in, opts +func (_m *DataCatalogClient) UpdateArtifact(ctx context.Context, in *datacatalog.UpdateArtifactRequest, opts ...grpc.CallOption) (*datacatalog.UpdateArtifactResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *datacatalog.UpdateArtifactResponse + if rf, ok := ret.Get(0).(func(context.Context, *datacatalog.UpdateArtifactRequest, ...grpc.CallOption) *datacatalog.UpdateArtifactResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*datacatalog.UpdateArtifactResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *datacatalog.UpdateArtifactRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.cc b/gen/pb-cpp/flyteidl/admin/execution.pb.cc index a66940761..caba0518a 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.cc @@ -523,6 +523,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fexecution_2eprot ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRelaunchRequest, id_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRelaunchRequest, name_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRelaunchRequest, overwrite_cache_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRecoverRequest, _internal_metadata_), ~0u, // no _extensions_ @@ -636,6 +637,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fexecution_2eprot PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, raw_output_data_config_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, cluster_assignment_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, interruptible_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, overwrite_cache_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionSpec, notification_overrides_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionTerminateRequest, _internal_metadata_), @@ -688,25 +690,25 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fexecution_2eprot static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::flyteidl::admin::ExecutionCreateRequest)}, { 10, -1, sizeof(::flyteidl::admin::ExecutionRelaunchRequest)}, - { 17, -1, sizeof(::flyteidl::admin::ExecutionRecoverRequest)}, - { 25, -1, sizeof(::flyteidl::admin::ExecutionCreateResponse)}, - { 31, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetRequest)}, - { 37, -1, sizeof(::flyteidl::admin::Execution)}, - { 45, -1, sizeof(::flyteidl::admin::ExecutionList)}, - { 52, -1, sizeof(::flyteidl::admin::LiteralMapBlob)}, - { 60, -1, sizeof(::flyteidl::admin::AbortMetadata)}, - { 67, -1, sizeof(::flyteidl::admin::ExecutionClosure)}, - { 87, -1, sizeof(::flyteidl::admin::SystemMetadata)}, - { 93, -1, sizeof(::flyteidl::admin::ExecutionMetadata)}, - { 105, -1, sizeof(::flyteidl::admin::NotificationList)}, - { 111, -1, sizeof(::flyteidl::admin::ExecutionSpec)}, - { 131, -1, sizeof(::flyteidl::admin::ExecutionTerminateRequest)}, - { 138, -1, sizeof(::flyteidl::admin::ExecutionTerminateResponse)}, - { 143, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataRequest)}, - { 149, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataResponse)}, - { 158, -1, sizeof(::flyteidl::admin::ExecutionUpdateRequest)}, - { 165, -1, sizeof(::flyteidl::admin::ExecutionStateChangeDetails)}, - { 173, -1, sizeof(::flyteidl::admin::ExecutionUpdateResponse)}, + { 18, -1, sizeof(::flyteidl::admin::ExecutionRecoverRequest)}, + { 26, -1, sizeof(::flyteidl::admin::ExecutionCreateResponse)}, + { 32, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetRequest)}, + { 38, -1, sizeof(::flyteidl::admin::Execution)}, + { 46, -1, sizeof(::flyteidl::admin::ExecutionList)}, + { 53, -1, sizeof(::flyteidl::admin::LiteralMapBlob)}, + { 61, -1, sizeof(::flyteidl::admin::AbortMetadata)}, + { 68, -1, sizeof(::flyteidl::admin::ExecutionClosure)}, + { 88, -1, sizeof(::flyteidl::admin::SystemMetadata)}, + { 94, -1, sizeof(::flyteidl::admin::ExecutionMetadata)}, + { 106, -1, sizeof(::flyteidl::admin::NotificationList)}, + { 112, -1, sizeof(::flyteidl::admin::ExecutionSpec)}, + { 133, -1, sizeof(::flyteidl::admin::ExecutionTerminateRequest)}, + { 140, -1, sizeof(::flyteidl::admin::ExecutionTerminateResponse)}, + { 145, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataRequest)}, + { 151, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataResponse)}, + { 160, -1, sizeof(::flyteidl::admin::ExecutionUpdateRequest)}, + { 167, -1, sizeof(::flyteidl::admin::ExecutionStateChangeDetails)}, + { 175, -1, sizeof(::flyteidl::admin::ExecutionUpdateResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -752,106 +754,108 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = "quest\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\014" "\n\004name\030\003 \001(\t\022+\n\004spec\030\004 \001(\0132\035.flyteidl.ad" "min.ExecutionSpec\022)\n\006inputs\030\005 \001(\0132\031.flyt" - "eidl.core.LiteralMap\"`\n\030ExecutionRelaunc" + "eidl.core.LiteralMap\"\177\n\030ExecutionRelaunc" "hRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wor" - "kflowExecutionIdentifier\022\014\n\004name\030\003 \001(\t\"\224" - "\001\n\027ExecutionRecoverRequest\0226\n\002id\030\001 \001(\0132*" - ".flyteidl.core.WorkflowExecutionIdentifi" - "er\022\014\n\004name\030\002 \001(\t\0223\n\010metadata\030\003 \001(\0132!.fly" - "teidl.admin.ExecutionMetadata\"Q\n\027Executi" - "onCreateResponse\0226\n\002id\030\001 \001(\0132*.flyteidl." - "core.WorkflowExecutionIdentifier\"U\n\033Work" - "flowExecutionGetRequest\0226\n\002id\030\001 \001(\0132*.fl" - "yteidl.core.WorkflowExecutionIdentifier\"" - "\243\001\n\tExecution\0226\n\002id\030\001 \001(\0132*.flyteidl.cor" - "e.WorkflowExecutionIdentifier\022+\n\004spec\030\002 " - "\001(\0132\035.flyteidl.admin.ExecutionSpec\0221\n\007cl" - "osure\030\003 \001(\0132 .flyteidl.admin.ExecutionCl" - "osure\"M\n\rExecutionList\022-\n\nexecutions\030\001 \003" - "(\0132\031.flyteidl.admin.Execution\022\r\n\005token\030\002" - " \001(\t\"X\n\016LiteralMapBlob\022/\n\006values\030\001 \001(\0132\031" - ".flyteidl.core.LiteralMapB\002\030\001H\000\022\r\n\003uri\030\002" - " \001(\tH\000B\006\n\004data\"1\n\rAbortMetadata\022\r\n\005cause" - "\030\001 \001(\t\022\021\n\tprincipal\030\002 \001(\t\"\360\005\n\020ExecutionC" - "losure\0225\n\007outputs\030\001 \001(\0132\036.flyteidl.admin" - ".LiteralMapBlobB\002\030\001H\000\022.\n\005error\030\002 \001(\0132\035.f" - "lyteidl.core.ExecutionErrorH\000\022\031\n\013abort_c" - "ause\030\n \001(\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 \001(\013" - "2\035.flyteidl.admin.AbortMetadataH\000\0224\n\013out" - "put_data\030\r \001(\0132\031.flyteidl.core.LiteralMa" - "pB\002\030\001H\000\0226\n\017computed_inputs\030\003 \001(\0132\031.flyte" - "idl.core.LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&" - ".flyteidl.core.WorkflowExecution.Phase\022." - "\n\nstarted_at\030\005 \001(\0132\032.google.protobuf.Tim" - "estamp\022+\n\010duration\030\006 \001(\0132\031.google.protob" - "uf.Duration\022.\n\ncreated_at\030\007 \001(\0132\032.google" - ".protobuf.Timestamp\022.\n\nupdated_at\030\010 \001(\0132" - "\032.google.protobuf.Timestamp\0223\n\rnotificat" - "ions\030\t \003(\0132\034.flyteidl.admin.Notification" - "\022.\n\013workflow_id\030\013 \001(\0132\031.flyteidl.core.Id" - "entifier\022I\n\024state_change_details\030\016 \001(\0132+" - ".flyteidl.admin.ExecutionStateChangeDeta" - "ilsB\017\n\routput_result\"+\n\016SystemMetadata\022\031" - "\n\021execution_cluster\030\001 \001(\t\"\332\003\n\021ExecutionM" - "etadata\022=\n\004mode\030\001 \001(\0162/.flyteidl.admin.E" - "xecutionMetadata.ExecutionMode\022\021\n\tprinci" - "pal\030\002 \001(\t\022\017\n\007nesting\030\003 \001(\r\0220\n\014scheduled_" - "at\030\004 \001(\0132\032.google.protobuf.Timestamp\022E\n\025" - "parent_node_execution\030\005 \001(\0132&.flyteidl.c" - "ore.NodeExecutionIdentifier\022G\n\023reference" - "_execution\030\020 \001(\0132*.flyteidl.core.Workflo" - "wExecutionIdentifier\0227\n\017system_metadata\030" - "\021 \001(\0132\036.flyteidl.admin.SystemMetadata\"g\n" - "\rExecutionMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020" - "\001\022\n\n\006SYSTEM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WOR" - "KFLOW\020\004\022\r\n\tRECOVERED\020\005\"G\n\020NotificationLi" - "st\0223\n\rnotifications\030\001 \003(\0132\034.flyteidl.adm" - "in.Notification\"\347\005\n\rExecutionSpec\022.\n\013lau" - "nch_plan\030\001 \001(\0132\031.flyteidl.core.Identifie" - "r\022-\n\006inputs\030\002 \001(\0132\031.flyteidl.core.Litera" - "lMapB\002\030\001\0223\n\010metadata\030\003 \001(\0132!.flyteidl.ad" - "min.ExecutionMetadata\0229\n\rnotifications\030\005" - " \001(\0132 .flyteidl.admin.NotificationListH\000" - "\022\025\n\013disable_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132" - "\026.flyteidl.admin.Labels\0220\n\013annotations\030\010" - " \001(\0132\033.flyteidl.admin.Annotations\0228\n\020sec" - "urity_context\030\n \001(\0132\036.flyteidl.core.Secu" - "rityContext\022/\n\tauth_role\030\020 \001(\0132\030.flyteid" - "l.admin.AuthRoleB\002\030\001\022;\n\022quality_of_servi" - "ce\030\021 \001(\0132\037.flyteidl.core.QualityOfServic" - "e\022\027\n\017max_parallelism\030\022 \001(\005\022C\n\026raw_output" - "_data_config\030\023 \001(\0132#.flyteidl.admin.RawO" - "utputDataConfig\022=\n\022cluster_assignment\030\024 " - "\001(\0132!.flyteidl.admin.ClusterAssignment\0221" - "\n\rinterruptible\030\025 \001(\0132\032.google.protobuf." - "BoolValueB\030\n\026notification_overridesJ\004\010\004\020" - "\005\"b\n\031ExecutionTerminateRequest\0226\n\002id\030\001 \001" - "(\0132*.flyteidl.core.WorkflowExecutionIden" - "tifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionTermin" - "ateResponse\"Y\n\037WorkflowExecutionGetDataR" + "kflowExecutionIdentifier\022\014\n\004name\030\003 \001(\t\022\027" + "\n\017overwrite_cache\030\004 \001(\010J\004\010\002\020\003\"\224\001\n\027Execut" + "ionRecoverRequest\0226\n\002id\030\001 \001(\0132*.flyteidl" + ".core.WorkflowExecutionIdentifier\022\014\n\004nam" + "e\030\002 \001(\t\0223\n\010metadata\030\003 \001(\0132!.flyteidl.adm" + "in.ExecutionMetadata\"Q\n\027ExecutionCreateR" + "esponse\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Work" + "flowExecutionIdentifier\"U\n\033WorkflowExecu" + "tionGetRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.co" + "re.WorkflowExecutionIdentifier\"\243\001\n\tExecu" + "tion\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workflo" + "wExecutionIdentifier\022+\n\004spec\030\002 \001(\0132\035.fly" + "teidl.admin.ExecutionSpec\0221\n\007closure\030\003 \001" + "(\0132 .flyteidl.admin.ExecutionClosure\"M\n\r" + "ExecutionList\022-\n\nexecutions\030\001 \003(\0132\031.flyt" + "eidl.admin.Execution\022\r\n\005token\030\002 \001(\t\"X\n\016L" + "iteralMapBlob\022/\n\006values\030\001 \001(\0132\031.flyteidl" + ".core.LiteralMapB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n" + "\004data\"1\n\rAbortMetadata\022\r\n\005cause\030\001 \001(\t\022\021\n" + "\tprincipal\030\002 \001(\t\"\360\005\n\020ExecutionClosure\0225\n" + "\007outputs\030\001 \001(\0132\036.flyteidl.admin.LiteralM" + "apBlobB\002\030\001H\000\022.\n\005error\030\002 \001(\0132\035.flyteidl.c" + "ore.ExecutionErrorH\000\022\031\n\013abort_cause\030\n \001(" + "\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 \001(\0132\035.flytei" + "dl.admin.AbortMetadataH\000\0224\n\013output_data\030" + "\r \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001H\000\0226" + "\n\017computed_inputs\030\003 \001(\0132\031.flyteidl.core." + "LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl" + ".core.WorkflowExecution.Phase\022.\n\nstarted" + "_at\030\005 \001(\0132\032.google.protobuf.Timestamp\022+\n" + "\010duration\030\006 \001(\0132\031.google.protobuf.Durati" + "on\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf" + ".Timestamp\022.\n\nupdated_at\030\010 \001(\0132\032.google." + "protobuf.Timestamp\0223\n\rnotifications\030\t \003(" + "\0132\034.flyteidl.admin.Notification\022.\n\013workf" + "low_id\030\013 \001(\0132\031.flyteidl.core.Identifier\022" + "I\n\024state_change_details\030\016 \001(\0132+.flyteidl" + ".admin.ExecutionStateChangeDetailsB\017\n\rou" + "tput_result\"+\n\016SystemMetadata\022\031\n\021executi" + "on_cluster\030\001 \001(\t\"\332\003\n\021ExecutionMetadata\022=" + "\n\004mode\030\001 \001(\0162/.flyteidl.admin.ExecutionM" + "etadata.ExecutionMode\022\021\n\tprincipal\030\002 \001(\t" + "\022\017\n\007nesting\030\003 \001(\r\0220\n\014scheduled_at\030\004 \001(\0132" + "\032.google.protobuf.Timestamp\022E\n\025parent_no" + "de_execution\030\005 \001(\0132&.flyteidl.core.NodeE" + "xecutionIdentifier\022G\n\023reference_executio" + "n\030\020 \001(\0132*.flyteidl.core.WorkflowExecutio" + "nIdentifier\0227\n\017system_metadata\030\021 \001(\0132\036.f" + "lyteidl.admin.SystemMetadata\"g\n\rExecutio" + "nMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006SYST" + "EM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WORKFLOW\020\004\022\r" + "\n\tRECOVERED\020\005\"G\n\020NotificationList\0223\n\rnot" + "ifications\030\001 \003(\0132\034.flyteidl.admin.Notifi" + "cation\"\200\006\n\rExecutionSpec\022.\n\013launch_plan\030" + "\001 \001(\0132\031.flyteidl.core.Identifier\022-\n\006inpu" + "ts\030\002 \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001\022" + "3\n\010metadata\030\003 \001(\0132!.flyteidl.admin.Execu" + "tionMetadata\0229\n\rnotifications\030\005 \001(\0132 .fl" + "yteidl.admin.NotificationListH\000\022\025\n\013disab" + "le_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteid" + "l.admin.Labels\0220\n\013annotations\030\010 \001(\0132\033.fl" + "yteidl.admin.Annotations\0228\n\020security_con" + "text\030\n \001(\0132\036.flyteidl.core.SecurityConte" + "xt\022/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admin.A" + "uthRoleB\002\030\001\022;\n\022quality_of_service\030\021 \001(\0132" + "\037.flyteidl.core.QualityOfService\022\027\n\017max_" + "parallelism\030\022 \001(\005\022C\n\026raw_output_data_con" + "fig\030\023 \001(\0132#.flyteidl.admin.RawOutputData" + "Config\022=\n\022cluster_assignment\030\024 \001(\0132!.fly" + "teidl.admin.ClusterAssignment\0221\n\rinterru" + "ptible\030\025 \001(\0132\032.google.protobuf.BoolValue" + "\022\027\n\017overwrite_cache\030\026 \001(\010B\030\n\026notificatio" + "n_overridesJ\004\010\004\020\005\"b\n\031ExecutionTerminateR" "equest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workf" - "lowExecutionIdentifier\"\336\001\n WorkflowExecu" - "tionGetDataResponse\022,\n\007outputs\030\001 \001(\0132\027.f" - "lyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs\030\002 \001(" - "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_i" - "nputs\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/" - "\n\014full_outputs\030\004 \001(\0132\031.flyteidl.core.Lit" - "eralMap\"\177\n\026ExecutionUpdateRequest\0226\n\002id\030" - "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" - "dentifier\022-\n\005state\030\002 \001(\0162\036.flyteidl.admi" - "n.ExecutionState\"\220\001\n\033ExecutionStateChang" - "eDetails\022-\n\005state\030\001 \001(\0162\036.flyteidl.admin" - ".ExecutionState\022/\n\013occurred_at\030\002 \001(\0132\032.g" - "oogle.protobuf.Timestamp\022\021\n\tprincipal\030\003 " - "\001(\t\"\031\n\027ExecutionUpdateResponse*>\n\016Execut" - "ionState\022\024\n\020EXECUTION_ACTIVE\020\000\022\026\n\022EXECUT" - "ION_ARCHIVED\020\001B7Z5github.com/flyteorg/fl" - "yteidl/gen/pb-go/flyteidl/adminb\006proto3" + "lowExecutionIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n" + "\032ExecutionTerminateResponse\"Y\n\037WorkflowE" + "xecutionGetDataRequest\0226\n\002id\030\001 \001(\0132*.fly" + "teidl.core.WorkflowExecutionIdentifier\"\336" + "\001\n WorkflowExecutionGetDataResponse\022,\n\007o" + "utputs\030\001 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030" + "\001\022+\n\006inputs\030\002 \001(\0132\027.flyteidl.admin.UrlBl" + "obB\002\030\001\022.\n\013full_inputs\030\003 \001(\0132\031.flyteidl.c" + "ore.LiteralMap\022/\n\014full_outputs\030\004 \001(\0132\031.f" + "lyteidl.core.LiteralMap\"\177\n\026ExecutionUpda" + "teRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wo" + "rkflowExecutionIdentifier\022-\n\005state\030\002 \001(\016" + "2\036.flyteidl.admin.ExecutionState\"\220\001\n\033Exe" + "cutionStateChangeDetails\022-\n\005state\030\001 \001(\0162" + "\036.flyteidl.admin.ExecutionState\022/\n\013occur" + "red_at\030\002 \001(\0132\032.google.protobuf.Timestamp" + "\022\021\n\tprincipal\030\003 \001(\t\"\031\n\027ExecutionUpdateRe" + "sponse*>\n\016ExecutionState\022\024\n\020EXECUTION_AC" + "TIVE\020\000\022\026\n\022EXECUTION_ARCHIVED\020\001B7Z5github" + ".com/flyteorg/flyteidl/gen/pb-go/flyteid" + "l/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fexecution_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fexecution_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto, - "flyteidl/admin/execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto, 4279, + "flyteidl/admin/execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto, 4335, }; void AddDescriptors_flyteidl_2fadmin_2fexecution_2eproto() { @@ -1526,6 +1530,7 @@ void ExecutionRelaunchRequest::clear_id() { #if !defined(_MSC_VER) || _MSC_VER >= 1900 const int ExecutionRelaunchRequest::kIdFieldNumber; const int ExecutionRelaunchRequest::kNameFieldNumber; +const int ExecutionRelaunchRequest::kOverwriteCacheFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 ExecutionRelaunchRequest::ExecutionRelaunchRequest() @@ -1546,6 +1551,7 @@ ExecutionRelaunchRequest::ExecutionRelaunchRequest(const ExecutionRelaunchReques } else { id_ = nullptr; } + overwrite_cache_ = from.overwrite_cache_; // @@protoc_insertion_point(copy_constructor:flyteidl.admin.ExecutionRelaunchRequest) } @@ -1553,7 +1559,9 @@ void ExecutionRelaunchRequest::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_ExecutionRelaunchRequest_flyteidl_2fadmin_2fexecution_2eproto.base); name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); - id_ = nullptr; + ::memset(&id_, 0, static_cast( + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&id_)) + sizeof(overwrite_cache_)); } ExecutionRelaunchRequest::~ExecutionRelaunchRequest() { @@ -1586,6 +1594,7 @@ void ExecutionRelaunchRequest::Clear() { delete id_; } id_ = nullptr; + overwrite_cache_ = false; _internal_metadata_.Clear(); } @@ -1631,6 +1640,13 @@ const char* ExecutionRelaunchRequest::_InternalParse(const char* begin, const ch ptr += size; break; } + // bool overwrite_cache = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual; + msg->set_overwrite_cache(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -1691,6 +1707,19 @@ bool ExecutionRelaunchRequest::MergePartialFromCodedStream( break; } + // bool overwrite_cache = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &overwrite_cache_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -1734,6 +1763,11 @@ void ExecutionRelaunchRequest::SerializeWithCachedSizes( 3, this->name(), output); } + // bool overwrite_cache = 4; + if (this->overwrite_cache() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->overwrite_cache(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -1765,6 +1799,11 @@ ::google::protobuf::uint8* ExecutionRelaunchRequest::InternalSerializeWithCached 3, this->name(), target); } + // bool overwrite_cache = 4; + if (this->overwrite_cache() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->overwrite_cache(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -1800,6 +1839,11 @@ size_t ExecutionRelaunchRequest::ByteSizeLong() const { *id_); } + // bool overwrite_cache = 4; + if (this->overwrite_cache() != 0) { + total_size += 1 + 1; + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -1834,6 +1878,9 @@ void ExecutionRelaunchRequest::MergeFrom(const ExecutionRelaunchRequest& from) { if (from.has_id()) { mutable_id()->::flyteidl::core::WorkflowExecutionIdentifier::MergeFrom(from.id()); } + if (from.overwrite_cache() != 0) { + set_overwrite_cache(from.overwrite_cache()); + } } void ExecutionRelaunchRequest::CopyFrom(const ::google::protobuf::Message& from) { @@ -1864,6 +1911,7 @@ void ExecutionRelaunchRequest::InternalSwap(ExecutionRelaunchRequest* other) { name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual()); swap(id_, other->id_); + swap(overwrite_cache_, other->overwrite_cache_); } ::google::protobuf::Metadata ExecutionRelaunchRequest::GetMetadata() const { @@ -7170,6 +7218,7 @@ const int ExecutionSpec::kMaxParallelismFieldNumber; const int ExecutionSpec::kRawOutputDataConfigFieldNumber; const int ExecutionSpec::kClusterAssignmentFieldNumber; const int ExecutionSpec::kInterruptibleFieldNumber; +const int ExecutionSpec::kOverwriteCacheFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 ExecutionSpec::ExecutionSpec() @@ -7236,7 +7285,9 @@ ExecutionSpec::ExecutionSpec(const ExecutionSpec& from) } else { interruptible_ = nullptr; } - max_parallelism_ = from.max_parallelism_; + ::memcpy(&max_parallelism_, &from.max_parallelism_, + static_cast(reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&max_parallelism_)) + sizeof(overwrite_cache_)); clear_has_notification_overrides(); switch (from.notification_overrides_case()) { case kNotifications: { @@ -7258,8 +7309,8 @@ void ExecutionSpec::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_ExecutionSpec_flyteidl_2fadmin_2fexecution_2eproto.base); ::memset(&launch_plan_, 0, static_cast( - reinterpret_cast(&max_parallelism_) - - reinterpret_cast(&launch_plan_)) + sizeof(max_parallelism_)); + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&launch_plan_)) + sizeof(overwrite_cache_)); clear_has_notification_overrides(); } @@ -7363,7 +7414,9 @@ void ExecutionSpec::Clear() { delete interruptible_; } interruptible_ = nullptr; - max_parallelism_ = 0; + ::memset(&max_parallelism_, 0, static_cast( + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&max_parallelism_)) + sizeof(overwrite_cache_)); clear_notification_overrides(); _internal_metadata_.Clear(); } @@ -7551,6 +7604,13 @@ const char* ExecutionSpec::_InternalParse(const char* begin, const char* end, vo {parser_till_end, object}, ptr - size, ptr)); break; } + // bool overwrite_cache = 22; + case 22: { + if (static_cast<::google::protobuf::uint8>(tag) != 176) goto handle_unusual; + msg->set_overwrite_cache(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -7740,6 +7800,19 @@ bool ExecutionSpec::MergePartialFromCodedStream( break; } + // bool overwrite_cache = 22; + case 22: { + if (static_cast< ::google::protobuf::uint8>(tag) == (176 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &overwrite_cache_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -7849,6 +7922,11 @@ void ExecutionSpec::SerializeWithCachedSizes( 21, HasBitSetters::interruptible(this), output); } + // bool overwrite_cache = 22; + if (this->overwrite_cache() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->overwrite_cache(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -7956,6 +8034,11 @@ ::google::protobuf::uint8* ExecutionSpec::InternalSerializeWithCachedSizesToArra 21, HasBitSetters::interruptible(this), target); } + // bool overwrite_cache = 22; + if (this->overwrite_cache() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(22, this->overwrite_cache(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -8061,6 +8144,11 @@ size_t ExecutionSpec::ByteSizeLong() const { this->max_parallelism()); } + // bool overwrite_cache = 22; + if (this->overwrite_cache() != 0) { + total_size += 2 + 1; + } + switch (notification_overrides_case()) { // .flyteidl.admin.NotificationList notifications = 5; case kNotifications: { @@ -8141,6 +8229,9 @@ void ExecutionSpec::MergeFrom(const ExecutionSpec& from) { if (from.max_parallelism() != 0) { set_max_parallelism(from.max_parallelism()); } + if (from.overwrite_cache() != 0) { + set_overwrite_cache(from.overwrite_cache()); + } switch (from.notification_overrides_case()) { case kNotifications: { mutable_notifications()->::flyteidl::admin::NotificationList::MergeFrom(from.notifications()); @@ -8193,6 +8284,7 @@ void ExecutionSpec::InternalSwap(ExecutionSpec* other) { swap(cluster_assignment_, other->cluster_assignment_); swap(interruptible_, other->interruptible_); swap(max_parallelism_, other->max_parallelism_); + swap(overwrite_cache_, other->overwrite_cache_); swap(notification_overrides_, other->notification_overrides_); swap(_oneof_case_[0], other->_oneof_case_[0]); } diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.h b/gen/pb-cpp/flyteidl/admin/execution.pb.h index 4418383b1..b333e1c4b 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.h +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.h @@ -489,6 +489,12 @@ class ExecutionRelaunchRequest final : ::flyteidl::core::WorkflowExecutionIdentifier* mutable_id(); void set_allocated_id(::flyteidl::core::WorkflowExecutionIdentifier* id); + // bool overwrite_cache = 4; + void clear_overwrite_cache(); + static const int kOverwriteCacheFieldNumber = 4; + bool overwrite_cache() const; + void set_overwrite_cache(bool value); + // @@protoc_insertion_point(class_scope:flyteidl.admin.ExecutionRelaunchRequest) private: class HasBitSetters; @@ -496,6 +502,7 @@ class ExecutionRelaunchRequest final : ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; ::google::protobuf::internal::ArenaStringPtr name_; ::flyteidl::core::WorkflowExecutionIdentifier* id_; + bool overwrite_cache_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fexecution_2eproto; }; @@ -2354,6 +2361,12 @@ class ExecutionSpec final : ::google::protobuf::int32 max_parallelism() const; void set_max_parallelism(::google::protobuf::int32 value); + // bool overwrite_cache = 22; + void clear_overwrite_cache(); + static const int kOverwriteCacheFieldNumber = 22; + bool overwrite_cache() const; + void set_overwrite_cache(bool value); + // .flyteidl.admin.NotificationList notifications = 5; bool has_notifications() const; void clear_notifications(); @@ -2396,6 +2409,7 @@ class ExecutionSpec final : ::flyteidl::admin::ClusterAssignment* cluster_assignment_; ::google::protobuf::BoolValue* interruptible_; ::google::protobuf::int32 max_parallelism_; + bool overwrite_cache_; union NotificationOverridesUnion { NotificationOverridesUnion() {} ::flyteidl::admin::NotificationList* notifications_; @@ -3633,6 +3647,20 @@ inline void ExecutionRelaunchRequest::set_allocated_name(::std::string* name) { // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionRelaunchRequest.name) } +// bool overwrite_cache = 4; +inline void ExecutionRelaunchRequest::clear_overwrite_cache() { + overwrite_cache_ = false; +} +inline bool ExecutionRelaunchRequest::overwrite_cache() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionRelaunchRequest.overwrite_cache) + return overwrite_cache_; +} +inline void ExecutionRelaunchRequest::set_overwrite_cache(bool value) { + + overwrite_cache_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.ExecutionRelaunchRequest.overwrite_cache) +} + // ------------------------------------------------------------------- // ExecutionRecoverRequest @@ -5945,6 +5973,20 @@ inline void ExecutionSpec::set_allocated_interruptible(::google::protobuf::BoolV // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionSpec.interruptible) } +// bool overwrite_cache = 22; +inline void ExecutionSpec::clear_overwrite_cache() { + overwrite_cache_ = false; +} +inline bool ExecutionSpec::overwrite_cache() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionSpec.overwrite_cache) + return overwrite_cache_; +} +inline void ExecutionSpec::set_overwrite_cache(bool value) { + + overwrite_cache_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.ExecutionSpec.overwrite_cache) +} + inline bool ExecutionSpec::has_notification_overrides() const { return notification_overrides_case() != NOTIFICATION_OVERRIDES_NOT_SET; } diff --git a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc index bbb8e9e82..7b1c6b9d7 100644 --- a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.cc @@ -356,6 +356,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2flaunch_5fplan_2e PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, raw_output_data_config_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, max_parallelism_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, interruptible_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanSpec, overwrite_cache_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::LaunchPlanClosure, _internal_metadata_), ~0u, // no _extensions_ @@ -409,12 +410,12 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 20, -1, sizeof(::flyteidl::admin::LaunchPlanList)}, { 27, -1, sizeof(::flyteidl::admin::Auth)}, { 34, -1, sizeof(::flyteidl::admin::LaunchPlanSpec)}, - { 53, -1, sizeof(::flyteidl::admin::LaunchPlanClosure)}, - { 63, -1, sizeof(::flyteidl::admin::LaunchPlanMetadata)}, - { 70, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateRequest)}, - { 77, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateResponse)}, - { 82, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanRequest)}, - { 88, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanListRequest)}, + { 54, -1, sizeof(::flyteidl::admin::LaunchPlanClosure)}, + { 64, -1, sizeof(::flyteidl::admin::LaunchPlanMetadata)}, + { 71, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateRequest)}, + { 78, -1, sizeof(::flyteidl::admin::LaunchPlanUpdateResponse)}, + { 83, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanRequest)}, + { 89, -1, sizeof(::flyteidl::admin::ActiveLaunchPlanListRequest)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -458,7 +459,7 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2flaunch_5fplan_2eproto[] "0\n\014launch_plans\030\001 \003(\0132\032.flyteidl.admin.L" "aunchPlan\022\r\n\005token\030\002 \001(\t\"J\n\004Auth\022\032\n\022assu" "mable_iam_role\030\001 \001(\t\022\"\n\032kubernetes_servi" - "ce_account\030\002 \001(\t:\002\030\001\"\260\005\n\016LaunchPlanSpec\022" + "ce_account\030\002 \001(\t:\002\030\001\"\311\005\n\016LaunchPlanSpec\022" ".\n\013workflow_id\030\001 \001(\0132\031.flyteidl.core.Ide" "ntifier\022;\n\017entity_metadata\030\002 \001(\0132\".flyte" "idl.admin.LaunchPlanMetadata\0223\n\016default_" @@ -475,34 +476,34 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2flaunch_5fplan_2eproto[] "ervice\022C\n\026raw_output_data_config\030\021 \001(\0132#" ".flyteidl.admin.RawOutputDataConfig\022\027\n\017m" "ax_parallelism\030\022 \001(\005\0221\n\rinterruptible\030\023 " - "\001(\0132\032.google.protobuf.BoolValue\"\217\002\n\021Laun" - "chPlanClosure\022.\n\005state\030\001 \001(\0162\037.flyteidl." - "admin.LaunchPlanState\0224\n\017expected_inputs" - "\030\002 \001(\0132\033.flyteidl.core.ParameterMap\0224\n\020e" - "xpected_outputs\030\003 \001(\0132\032.flyteidl.core.Va" - "riableMap\022.\n\ncreated_at\030\004 \001(\0132\032.google.p" - "rotobuf.Timestamp\022.\n\nupdated_at\030\005 \001(\0132\032." - "google.protobuf.Timestamp\"u\n\022LaunchPlanM" - "etadata\022*\n\010schedule\030\001 \001(\0132\030.flyteidl.adm" - "in.Schedule\0223\n\rnotifications\030\002 \003(\0132\034.fly" - "teidl.admin.Notification\"p\n\027LaunchPlanUp" - "dateRequest\022%\n\002id\030\001 \001(\0132\031.flyteidl.core." - "Identifier\022.\n\005state\030\002 \001(\0162\037.flyteidl.adm" - "in.LaunchPlanState\"\032\n\030LaunchPlanUpdateRe" - "sponse\"L\n\027ActiveLaunchPlanRequest\0221\n\002id\030" - "\001 \001(\0132%.flyteidl.admin.NamedEntityIdenti" - "fier\"\203\001\n\033ActiveLaunchPlanListRequest\022\017\n\007" - "project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\r\n\005limit\030\003" - " \001(\r\022\r\n\005token\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.f" - "lyteidl.admin.Sort*+\n\017LaunchPlanState\022\014\n" - "\010INACTIVE\020\000\022\n\n\006ACTIVE\020\001B7Z5github.com/fl" - "yteorg/flyteidl/gen/pb-go/flyteidl/admin" - "b\006proto3" + "\001(\0132\032.google.protobuf.BoolValue\022\027\n\017overw" + "rite_cache\030\024 \001(\010\"\217\002\n\021LaunchPlanClosure\022." + "\n\005state\030\001 \001(\0162\037.flyteidl.admin.LaunchPla" + "nState\0224\n\017expected_inputs\030\002 \001(\0132\033.flytei" + "dl.core.ParameterMap\0224\n\020expected_outputs" + "\030\003 \001(\0132\032.flyteidl.core.VariableMap\022.\n\ncr" + "eated_at\030\004 \001(\0132\032.google.protobuf.Timesta" + "mp\022.\n\nupdated_at\030\005 \001(\0132\032.google.protobuf" + ".Timestamp\"u\n\022LaunchPlanMetadata\022*\n\010sche" + "dule\030\001 \001(\0132\030.flyteidl.admin.Schedule\0223\n\r" + "notifications\030\002 \003(\0132\034.flyteidl.admin.Not" + "ification\"p\n\027LaunchPlanUpdateRequest\022%\n\002" + "id\030\001 \001(\0132\031.flyteidl.core.Identifier\022.\n\005s" + "tate\030\002 \001(\0162\037.flyteidl.admin.LaunchPlanSt" + "ate\"\032\n\030LaunchPlanUpdateResponse\"L\n\027Activ" + "eLaunchPlanRequest\0221\n\002id\030\001 \001(\0132%.flyteid" + "l.admin.NamedEntityIdentifier\"\203\001\n\033Active" + "LaunchPlanListRequest\022\017\n\007project\030\001 \001(\t\022\016" + "\n\006domain\030\002 \001(\t\022\r\n\005limit\030\003 \001(\r\022\r\n\005token\030\004" + " \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.flyteidl.admin.S" + "ort*+\n\017LaunchPlanState\022\014\n\010INACTIVE\020\000\022\n\n\006" + "ACTIVE\020\001B7Z5github.com/flyteorg/flyteidl" + "/gen/pb-go/flyteidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto = { false, InitDefaults_flyteidl_2fadmin_2flaunch_5fplan_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2flaunch_5fplan_2eproto, - "flyteidl/admin/launch_plan.proto", &assign_descriptors_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto, 2328, + "flyteidl/admin/launch_plan.proto", &assign_descriptors_table_flyteidl_2fadmin_2flaunch_5fplan_2eproto, 2353, }; void AddDescriptors_flyteidl_2fadmin_2flaunch_5fplan_2eproto() { @@ -2431,6 +2432,7 @@ const int LaunchPlanSpec::kQualityOfServiceFieldNumber; const int LaunchPlanSpec::kRawOutputDataConfigFieldNumber; const int LaunchPlanSpec::kMaxParallelismFieldNumber; const int LaunchPlanSpec::kInterruptibleFieldNumber; +const int LaunchPlanSpec::kOverwriteCacheFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 LaunchPlanSpec::LaunchPlanSpec() @@ -2506,7 +2508,9 @@ LaunchPlanSpec::LaunchPlanSpec(const LaunchPlanSpec& from) } else { interruptible_ = nullptr; } - max_parallelism_ = from.max_parallelism_; + ::memcpy(&max_parallelism_, &from.max_parallelism_, + static_cast(reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&max_parallelism_)) + sizeof(overwrite_cache_)); // @@protoc_insertion_point(copy_constructor:flyteidl.admin.LaunchPlanSpec) } @@ -2515,8 +2519,8 @@ void LaunchPlanSpec::SharedCtor() { &scc_info_LaunchPlanSpec_flyteidl_2fadmin_2flaunch_5fplan_2eproto.base); role_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); ::memset(&workflow_id_, 0, static_cast( - reinterpret_cast(&max_parallelism_) - - reinterpret_cast(&workflow_id_)) + sizeof(max_parallelism_)); + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&workflow_id_)) + sizeof(overwrite_cache_)); } LaunchPlanSpec::~LaunchPlanSpec() { @@ -2604,7 +2608,9 @@ void LaunchPlanSpec::Clear() { delete interruptible_; } interruptible_ = nullptr; - max_parallelism_ = 0; + ::memset(&max_parallelism_, 0, static_cast( + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&max_parallelism_)) + sizeof(overwrite_cache_)); _internal_metadata_.Clear(); } @@ -2800,6 +2806,13 @@ const char* LaunchPlanSpec::_InternalParse(const char* begin, const char* end, v {parser_till_end, object}, ptr - size, ptr)); break; } + // bool overwrite_cache = 20; + case 20: { + if (static_cast<::google::protobuf::uint8>(tag) != 160) goto handle_unusual; + msg->set_overwrite_cache(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -2994,6 +3007,19 @@ bool LaunchPlanSpec::MergePartialFromCodedStream( break; } + // bool overwrite_cache = 20; + case 20: { + if (static_cast< ::google::protobuf::uint8>(tag) == (160 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &overwrite_cache_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -3108,6 +3134,11 @@ void LaunchPlanSpec::SerializeWithCachedSizes( 19, HasBitSetters::interruptible(this), output); } + // bool overwrite_cache = 20; + if (this->overwrite_cache() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteBool(20, this->overwrite_cache(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -3221,6 +3252,11 @@ ::google::protobuf::uint8* LaunchPlanSpec::InternalSerializeWithCachedSizesToArr 19, HasBitSetters::interruptible(this), target); } + // bool overwrite_cache = 20; + if (this->overwrite_cache() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(20, this->overwrite_cache(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -3340,6 +3376,11 @@ size_t LaunchPlanSpec::ByteSizeLong() const { this->max_parallelism()); } + // bool overwrite_cache = 20; + if (this->overwrite_cache() != 0) { + total_size += 2 + 1; + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -3410,6 +3451,9 @@ void LaunchPlanSpec::MergeFrom(const LaunchPlanSpec& from) { if (from.max_parallelism() != 0) { set_max_parallelism(from.max_parallelism()); } + if (from.overwrite_cache() != 0) { + set_overwrite_cache(from.overwrite_cache()); + } } void LaunchPlanSpec::CopyFrom(const ::google::protobuf::Message& from) { @@ -3452,6 +3496,7 @@ void LaunchPlanSpec::InternalSwap(LaunchPlanSpec* other) { swap(raw_output_data_config_, other->raw_output_data_config_); swap(interruptible_, other->interruptible_); swap(max_parallelism_, other->max_parallelism_); + swap(overwrite_cache_, other->overwrite_cache_); } ::google::protobuf::Metadata LaunchPlanSpec::GetMetadata() const { diff --git a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h index c2900562a..e803fd8e6 100644 --- a/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h +++ b/gen/pb-cpp/flyteidl/admin/launch_plan.pb.h @@ -996,6 +996,12 @@ class LaunchPlanSpec final : ::google::protobuf::int32 max_parallelism() const; void set_max_parallelism(::google::protobuf::int32 value); + // bool overwrite_cache = 20; + void clear_overwrite_cache(); + static const int kOverwriteCacheFieldNumber = 20; + bool overwrite_cache() const; + void set_overwrite_cache(bool value); + // @@protoc_insertion_point(class_scope:flyteidl.admin.LaunchPlanSpec) private: class HasBitSetters; @@ -1015,6 +1021,7 @@ class LaunchPlanSpec final : ::flyteidl::admin::RawOutputDataConfig* raw_output_data_config_; ::google::protobuf::BoolValue* interruptible_; ::google::protobuf::int32 max_parallelism_; + bool overwrite_cache_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2flaunch_5fplan_2eproto; }; @@ -2890,6 +2897,20 @@ inline void LaunchPlanSpec::set_allocated_interruptible(::google::protobuf::Bool // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.LaunchPlanSpec.interruptible) } +// bool overwrite_cache = 20; +inline void LaunchPlanSpec::clear_overwrite_cache() { + overwrite_cache_ = false; +} +inline bool LaunchPlanSpec::overwrite_cache() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.LaunchPlanSpec.overwrite_cache) + return overwrite_cache_; +} +inline void LaunchPlanSpec::set_overwrite_cache(bool value) { + + overwrite_cache_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.LaunchPlanSpec.overwrite_cache) +} + // ------------------------------------------------------------------- // LaunchPlanClosure diff --git a/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.cc b/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.cc index 9eb2d776e..a31a29e1b 100644 --- a/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.cc @@ -387,6 +387,7 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fmatchable_5freso PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionConfig, labels_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionConfig, annotations_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionConfig, interruptible_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::WorkflowExecutionConfig, overwrite_cache_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::MatchingAttributes, _internal_metadata_), ~0u, // no _extensions_ @@ -434,10 +435,10 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 44, -1, sizeof(::flyteidl::admin::PluginOverride)}, { 52, -1, sizeof(::flyteidl::admin::PluginOverrides)}, { 58, -1, sizeof(::flyteidl::admin::WorkflowExecutionConfig)}, - { 69, -1, sizeof(::flyteidl::admin::MatchingAttributes)}, - { 83, -1, sizeof(::flyteidl::admin::MatchableAttributesConfiguration)}, - { 93, -1, sizeof(::flyteidl::admin::ListMatchableAttributesRequest)}, - { 99, -1, sizeof(::flyteidl::admin::ListMatchableAttributesResponse)}, + { 70, -1, sizeof(::flyteidl::admin::MatchingAttributes)}, + { 84, -1, sizeof(::flyteidl::admin::MatchableAttributesConfiguration)}, + { 94, -1, sizeof(::flyteidl::admin::ListMatchableAttributesRequest)}, + { 100, -1, sizeof(::flyteidl::admin::ListMatchableAttributesResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -487,7 +488,7 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fmatchable_5fresource_2ep "\"2\n\025MissingPluginBehavior\022\010\n\004FAIL\020\000\022\017\n\013U" "SE_DEFAULT\020\001\"D\n\017PluginOverrides\0221\n\toverr" "ides\030\001 \003(\0132\036.flyteidl.admin.PluginOverri" - "de\"\276\002\n\027WorkflowExecutionConfig\022\027\n\017max_pa" + "de\"\327\002\n\027WorkflowExecutionConfig\022\027\n\017max_pa" "rallelism\030\001 \001(\005\0228\n\020security_context\030\002 \001(" "\0132\036.flyteidl.core.SecurityContext\022C\n\026raw" "_output_data_config\030\003 \001(\0132#.flyteidl.adm" @@ -495,43 +496,44 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fmatchable_5fresource_2ep ".flyteidl.admin.Labels\0220\n\013annotations\030\005 " "\001(\0132\033.flyteidl.admin.Annotations\0221\n\rinte" "rruptible\030\006 \001(\0132\032.google.protobuf.BoolVa" - "lue\"\341\004\n\022MatchingAttributes\022J\n\030task_resou" - "rce_attributes\030\001 \001(\0132&.flyteidl.admin.Ta" - "skResourceAttributesH\000\022P\n\033cluster_resour" - "ce_attributes\030\002 \001(\0132).flyteidl.admin.Clu" - "sterResourceAttributesH\000\022N\n\032execution_qu" - "eue_attributes\030\003 \001(\0132(.flyteidl.admin.Ex" - "ecutionQueueAttributesH\000\022H\n\027execution_cl" - "uster_label\030\004 \001(\0132%.flyteidl.admin.Execu" - "tionClusterLabelH\000\022=\n\022quality_of_service" - "\030\005 \001(\0132\037.flyteidl.core.QualityOfServiceH" - "\000\022;\n\020plugin_overrides\030\006 \001(\0132\037.flyteidl.a" - "dmin.PluginOverridesH\000\022L\n\031workflow_execu" - "tion_config\030\007 \001(\0132\'.flyteidl.admin.Workf" - "lowExecutionConfigH\000\022\?\n\022cluster_assignme" - "nt\030\010 \001(\0132!.flyteidl.admin.ClusterAssignm" - "entH\000B\010\n\006target\"\242\001\n MatchableAttributesC" - "onfiguration\0226\n\nattributes\030\001 \001(\0132\".flyte" - "idl.admin.MatchingAttributes\022\016\n\006domain\030\002" - " \001(\t\022\017\n\007project\030\003 \001(\t\022\020\n\010workflow\030\004 \001(\t\022" - "\023\n\013launch_plan\030\005 \001(\t\"Z\n\036ListMatchableAtt" - "ributesRequest\0228\n\rresource_type\030\001 \001(\0162!." - "flyteidl.admin.MatchableResource\"k\n\037List" - "MatchableAttributesResponse\022H\n\016configura" - "tions\030\001 \003(\01320.flyteidl.admin.MatchableAt" - "tributesConfiguration*\340\001\n\021MatchableResou" - "rce\022\021\n\rTASK_RESOURCE\020\000\022\024\n\020CLUSTER_RESOUR" - "CE\020\001\022\023\n\017EXECUTION_QUEUE\020\002\022\033\n\027EXECUTION_C" - "LUSTER_LABEL\020\003\022$\n QUALITY_OF_SERVICE_SPE" - "CIFICATION\020\004\022\023\n\017PLUGIN_OVERRIDE\020\005\022\035\n\031WOR" - "KFLOW_EXECUTION_CONFIG\020\006\022\026\n\022CLUSTER_ASSI" - "GNMENT\020\007B7Z5github.com/flyteorg/flyteidl" - "/gen/pb-go/flyteidl/adminb\006proto3" + "lue\022\027\n\017overwrite_cache\030\007 \001(\010\"\341\004\n\022Matchin" + "gAttributes\022J\n\030task_resource_attributes\030" + "\001 \001(\0132&.flyteidl.admin.TaskResourceAttri" + "butesH\000\022P\n\033cluster_resource_attributes\030\002" + " \001(\0132).flyteidl.admin.ClusterResourceAtt" + "ributesH\000\022N\n\032execution_queue_attributes\030" + "\003 \001(\0132(.flyteidl.admin.ExecutionQueueAtt" + "ributesH\000\022H\n\027execution_cluster_label\030\004 \001" + "(\0132%.flyteidl.admin.ExecutionClusterLabe" + "lH\000\022=\n\022quality_of_service\030\005 \001(\0132\037.flytei" + "dl.core.QualityOfServiceH\000\022;\n\020plugin_ove" + "rrides\030\006 \001(\0132\037.flyteidl.admin.PluginOver" + "ridesH\000\022L\n\031workflow_execution_config\030\007 \001" + "(\0132\'.flyteidl.admin.WorkflowExecutionCon" + "figH\000\022\?\n\022cluster_assignment\030\010 \001(\0132!.flyt" + "eidl.admin.ClusterAssignmentH\000B\010\n\006target" + "\"\242\001\n MatchableAttributesConfiguration\0226\n" + "\nattributes\030\001 \001(\0132\".flyteidl.admin.Match" + "ingAttributes\022\016\n\006domain\030\002 \001(\t\022\017\n\007project" + "\030\003 \001(\t\022\020\n\010workflow\030\004 \001(\t\022\023\n\013launch_plan\030" + "\005 \001(\t\"Z\n\036ListMatchableAttributesRequest\022" + "8\n\rresource_type\030\001 \001(\0162!.flyteidl.admin." + "MatchableResource\"k\n\037ListMatchableAttrib" + "utesResponse\022H\n\016configurations\030\001 \003(\01320.f" + "lyteidl.admin.MatchableAttributesConfigu" + "ration*\340\001\n\021MatchableResource\022\021\n\rTASK_RES" + "OURCE\020\000\022\024\n\020CLUSTER_RESOURCE\020\001\022\023\n\017EXECUTI" + "ON_QUEUE\020\002\022\033\n\027EXECUTION_CLUSTER_LABEL\020\003\022" + "$\n QUALITY_OF_SERVICE_SPECIFICATION\020\004\022\023\n" + "\017PLUGIN_OVERRIDE\020\005\022\035\n\031WORKFLOW_EXECUTION" + "_CONFIG\020\006\022\026\n\022CLUSTER_ASSIGNMENT\020\007B7Z5git" + "hub.com/flyteorg/flyteidl/gen/pb-go/flyt" + "eidl/adminb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fadmin_2fmatchable_5fresource_2eproto = { false, InitDefaults_flyteidl_2fadmin_2fmatchable_5fresource_2eproto, descriptor_table_protodef_flyteidl_2fadmin_2fmatchable_5fresource_2eproto, - "flyteidl/admin/matchable_resource.proto", &assign_descriptors_table_flyteidl_2fadmin_2fmatchable_5fresource_2eproto, 2553, + "flyteidl/admin/matchable_resource.proto", &assign_descriptors_table_flyteidl_2fadmin_2fmatchable_5fresource_2eproto, 2578, }; void AddDescriptors_flyteidl_2fadmin_2fmatchable_5fresource_2eproto() { @@ -3321,6 +3323,7 @@ const int WorkflowExecutionConfig::kRawOutputDataConfigFieldNumber; const int WorkflowExecutionConfig::kLabelsFieldNumber; const int WorkflowExecutionConfig::kAnnotationsFieldNumber; const int WorkflowExecutionConfig::kInterruptibleFieldNumber; +const int WorkflowExecutionConfig::kOverwriteCacheFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 WorkflowExecutionConfig::WorkflowExecutionConfig() @@ -3357,7 +3360,9 @@ WorkflowExecutionConfig::WorkflowExecutionConfig(const WorkflowExecutionConfig& } else { interruptible_ = nullptr; } - max_parallelism_ = from.max_parallelism_; + ::memcpy(&max_parallelism_, &from.max_parallelism_, + static_cast(reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&max_parallelism_)) + sizeof(overwrite_cache_)); // @@protoc_insertion_point(copy_constructor:flyteidl.admin.WorkflowExecutionConfig) } @@ -3365,8 +3370,8 @@ void WorkflowExecutionConfig::SharedCtor() { ::google::protobuf::internal::InitSCC( &scc_info_WorkflowExecutionConfig_flyteidl_2fadmin_2fmatchable_5fresource_2eproto.base); ::memset(&security_context_, 0, static_cast( - reinterpret_cast(&max_parallelism_) - - reinterpret_cast(&security_context_)) + sizeof(max_parallelism_)); + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&security_context_)) + sizeof(overwrite_cache_)); } WorkflowExecutionConfig::~WorkflowExecutionConfig() { @@ -3417,7 +3422,9 @@ void WorkflowExecutionConfig::Clear() { delete interruptible_; } interruptible_ = nullptr; - max_parallelism_ = 0; + ::memset(&max_parallelism_, 0, static_cast( + reinterpret_cast(&overwrite_cache_) - + reinterpret_cast(&max_parallelism_)) + sizeof(overwrite_cache_)); _internal_metadata_.Clear(); } @@ -3506,6 +3513,13 @@ const char* WorkflowExecutionConfig::_InternalParse(const char* begin, const cha {parser_till_end, object}, ptr - size, ptr)); break; } + // bool overwrite_cache = 7; + case 7: { + if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual; + msg->set_overwrite_cache(::google::protobuf::internal::ReadVarint(&ptr)); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + break; + } default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -3604,6 +3618,19 @@ bool WorkflowExecutionConfig::MergePartialFromCodedStream( break; } + // bool overwrite_cache = 7; + case 7: { + if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) { + + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &overwrite_cache_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -3666,6 +3693,11 @@ void WorkflowExecutionConfig::SerializeWithCachedSizes( 6, HasBitSetters::interruptible(this), output); } + // bool overwrite_cache = 7; + if (this->overwrite_cache() != 0) { + ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->overwrite_cache(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -3719,6 +3751,11 @@ ::google::protobuf::uint8* WorkflowExecutionConfig::InternalSerializeWithCachedS 6, HasBitSetters::interruptible(this), target); } + // bool overwrite_cache = 7; + if (this->overwrite_cache() != 0) { + target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->overwrite_cache(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -3782,6 +3819,11 @@ size_t WorkflowExecutionConfig::ByteSizeLong() const { this->max_parallelism()); } + // bool overwrite_cache = 7; + if (this->overwrite_cache() != 0) { + total_size += 1 + 1; + } + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -3827,6 +3869,9 @@ void WorkflowExecutionConfig::MergeFrom(const WorkflowExecutionConfig& from) { if (from.max_parallelism() != 0) { set_max_parallelism(from.max_parallelism()); } + if (from.overwrite_cache() != 0) { + set_overwrite_cache(from.overwrite_cache()); + } } void WorkflowExecutionConfig::CopyFrom(const ::google::protobuf::Message& from) { @@ -3860,6 +3905,7 @@ void WorkflowExecutionConfig::InternalSwap(WorkflowExecutionConfig* other) { swap(annotations_, other->annotations_); swap(interruptible_, other->interruptible_); swap(max_parallelism_, other->max_parallelism_); + swap(overwrite_cache_, other->overwrite_cache_); } ::google::protobuf::Metadata WorkflowExecutionConfig::GetMetadata() const { diff --git a/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.h b/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.h index 270987463..79e6a2621 100644 --- a/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.h +++ b/gen/pb-cpp/flyteidl/admin/matchable_resource.pb.h @@ -1308,6 +1308,12 @@ class WorkflowExecutionConfig final : ::google::protobuf::int32 max_parallelism() const; void set_max_parallelism(::google::protobuf::int32 value); + // bool overwrite_cache = 7; + void clear_overwrite_cache(); + static const int kOverwriteCacheFieldNumber = 7; + bool overwrite_cache() const; + void set_overwrite_cache(bool value); + // @@protoc_insertion_point(class_scope:flyteidl.admin.WorkflowExecutionConfig) private: class HasBitSetters; @@ -1319,6 +1325,7 @@ class WorkflowExecutionConfig final : ::flyteidl::admin::Annotations* annotations_; ::google::protobuf::BoolValue* interruptible_; ::google::protobuf::int32 max_parallelism_; + bool overwrite_cache_; mutable ::google::protobuf::internal::CachedSize _cached_size_; friend struct ::TableStruct_flyteidl_2fadmin_2fmatchable_5fresource_2eproto; }; @@ -2896,6 +2903,20 @@ inline void WorkflowExecutionConfig::set_allocated_interruptible(::google::proto // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.WorkflowExecutionConfig.interruptible) } +// bool overwrite_cache = 7; +inline void WorkflowExecutionConfig::clear_overwrite_cache() { + overwrite_cache_ = false; +} +inline bool WorkflowExecutionConfig::overwrite_cache() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.WorkflowExecutionConfig.overwrite_cache) + return overwrite_cache_; +} +inline void WorkflowExecutionConfig::set_overwrite_cache(bool value) { + + overwrite_cache_ = value; + // @@protoc_insertion_point(field_set:flyteidl.admin.WorkflowExecutionConfig.overwrite_cache) +} + // ------------------------------------------------------------------- // MatchingAttributes diff --git a/gen/pb-cpp/flyteidl/core/catalog.pb.cc b/gen/pb-cpp/flyteidl/core/catalog.pb.cc index 9b9d65517..4cd7dab86 100644 --- a/gen/pb-cpp/flyteidl/core/catalog.pb.cc +++ b/gen/pb-cpp/flyteidl/core/catalog.pb.cc @@ -145,17 +145,18 @@ const char descriptor_table_protodef_flyteidl_2fcore_2fcatalog_2eproto[] = "ogReservation\"\207\001\n\006Status\022\030\n\024RESERVATION_" "DISABLED\020\000\022\030\n\024RESERVATION_ACQUIRED\020\001\022\026\n\022" "RESERVATION_EXISTS\020\002\022\030\n\024RESERVATION_RELE" - "ASED\020\003\022\027\n\023RESERVATION_FAILURE\020\004*\215\001\n\022Cata" + "ASED\020\003\022\027\n\023RESERVATION_FAILURE\020\004*\240\001\n\022Cata" "logCacheStatus\022\022\n\016CACHE_DISABLED\020\000\022\016\n\nCA" "CHE_MISS\020\001\022\r\n\tCACHE_HIT\020\002\022\023\n\017CACHE_POPUL" "ATED\020\003\022\030\n\024CACHE_LOOKUP_FAILURE\020\004\022\025\n\021CACH" - "E_PUT_FAILURE\020\005B6Z4github.com/flyteorg/f" - "lyteidl/gen/pb-go/flyteidl/coreb\006proto3" + "E_PUT_FAILURE\020\005\022\021\n\rCACHE_SKIPPED\020\006B6Z4gi" + "thub.com/flyteorg/flyteidl/gen/pb-go/fly" + "teidl/coreb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fcore_2fcatalog_2eproto = { false, InitDefaults_flyteidl_2fcore_2fcatalog_2eproto, descriptor_table_protodef_flyteidl_2fcore_2fcatalog_2eproto, - "flyteidl/core/catalog.proto", &assign_descriptors_table_flyteidl_2fcore_2fcatalog_2eproto, 719, + "flyteidl/core/catalog.proto", &assign_descriptors_table_flyteidl_2fcore_2fcatalog_2eproto, 738, }; void AddDescriptors_flyteidl_2fcore_2fcatalog_2eproto() { @@ -209,6 +210,7 @@ bool CatalogCacheStatus_IsValid(int value) { case 3: case 4: case 5: + case 6: return true; default: return false; diff --git a/gen/pb-cpp/flyteidl/core/catalog.pb.h b/gen/pb-cpp/flyteidl/core/catalog.pb.h index dd3b3a35e..ddc8b7f5d 100644 --- a/gen/pb-cpp/flyteidl/core/catalog.pb.h +++ b/gen/pb-cpp/flyteidl/core/catalog.pb.h @@ -104,12 +104,13 @@ enum CatalogCacheStatus { CACHE_POPULATED = 3, CACHE_LOOKUP_FAILURE = 4, CACHE_PUT_FAILURE = 5, + CACHE_SKIPPED = 6, CatalogCacheStatus_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(), CatalogCacheStatus_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max() }; bool CatalogCacheStatus_IsValid(int value); const CatalogCacheStatus CatalogCacheStatus_MIN = CACHE_DISABLED; -const CatalogCacheStatus CatalogCacheStatus_MAX = CACHE_PUT_FAILURE; +const CatalogCacheStatus CatalogCacheStatus_MAX = CACHE_SKIPPED; const int CatalogCacheStatus_ARRAYSIZE = CatalogCacheStatus_MAX + 1; const ::google::protobuf::EnumDescriptor* CatalogCacheStatus_descriptor(); diff --git a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.cc b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.cc index b1820d0cf..9fa10c82c 100644 --- a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.cc +++ b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.cc @@ -26,6 +26,7 @@ static const char* DataCatalog_method_names[] = { "/datacatalog.DataCatalog/AddTag", "/datacatalog.DataCatalog/ListArtifacts", "/datacatalog.DataCatalog/ListDatasets", + "/datacatalog.DataCatalog/UpdateArtifact", "/datacatalog.DataCatalog/GetOrExtendReservation", "/datacatalog.DataCatalog/ReleaseReservation", }; @@ -44,8 +45,9 @@ DataCatalog::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channe , rpcmethod_AddTag_(DataCatalog_method_names[4], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_ListArtifacts_(DataCatalog_method_names[5], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_ListDatasets_(DataCatalog_method_names[6], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetOrExtendReservation_(DataCatalog_method_names[7], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ReleaseReservation_(DataCatalog_method_names[8], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_UpdateArtifact_(DataCatalog_method_names[7], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetOrExtendReservation_(DataCatalog_method_names[8], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ReleaseReservation_(DataCatalog_method_names[9], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status DataCatalog::Stub::CreateDataset(::grpc::ClientContext* context, const ::datacatalog::CreateDatasetRequest& request, ::datacatalog::CreateDatasetResponse* response) { @@ -244,6 +246,34 @@ ::grpc::ClientAsyncResponseReader< ::datacatalog::ListDatasetsResponse>* DataCat return ::grpc::internal::ClientAsyncResponseReaderFactory< ::datacatalog::ListDatasetsResponse>::Create(channel_.get(), cq, rpcmethod_ListDatasets_, context, request, false); } +::grpc::Status DataCatalog::Stub::UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::datacatalog::UpdateArtifactResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_UpdateArtifact_, context, request, response); +} + +void DataCatalog::Stub::experimental_async::UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_UpdateArtifact_, context, request, response, std::move(f)); +} + +void DataCatalog::Stub::experimental_async::UpdateArtifact(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::UpdateArtifactResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_UpdateArtifact_, context, request, response, std::move(f)); +} + +void DataCatalog::Stub::experimental_async::UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_UpdateArtifact_, context, request, response, reactor); +} + +void DataCatalog::Stub::experimental_async::UpdateArtifact(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_UpdateArtifact_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>* DataCatalog::Stub::AsyncUpdateArtifactRaw(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::datacatalog::UpdateArtifactResponse>::Create(channel_.get(), cq, rpcmethod_UpdateArtifact_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>* DataCatalog::Stub::PrepareAsyncUpdateArtifactRaw(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::datacatalog::UpdateArtifactResponse>::Create(channel_.get(), cq, rpcmethod_UpdateArtifact_, context, request, false); +} + ::grpc::Status DataCatalog::Stub::GetOrExtendReservation(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::datacatalog::GetOrExtendReservationResponse* response) { return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetOrExtendReservation_, context, request, response); } @@ -339,10 +369,15 @@ DataCatalog::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( DataCatalog_method_names[7], ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< DataCatalog::Service, ::datacatalog::UpdateArtifactRequest, ::datacatalog::UpdateArtifactResponse>( + std::mem_fn(&DataCatalog::Service::UpdateArtifact), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + DataCatalog_method_names[8], + ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< DataCatalog::Service, ::datacatalog::GetOrExtendReservationRequest, ::datacatalog::GetOrExtendReservationResponse>( std::mem_fn(&DataCatalog::Service::GetOrExtendReservation), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - DataCatalog_method_names[8], + DataCatalog_method_names[9], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< DataCatalog::Service, ::datacatalog::ReleaseReservationRequest, ::datacatalog::ReleaseReservationResponse>( std::mem_fn(&DataCatalog::Service::ReleaseReservation), this))); @@ -400,6 +435,13 @@ ::grpc::Status DataCatalog::Service::ListDatasets(::grpc::ServerContext* context return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status DataCatalog::Service::UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + ::grpc::Status DataCatalog::Service::GetOrExtendReservation(::grpc::ServerContext* context, const ::datacatalog::GetOrExtendReservationRequest* request, ::datacatalog::GetOrExtendReservationResponse* response) { (void) context; (void) request; diff --git a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.h b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.h index 26768316b..358bfd9de 100644 --- a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.h +++ b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.grpc.pb.h @@ -109,6 +109,14 @@ class DataCatalog final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::ListDatasetsResponse>> PrepareAsyncListDatasets(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::ListDatasetsResponse>>(PrepareAsyncListDatasetsRaw(context, request, cq)); } + // Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + virtual ::grpc::Status UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::datacatalog::UpdateArtifactResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::UpdateArtifactResponse>> AsyncUpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::UpdateArtifactResponse>>(AsyncUpdateArtifactRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::UpdateArtifactResponse>> PrepareAsyncUpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::UpdateArtifactResponse>>(PrepareAsyncUpdateArtifactRaw(context, request, cq)); + } // Attempts to get or extend a reservation for the corresponding artifact. If one already exists // (ie. another entity owns the reservation) then that reservation is retrieved. // Once you acquire a reservation, you need to periodically extend the reservation with an @@ -176,6 +184,11 @@ class DataCatalog final { virtual void ListDatasets(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::ListDatasetsResponse* response, std::function) = 0; virtual void ListDatasets(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest* request, ::datacatalog::ListDatasetsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; virtual void ListDatasets(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::ListDatasetsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + virtual void UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, std::function) = 0; + virtual void UpdateArtifact(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::UpdateArtifactResponse* response, std::function) = 0; + virtual void UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void UpdateArtifact(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; // Attempts to get or extend a reservation for the corresponding artifact. If one already exists // (ie. another entity owns the reservation) then that reservation is retrieved. // Once you acquire a reservation, you need to periodically extend the reservation with an @@ -214,6 +227,8 @@ class DataCatalog final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::ListArtifactsResponse>* PrepareAsyncListArtifactsRaw(::grpc::ClientContext* context, const ::datacatalog::ListArtifactsRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::ListDatasetsResponse>* AsyncListDatasetsRaw(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::ListDatasetsResponse>* PrepareAsyncListDatasetsRaw(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::UpdateArtifactResponse>* AsyncUpdateArtifactRaw(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::UpdateArtifactResponse>* PrepareAsyncUpdateArtifactRaw(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::GetOrExtendReservationResponse>* AsyncGetOrExtendReservationRaw(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::GetOrExtendReservationResponse>* PrepareAsyncGetOrExtendReservationRaw(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::datacatalog::ReleaseReservationResponse>* AsyncReleaseReservationRaw(::grpc::ClientContext* context, const ::datacatalog::ReleaseReservationRequest& request, ::grpc::CompletionQueue* cq) = 0; @@ -271,6 +286,13 @@ class DataCatalog final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::ListDatasetsResponse>> PrepareAsyncListDatasets(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::ListDatasetsResponse>>(PrepareAsyncListDatasetsRaw(context, request, cq)); } + ::grpc::Status UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::datacatalog::UpdateArtifactResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>> AsyncUpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>>(AsyncUpdateArtifactRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>> PrepareAsyncUpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>>(PrepareAsyncUpdateArtifactRaw(context, request, cq)); + } ::grpc::Status GetOrExtendReservation(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::datacatalog::GetOrExtendReservationResponse* response) override; std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::GetOrExtendReservationResponse>> AsyncGetOrExtendReservation(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::datacatalog::GetOrExtendReservationResponse>>(AsyncGetOrExtendReservationRaw(context, request, cq)); @@ -316,6 +338,10 @@ class DataCatalog final { void ListDatasets(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::ListDatasetsResponse* response, std::function) override; void ListDatasets(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest* request, ::datacatalog::ListDatasetsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void ListDatasets(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::ListDatasetsResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, std::function) override; + void UpdateArtifact(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::UpdateArtifactResponse* response, std::function) override; + void UpdateArtifact(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void UpdateArtifact(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void GetOrExtendReservation(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest* request, ::datacatalog::GetOrExtendReservationResponse* response, std::function) override; void GetOrExtendReservation(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::datacatalog::GetOrExtendReservationResponse* response, std::function) override; void GetOrExtendReservation(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest* request, ::datacatalog::GetOrExtendReservationResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; @@ -349,6 +375,8 @@ class DataCatalog final { ::grpc::ClientAsyncResponseReader< ::datacatalog::ListArtifactsResponse>* PrepareAsyncListArtifactsRaw(::grpc::ClientContext* context, const ::datacatalog::ListArtifactsRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::datacatalog::ListDatasetsResponse>* AsyncListDatasetsRaw(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::datacatalog::ListDatasetsResponse>* PrepareAsyncListDatasetsRaw(::grpc::ClientContext* context, const ::datacatalog::ListDatasetsRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>* AsyncUpdateArtifactRaw(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::datacatalog::UpdateArtifactResponse>* PrepareAsyncUpdateArtifactRaw(::grpc::ClientContext* context, const ::datacatalog::UpdateArtifactRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::datacatalog::GetOrExtendReservationResponse>* AsyncGetOrExtendReservationRaw(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::datacatalog::GetOrExtendReservationResponse>* PrepareAsyncGetOrExtendReservationRaw(::grpc::ClientContext* context, const ::datacatalog::GetOrExtendReservationRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::datacatalog::ReleaseReservationResponse>* AsyncReleaseReservationRaw(::grpc::ClientContext* context, const ::datacatalog::ReleaseReservationRequest& request, ::grpc::CompletionQueue* cq) override; @@ -360,6 +388,7 @@ class DataCatalog final { const ::grpc::internal::RpcMethod rpcmethod_AddTag_; const ::grpc::internal::RpcMethod rpcmethod_ListArtifacts_; const ::grpc::internal::RpcMethod rpcmethod_ListDatasets_; + const ::grpc::internal::RpcMethod rpcmethod_UpdateArtifact_; const ::grpc::internal::RpcMethod rpcmethod_GetOrExtendReservation_; const ::grpc::internal::RpcMethod rpcmethod_ReleaseReservation_; }; @@ -385,6 +414,8 @@ class DataCatalog final { virtual ::grpc::Status ListArtifacts(::grpc::ServerContext* context, const ::datacatalog::ListArtifactsRequest* request, ::datacatalog::ListArtifactsResponse* response); // Return a paginated list of datasets virtual ::grpc::Status ListDatasets(::grpc::ServerContext* context, const ::datacatalog::ListDatasetsRequest* request, ::datacatalog::ListDatasetsResponse* response); + // Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + virtual ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response); // Attempts to get or extend a reservation for the corresponding artifact. If one already exists // (ie. another entity owns the reservation) then that reservation is retrieved. // Once you acquire a reservation, you need to periodically extend the reservation with an @@ -542,12 +573,32 @@ class DataCatalog final { } }; template + class WithAsyncMethod_UpdateArtifact : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_UpdateArtifact() { + ::grpc::Service::MarkMethodAsync(7); + } + ~WithAsyncMethod_UpdateArtifact() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestUpdateArtifact(::grpc::ServerContext* context, ::datacatalog::UpdateArtifactRequest* request, ::grpc::ServerAsyncResponseWriter< ::datacatalog::UpdateArtifactResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class WithAsyncMethod_GetOrExtendReservation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetOrExtendReservation() { - ::grpc::Service::MarkMethodAsync(7); + ::grpc::Service::MarkMethodAsync(8); } ~WithAsyncMethod_GetOrExtendReservation() override { BaseClassMustBeDerivedFromService(this); @@ -558,7 +609,7 @@ class DataCatalog final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetOrExtendReservation(::grpc::ServerContext* context, ::datacatalog::GetOrExtendReservationRequest* request, ::grpc::ServerAsyncResponseWriter< ::datacatalog::GetOrExtendReservationResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -567,7 +618,7 @@ class DataCatalog final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ReleaseReservation() { - ::grpc::Service::MarkMethodAsync(8); + ::grpc::Service::MarkMethodAsync(9); } ~WithAsyncMethod_ReleaseReservation() override { BaseClassMustBeDerivedFromService(this); @@ -578,10 +629,10 @@ class DataCatalog final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestReleaseReservation(::grpc::ServerContext* context, ::datacatalog::ReleaseReservationRequest* request, ::grpc::ServerAsyncResponseWriter< ::datacatalog::ReleaseReservationResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_CreateDataset > > > > > > > > AsyncService; + typedef WithAsyncMethod_CreateDataset > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_CreateDataset : public BaseClass { private: @@ -800,12 +851,43 @@ class DataCatalog final { virtual void ListDatasets(::grpc::ServerContext* context, const ::datacatalog::ListDatasetsRequest* request, ::datacatalog::ListDatasetsResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithCallbackMethod_UpdateArtifact : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_UpdateArtifact() { + ::grpc::Service::experimental().MarkMethodCallback(7, + new ::grpc::internal::CallbackUnaryHandler< ::datacatalog::UpdateArtifactRequest, ::datacatalog::UpdateArtifactResponse>( + [this](::grpc::ServerContext* context, + const ::datacatalog::UpdateArtifactRequest* request, + ::datacatalog::UpdateArtifactResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->UpdateArtifact(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_UpdateArtifact( + ::grpc::experimental::MessageAllocator< ::datacatalog::UpdateArtifactRequest, ::datacatalog::UpdateArtifactResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::datacatalog::UpdateArtifactRequest, ::datacatalog::UpdateArtifactResponse>*>( + ::grpc::Service::experimental().GetHandler(7)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_UpdateArtifact() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class ExperimentalWithCallbackMethod_GetOrExtendReservation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetOrExtendReservation() { - ::grpc::Service::experimental().MarkMethodCallback(7, + ::grpc::Service::experimental().MarkMethodCallback(8, new ::grpc::internal::CallbackUnaryHandler< ::datacatalog::GetOrExtendReservationRequest, ::datacatalog::GetOrExtendReservationResponse>( [this](::grpc::ServerContext* context, const ::datacatalog::GetOrExtendReservationRequest* request, @@ -817,7 +899,7 @@ class DataCatalog final { void SetMessageAllocatorFor_GetOrExtendReservation( ::grpc::experimental::MessageAllocator< ::datacatalog::GetOrExtendReservationRequest, ::datacatalog::GetOrExtendReservationResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::datacatalog::GetOrExtendReservationRequest, ::datacatalog::GetOrExtendReservationResponse>*>( - ::grpc::Service::experimental().GetHandler(7)) + ::grpc::Service::experimental().GetHandler(8)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetOrExtendReservation() override { @@ -836,7 +918,7 @@ class DataCatalog final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ReleaseReservation() { - ::grpc::Service::experimental().MarkMethodCallback(8, + ::grpc::Service::experimental().MarkMethodCallback(9, new ::grpc::internal::CallbackUnaryHandler< ::datacatalog::ReleaseReservationRequest, ::datacatalog::ReleaseReservationResponse>( [this](::grpc::ServerContext* context, const ::datacatalog::ReleaseReservationRequest* request, @@ -848,7 +930,7 @@ class DataCatalog final { void SetMessageAllocatorFor_ReleaseReservation( ::grpc::experimental::MessageAllocator< ::datacatalog::ReleaseReservationRequest, ::datacatalog::ReleaseReservationResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::datacatalog::ReleaseReservationRequest, ::datacatalog::ReleaseReservationResponse>*>( - ::grpc::Service::experimental().GetHandler(8)) + ::grpc::Service::experimental().GetHandler(9)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ReleaseReservation() override { @@ -861,7 +943,7 @@ class DataCatalog final { } virtual void ReleaseReservation(::grpc::ServerContext* context, const ::datacatalog::ReleaseReservationRequest* request, ::datacatalog::ReleaseReservationResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; - typedef ExperimentalWithCallbackMethod_CreateDataset > > > > > > > > ExperimentalCallbackService; + typedef ExperimentalWithCallbackMethod_CreateDataset > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_CreateDataset : public BaseClass { private: @@ -982,12 +1064,29 @@ class DataCatalog final { } }; template + class WithGenericMethod_UpdateArtifact : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_UpdateArtifact() { + ::grpc::Service::MarkMethodGeneric(7); + } + ~WithGenericMethod_UpdateArtifact() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithGenericMethod_GetOrExtendReservation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetOrExtendReservation() { - ::grpc::Service::MarkMethodGeneric(7); + ::grpc::Service::MarkMethodGeneric(8); } ~WithGenericMethod_GetOrExtendReservation() override { BaseClassMustBeDerivedFromService(this); @@ -1004,7 +1103,7 @@ class DataCatalog final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ReleaseReservation() { - ::grpc::Service::MarkMethodGeneric(8); + ::grpc::Service::MarkMethodGeneric(9); } ~WithGenericMethod_ReleaseReservation() override { BaseClassMustBeDerivedFromService(this); @@ -1156,12 +1255,32 @@ class DataCatalog final { } }; template + class WithRawMethod_UpdateArtifact : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_UpdateArtifact() { + ::grpc::Service::MarkMethodRaw(7); + } + ~WithRawMethod_UpdateArtifact() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestUpdateArtifact(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class WithRawMethod_GetOrExtendReservation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetOrExtendReservation() { - ::grpc::Service::MarkMethodRaw(7); + ::grpc::Service::MarkMethodRaw(8); } ~WithRawMethod_GetOrExtendReservation() override { BaseClassMustBeDerivedFromService(this); @@ -1172,7 +1291,7 @@ class DataCatalog final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetOrExtendReservation(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1181,7 +1300,7 @@ class DataCatalog final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ReleaseReservation() { - ::grpc::Service::MarkMethodRaw(8); + ::grpc::Service::MarkMethodRaw(9); } ~WithRawMethod_ReleaseReservation() override { BaseClassMustBeDerivedFromService(this); @@ -1192,7 +1311,7 @@ class DataCatalog final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestReleaseReservation(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1371,12 +1490,37 @@ class DataCatalog final { virtual void ListDatasets(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithRawCallbackMethod_UpdateArtifact : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_UpdateArtifact() { + ::grpc::Service::experimental().MarkMethodRawCallback(7, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->UpdateArtifact(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_UpdateArtifact() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void UpdateArtifact(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class ExperimentalWithRawCallbackMethod_GetOrExtendReservation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetOrExtendReservation() { - ::grpc::Service::experimental().MarkMethodRawCallback(7, + ::grpc::Service::experimental().MarkMethodRawCallback(8, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -1401,7 +1545,7 @@ class DataCatalog final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ReleaseReservation() { - ::grpc::Service::experimental().MarkMethodRawCallback(8, + ::grpc::Service::experimental().MarkMethodRawCallback(9, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -1561,12 +1705,32 @@ class DataCatalog final { virtual ::grpc::Status StreamedListDatasets(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::datacatalog::ListDatasetsRequest,::datacatalog::ListDatasetsResponse>* server_unary_streamer) = 0; }; template + class WithStreamedUnaryMethod_UpdateArtifact : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_UpdateArtifact() { + ::grpc::Service::MarkMethodStreamed(7, + new ::grpc::internal::StreamedUnaryHandler< ::datacatalog::UpdateArtifactRequest, ::datacatalog::UpdateArtifactResponse>(std::bind(&WithStreamedUnaryMethod_UpdateArtifact::StreamedUpdateArtifact, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_UpdateArtifact() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status UpdateArtifact(::grpc::ServerContext* context, const ::datacatalog::UpdateArtifactRequest* request, ::datacatalog::UpdateArtifactResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedUpdateArtifact(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::datacatalog::UpdateArtifactRequest,::datacatalog::UpdateArtifactResponse>* server_unary_streamer) = 0; + }; + template class WithStreamedUnaryMethod_GetOrExtendReservation : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetOrExtendReservation() { - ::grpc::Service::MarkMethodStreamed(7, + ::grpc::Service::MarkMethodStreamed(8, new ::grpc::internal::StreamedUnaryHandler< ::datacatalog::GetOrExtendReservationRequest, ::datacatalog::GetOrExtendReservationResponse>(std::bind(&WithStreamedUnaryMethod_GetOrExtendReservation::StreamedGetOrExtendReservation, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetOrExtendReservation() override { @@ -1586,7 +1750,7 @@ class DataCatalog final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ReleaseReservation() { - ::grpc::Service::MarkMethodStreamed(8, + ::grpc::Service::MarkMethodStreamed(9, new ::grpc::internal::StreamedUnaryHandler< ::datacatalog::ReleaseReservationRequest, ::datacatalog::ReleaseReservationResponse>(std::bind(&WithStreamedUnaryMethod_ReleaseReservation::StreamedReleaseReservation, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ReleaseReservation() override { @@ -1600,9 +1764,9 @@ class DataCatalog final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedReleaseReservation(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::datacatalog::ReleaseReservationRequest,::datacatalog::ReleaseReservationResponse>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_CreateDataset > > > > > > > > StreamedUnaryService; + typedef WithStreamedUnaryMethod_CreateDataset > > > > > > > > > StreamedUnaryService; typedef Service SplitStreamedService; - typedef WithStreamedUnaryMethod_CreateDataset > > > > > > > > StreamedService; + typedef WithStreamedUnaryMethod_CreateDataset > > > > > > > > > StreamedService; }; } // namespace datacatalog diff --git a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.cc b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.cc index bbf2509e5..a13396958 100644 --- a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.cc +++ b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.cc @@ -96,6 +96,16 @@ class ListDatasetsResponseDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; } _ListDatasetsResponse_default_instance_; +class UpdateArtifactRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; + ::google::protobuf::internal::ArenaStringPtr artifact_id_; + ::google::protobuf::internal::ArenaStringPtr tag_name_; +} _UpdateArtifactRequest_default_instance_; +class UpdateArtifactResponseDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _UpdateArtifactResponse_default_instance_; class ReservationIDDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; @@ -406,6 +416,36 @@ ::google::protobuf::internal::SCCInfo<1> scc_info_ListDatasetsResponse_flyteidl_ {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsListDatasetsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto}, { &scc_info_Dataset_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base,}}; +static void InitDefaultsUpdateArtifactRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::datacatalog::_UpdateArtifactRequest_default_instance_; + new (ptr) ::datacatalog::UpdateArtifactRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::datacatalog::UpdateArtifactRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<2> scc_info_UpdateArtifactRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsUpdateArtifactRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto}, { + &scc_info_DatasetID_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base, + &scc_info_ArtifactData_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base,}}; + +static void InitDefaultsUpdateArtifactResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::datacatalog::_UpdateArtifactResponse_default_instance_; + new (ptr) ::datacatalog::UpdateArtifactResponse(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::datacatalog::UpdateArtifactResponse::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<0> scc_info_UpdateArtifactResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsUpdateArtifactResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto}, {}}; + static void InitDefaultsReservationID_flyteidl_2fdatacatalog_2fdatacatalog_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -754,6 +794,8 @@ void InitDefaults_flyteidl_2fdatacatalog_2fdatacatalog_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_ListArtifactsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ListDatasetsRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ListDatasetsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_UpdateArtifactRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_UpdateArtifactResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ReservationID_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_GetOrExtendReservationRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_Reservation_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); @@ -778,7 +820,7 @@ void InitDefaults_flyteidl_2fdatacatalog_2fdatacatalog_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_PaginationOptions_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); } -::google::protobuf::Metadata file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[36]; +::google::protobuf::Metadata file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[38]; const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[3]; constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto = nullptr; @@ -873,6 +915,22 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fdatacatalog_2fdatacatalo PROTOBUF_FIELD_OFFSET(::datacatalog::ListDatasetsResponse, datasets_), PROTOBUF_FIELD_OFFSET(::datacatalog::ListDatasetsResponse, next_token_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactRequest, _internal_metadata_), + ~0u, // no _extensions_ + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactRequest, _oneof_case_[0]), + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactRequest, dataset_), + offsetof(::datacatalog::UpdateArtifactRequestDefaultTypeInternal, artifact_id_), + offsetof(::datacatalog::UpdateArtifactRequestDefaultTypeInternal, tag_name_), + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactRequest, data_), + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactRequest, query_handle_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactResponse, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::datacatalog::UpdateArtifactResponse, artifact_id_), + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::datacatalog::ReservationID, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -1062,28 +1120,30 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SE { 68, -1, sizeof(::datacatalog::ListArtifactsResponse)}, { 75, -1, sizeof(::datacatalog::ListDatasetsRequest)}, { 82, -1, sizeof(::datacatalog::ListDatasetsResponse)}, - { 89, -1, sizeof(::datacatalog::ReservationID)}, - { 96, -1, sizeof(::datacatalog::GetOrExtendReservationRequest)}, - { 104, -1, sizeof(::datacatalog::Reservation)}, - { 114, -1, sizeof(::datacatalog::GetOrExtendReservationResponse)}, - { 120, -1, sizeof(::datacatalog::ReleaseReservationRequest)}, - { 127, -1, sizeof(::datacatalog::ReleaseReservationResponse)}, - { 132, -1, sizeof(::datacatalog::Dataset)}, - { 140, -1, sizeof(::datacatalog::Partition)}, - { 147, -1, sizeof(::datacatalog::DatasetID)}, - { 157, -1, sizeof(::datacatalog::Artifact)}, - { 169, -1, sizeof(::datacatalog::ArtifactData)}, - { 176, -1, sizeof(::datacatalog::Tag)}, - { 184, 191, sizeof(::datacatalog::Metadata_KeyMapEntry_DoNotUse)}, - { 193, -1, sizeof(::datacatalog::Metadata)}, - { 199, -1, sizeof(::datacatalog::FilterExpression)}, - { 205, -1, sizeof(::datacatalog::SinglePropertyFilter)}, - { 216, -1, sizeof(::datacatalog::ArtifactPropertyFilter)}, - { 223, -1, sizeof(::datacatalog::TagPropertyFilter)}, - { 230, -1, sizeof(::datacatalog::PartitionPropertyFilter)}, - { 237, -1, sizeof(::datacatalog::KeyValuePair)}, - { 244, -1, sizeof(::datacatalog::DatasetPropertyFilter)}, - { 254, -1, sizeof(::datacatalog::PaginationOptions)}, + { 89, -1, sizeof(::datacatalog::UpdateArtifactRequest)}, + { 99, -1, sizeof(::datacatalog::UpdateArtifactResponse)}, + { 105, -1, sizeof(::datacatalog::ReservationID)}, + { 112, -1, sizeof(::datacatalog::GetOrExtendReservationRequest)}, + { 120, -1, sizeof(::datacatalog::Reservation)}, + { 130, -1, sizeof(::datacatalog::GetOrExtendReservationResponse)}, + { 136, -1, sizeof(::datacatalog::ReleaseReservationRequest)}, + { 143, -1, sizeof(::datacatalog::ReleaseReservationResponse)}, + { 148, -1, sizeof(::datacatalog::Dataset)}, + { 156, -1, sizeof(::datacatalog::Partition)}, + { 163, -1, sizeof(::datacatalog::DatasetID)}, + { 173, -1, sizeof(::datacatalog::Artifact)}, + { 185, -1, sizeof(::datacatalog::ArtifactData)}, + { 192, -1, sizeof(::datacatalog::Tag)}, + { 200, 207, sizeof(::datacatalog::Metadata_KeyMapEntry_DoNotUse)}, + { 209, -1, sizeof(::datacatalog::Metadata)}, + { 215, -1, sizeof(::datacatalog::FilterExpression)}, + { 221, -1, sizeof(::datacatalog::SinglePropertyFilter)}, + { 232, -1, sizeof(::datacatalog::ArtifactPropertyFilter)}, + { 239, -1, sizeof(::datacatalog::TagPropertyFilter)}, + { 246, -1, sizeof(::datacatalog::PartitionPropertyFilter)}, + { 253, -1, sizeof(::datacatalog::KeyValuePair)}, + { 260, -1, sizeof(::datacatalog::DatasetPropertyFilter)}, + { 270, -1, sizeof(::datacatalog::PaginationOptions)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { @@ -1101,6 +1161,8 @@ static ::google::protobuf::Message const * const file_default_instances[] = { reinterpret_cast(&::datacatalog::_ListArtifactsResponse_default_instance_), reinterpret_cast(&::datacatalog::_ListDatasetsRequest_default_instance_), reinterpret_cast(&::datacatalog::_ListDatasetsResponse_default_instance_), + reinterpret_cast(&::datacatalog::_UpdateArtifactRequest_default_instance_), + reinterpret_cast(&::datacatalog::_UpdateArtifactResponse_default_instance_), reinterpret_cast(&::datacatalog::_ReservationID_default_instance_), reinterpret_cast(&::datacatalog::_GetOrExtendReservationRequest_default_instance_), reinterpret_cast(&::datacatalog::_Reservation_default_instance_), @@ -1128,7 +1190,7 @@ static ::google::protobuf::Message const * const file_default_instances[] = { ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto = { {}, AddDescriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, "flyteidl/datacatalog/datacatalog.proto", schemas, file_default_instances, TableStruct_flyteidl_2fdatacatalog_2fdatacatalog_2eproto::offsets, - file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, 36, file_level_enum_descriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, file_level_service_descriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, + file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, 38, file_level_enum_descriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, file_level_service_descriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, }; const char descriptor_table_protodef_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[] = @@ -1161,97 +1223,104 @@ const char descriptor_table_protodef_flyteidl_2fdatacatalog_2fdatacatalog_2eprot "\002 \001(\0132\036.datacatalog.PaginationOptions\"R\n" "\024ListDatasetsResponse\022&\n\010datasets\030\001 \003(\0132" "\024.datacatalog.Dataset\022\022\n\nnext_token\030\002 \001(" - "\t\"M\n\rReservationID\022*\n\ndataset_id\030\001 \001(\0132\026" - ".datacatalog.DatasetID\022\020\n\010tag_name\030\002 \001(\t" - "\"\234\001\n\035GetOrExtendReservationRequest\0222\n\016re" - "servation_id\030\001 \001(\0132\032.datacatalog.Reserva" - "tionID\022\020\n\010owner_id\030\002 \001(\t\0225\n\022heartbeat_in" - "terval\030\003 \001(\0132\031.google.protobuf.Duration\"" - "\343\001\n\013Reservation\0222\n\016reservation_id\030\001 \001(\0132" - "\032.datacatalog.ReservationID\022\020\n\010owner_id\030" - "\002 \001(\t\0225\n\022heartbeat_interval\030\003 \001(\0132\031.goog" - "le.protobuf.Duration\022.\n\nexpires_at\030\004 \001(\013" - "2\032.google.protobuf.Timestamp\022\'\n\010metadata" - "\030\006 \001(\0132\025.datacatalog.Metadata\"O\n\036GetOrEx" - "tendReservationResponse\022-\n\013reservation\030\001" - " \001(\0132\030.datacatalog.Reservation\"a\n\031Releas" - "eReservationRequest\0222\n\016reservation_id\030\001 " - "\001(\0132\032.datacatalog.ReservationID\022\020\n\010owner" - "_id\030\002 \001(\t\"\034\n\032ReleaseReservationResponse\"" - "m\n\007Dataset\022\"\n\002id\030\001 \001(\0132\026.datacatalog.Dat" - "asetID\022\'\n\010metadata\030\002 \001(\0132\025.datacatalog.M" - "etadata\022\025\n\rpartitionKeys\030\003 \003(\t\"\'\n\tPartit" - "ion\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"Y\n\tDatas" - "etID\022\017\n\007project\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\016\n\006d" - "omain\030\003 \001(\t\022\017\n\007version\030\004 \001(\t\022\014\n\004UUID\030\005 \001" - "(\t\"\215\002\n\010Artifact\022\n\n\002id\030\001 \001(\t\022\'\n\007dataset\030\002" - " \001(\0132\026.datacatalog.DatasetID\022\'\n\004data\030\003 \003" - "(\0132\031.datacatalog.ArtifactData\022\'\n\010metadat" - "a\030\004 \001(\0132\025.datacatalog.Metadata\022*\n\npartit" - "ions\030\005 \003(\0132\026.datacatalog.Partition\022\036\n\004ta" - "gs\030\006 \003(\0132\020.datacatalog.Tag\022.\n\ncreated_at" - "\030\007 \001(\0132\032.google.protobuf.Timestamp\"C\n\014Ar" - "tifactData\022\014\n\004name\030\001 \001(\t\022%\n\005value\030\002 \001(\0132" - "\026.flyteidl.core.Literal\"Q\n\003Tag\022\014\n\004name\030\001" - " \001(\t\022\023\n\013artifact_id\030\002 \001(\t\022\'\n\007dataset\030\003 \001" - "(\0132\026.datacatalog.DatasetID\"m\n\010Metadata\0222" - "\n\007key_map\030\001 \003(\0132!.datacatalog.Metadata.K" - "eyMapEntry\032-\n\013KeyMapEntry\022\013\n\003key\030\001 \001(\t\022\r" - "\n\005value\030\002 \001(\t:\0028\001\"F\n\020FilterExpression\0222\n" - "\007filters\030\001 \003(\0132!.datacatalog.SinglePrope" - "rtyFilter\"\211\003\n\024SinglePropertyFilter\0224\n\nta" - "g_filter\030\001 \001(\0132\036.datacatalog.TagProperty" - "FilterH\000\022@\n\020partition_filter\030\002 \001(\0132$.dat" - "acatalog.PartitionPropertyFilterH\000\022>\n\017ar" - "tifact_filter\030\003 \001(\0132#.datacatalog.Artifa" - "ctPropertyFilterH\000\022<\n\016dataset_filter\030\004 \001" - "(\0132\".datacatalog.DatasetPropertyFilterH\000" - "\022F\n\010operator\030\n \001(\01624.datacatalog.SingleP" - "ropertyFilter.ComparisonOperator\" \n\022Comp" - "arisonOperator\022\n\n\006EQUALS\020\000B\021\n\017property_f" - "ilter\";\n\026ArtifactPropertyFilter\022\025\n\013artif" - "act_id\030\001 \001(\tH\000B\n\n\010property\"3\n\021TagPropert" - "yFilter\022\022\n\010tag_name\030\001 \001(\tH\000B\n\n\010property\"" - "S\n\027PartitionPropertyFilter\022,\n\007key_val\030\001 " - "\001(\0132\031.datacatalog.KeyValuePairH\000B\n\n\010prop" - "erty\"*\n\014KeyValuePair\022\013\n\003key\030\001 \001(\t\022\r\n\005val" - "ue\030\002 \001(\t\"k\n\025DatasetPropertyFilter\022\021\n\007pro" - "ject\030\001 \001(\tH\000\022\016\n\004name\030\002 \001(\tH\000\022\020\n\006domain\030\003" - " \001(\tH\000\022\021\n\007version\030\004 \001(\tH\000B\n\n\010property\"\361\001" - "\n\021PaginationOptions\022\r\n\005limit\030\001 \001(\r\022\r\n\005to" - "ken\030\002 \001(\t\0227\n\007sortKey\030\003 \001(\0162&.datacatalog" - ".PaginationOptions.SortKey\022;\n\tsortOrder\030" - "\004 \001(\0162(.datacatalog.PaginationOptions.So" - "rtOrder\"*\n\tSortOrder\022\016\n\nDESCENDING\020\000\022\r\n\t" - "ASCENDING\020\001\"\034\n\007SortKey\022\021\n\rCREATION_TIME\020" - "\0002\253\006\n\013DataCatalog\022V\n\rCreateDataset\022!.dat" - "acatalog.CreateDatasetRequest\032\".datacata" - "log.CreateDatasetResponse\022M\n\nGetDataset\022" - "\036.datacatalog.GetDatasetRequest\032\037.dataca" - "talog.GetDatasetResponse\022Y\n\016CreateArtifa" - "ct\022\".datacatalog.CreateArtifactRequest\032#" - ".datacatalog.CreateArtifactResponse\022P\n\013G" - "etArtifact\022\037.datacatalog.GetArtifactRequ" - "est\032 .datacatalog.GetArtifactResponse\022A\n" - "\006AddTag\022\032.datacatalog.AddTagRequest\032\033.da" - "tacatalog.AddTagResponse\022V\n\rListArtifact" - "s\022!.datacatalog.ListArtifactsRequest\032\".d" - "atacatalog.ListArtifactsResponse\022S\n\014List" - "Datasets\022 .datacatalog.ListDatasetsReque" - "st\032!.datacatalog.ListDatasetsResponse\022q\n" - "\026GetOrExtendReservation\022*.datacatalog.Ge" - "tOrExtendReservationRequest\032+.datacatalo" - "g.GetOrExtendReservationResponse\022e\n\022Rele" - "aseReservation\022&.datacatalog.ReleaseRese" - "rvationRequest\032\'.datacatalog.ReleaseRese" - "rvationResponseB=Z;github.com/flyteorg/f" - "lyteidl/gen/pb-go/flyteidl/datacatalogb\006" - "proto3" + "\t\"\244\001\n\025UpdateArtifactRequest\022\'\n\007dataset\030\001" + " \001(\0132\026.datacatalog.DatasetID\022\025\n\013artifact" + "_id\030\002 \001(\tH\000\022\022\n\010tag_name\030\003 \001(\tH\000\022\'\n\004data\030" + "\004 \003(\0132\031.datacatalog.ArtifactDataB\016\n\014quer" + "y_handle\"-\n\026UpdateArtifactResponse\022\023\n\013ar" + "tifact_id\030\001 \001(\t\"M\n\rReservationID\022*\n\ndata" + "set_id\030\001 \001(\0132\026.datacatalog.DatasetID\022\020\n\010" + "tag_name\030\002 \001(\t\"\234\001\n\035GetOrExtendReservatio" + "nRequest\0222\n\016reservation_id\030\001 \001(\0132\032.datac" + "atalog.ReservationID\022\020\n\010owner_id\030\002 \001(\t\0225" + "\n\022heartbeat_interval\030\003 \001(\0132\031.google.prot" + "obuf.Duration\"\343\001\n\013Reservation\0222\n\016reserva" + "tion_id\030\001 \001(\0132\032.datacatalog.ReservationI" + "D\022\020\n\010owner_id\030\002 \001(\t\0225\n\022heartbeat_interva" + "l\030\003 \001(\0132\031.google.protobuf.Duration\022.\n\nex" + "pires_at\030\004 \001(\0132\032.google.protobuf.Timesta" + "mp\022\'\n\010metadata\030\006 \001(\0132\025.datacatalog.Metad" + "ata\"O\n\036GetOrExtendReservationResponse\022-\n" + "\013reservation\030\001 \001(\0132\030.datacatalog.Reserva" + "tion\"a\n\031ReleaseReservationRequest\0222\n\016res" + "ervation_id\030\001 \001(\0132\032.datacatalog.Reservat" + "ionID\022\020\n\010owner_id\030\002 \001(\t\"\034\n\032ReleaseReserv" + "ationResponse\"m\n\007Dataset\022\"\n\002id\030\001 \001(\0132\026.d" + "atacatalog.DatasetID\022\'\n\010metadata\030\002 \001(\0132\025" + ".datacatalog.Metadata\022\025\n\rpartitionKeys\030\003" + " \003(\t\"\'\n\tPartition\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030" + "\002 \001(\t\"Y\n\tDatasetID\022\017\n\007project\030\001 \001(\t\022\014\n\004n" + "ame\030\002 \001(\t\022\016\n\006domain\030\003 \001(\t\022\017\n\007version\030\004 \001" + "(\t\022\014\n\004UUID\030\005 \001(\t\"\215\002\n\010Artifact\022\n\n\002id\030\001 \001(" + "\t\022\'\n\007dataset\030\002 \001(\0132\026.datacatalog.Dataset" + "ID\022\'\n\004data\030\003 \003(\0132\031.datacatalog.ArtifactD" + "ata\022\'\n\010metadata\030\004 \001(\0132\025.datacatalog.Meta" + "data\022*\n\npartitions\030\005 \003(\0132\026.datacatalog.P" + "artition\022\036\n\004tags\030\006 \003(\0132\020.datacatalog.Tag" + "\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf.T" + "imestamp\"C\n\014ArtifactData\022\014\n\004name\030\001 \001(\t\022%" + "\n\005value\030\002 \001(\0132\026.flyteidl.core.Literal\"Q\n" + "\003Tag\022\014\n\004name\030\001 \001(\t\022\023\n\013artifact_id\030\002 \001(\t\022" + "\'\n\007dataset\030\003 \001(\0132\026.datacatalog.DatasetID" + "\"m\n\010Metadata\0222\n\007key_map\030\001 \003(\0132!.datacata" + "log.Metadata.KeyMapEntry\032-\n\013KeyMapEntry\022" + "\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"F\n\020Filte" + "rExpression\0222\n\007filters\030\001 \003(\0132!.datacatal" + "og.SinglePropertyFilter\"\211\003\n\024SingleProper" + "tyFilter\0224\n\ntag_filter\030\001 \001(\0132\036.datacatal" + "og.TagPropertyFilterH\000\022@\n\020partition_filt" + "er\030\002 \001(\0132$.datacatalog.PartitionProperty" + "FilterH\000\022>\n\017artifact_filter\030\003 \001(\0132#.data" + "catalog.ArtifactPropertyFilterH\000\022<\n\016data" + "set_filter\030\004 \001(\0132\".datacatalog.DatasetPr" + "opertyFilterH\000\022F\n\010operator\030\n \001(\01624.datac" + "atalog.SinglePropertyFilter.ComparisonOp" + "erator\" \n\022ComparisonOperator\022\n\n\006EQUALS\020\000" + "B\021\n\017property_filter\";\n\026ArtifactPropertyF" + "ilter\022\025\n\013artifact_id\030\001 \001(\tH\000B\n\n\010property" + "\"3\n\021TagPropertyFilter\022\022\n\010tag_name\030\001 \001(\tH" + "\000B\n\n\010property\"S\n\027PartitionPropertyFilter" + "\022,\n\007key_val\030\001 \001(\0132\031.datacatalog.KeyValue" + "PairH\000B\n\n\010property\"*\n\014KeyValuePair\022\013\n\003ke" + "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"k\n\025DatasetPropert" + "yFilter\022\021\n\007project\030\001 \001(\tH\000\022\016\n\004name\030\002 \001(\t" + "H\000\022\020\n\006domain\030\003 \001(\tH\000\022\021\n\007version\030\004 \001(\tH\000B" + "\n\n\010property\"\361\001\n\021PaginationOptions\022\r\n\005lim" + "it\030\001 \001(\r\022\r\n\005token\030\002 \001(\t\0227\n\007sortKey\030\003 \001(\016" + "2&.datacatalog.PaginationOptions.SortKey" + "\022;\n\tsortOrder\030\004 \001(\0162(.datacatalog.Pagina" + "tionOptions.SortOrder\"*\n\tSortOrder\022\016\n\nDE" + "SCENDING\020\000\022\r\n\tASCENDING\020\001\"\034\n\007SortKey\022\021\n\r" + "CREATION_TIME\020\0002\206\007\n\013DataCatalog\022V\n\rCreat" + "eDataset\022!.datacatalog.CreateDatasetRequ" + "est\032\".datacatalog.CreateDatasetResponse\022" + "M\n\nGetDataset\022\036.datacatalog.GetDatasetRe" + "quest\032\037.datacatalog.GetDatasetResponse\022Y" + "\n\016CreateArtifact\022\".datacatalog.CreateArt" + "ifactRequest\032#.datacatalog.CreateArtifac" + "tResponse\022P\n\013GetArtifact\022\037.datacatalog.G" + "etArtifactRequest\032 .datacatalog.GetArtif" + "actResponse\022A\n\006AddTag\022\032.datacatalog.AddT" + "agRequest\032\033.datacatalog.AddTagResponse\022V" + "\n\rListArtifacts\022!.datacatalog.ListArtifa" + "ctsRequest\032\".datacatalog.ListArtifactsRe" + "sponse\022S\n\014ListDatasets\022 .datacatalog.Lis" + "tDatasetsRequest\032!.datacatalog.ListDatas" + "etsResponse\022Y\n\016UpdateArtifact\022\".datacata" + "log.UpdateArtifactRequest\032#.datacatalog." + "UpdateArtifactResponse\022q\n\026GetOrExtendRes" + "ervation\022*.datacatalog.GetOrExtendReserv" + "ationRequest\032+.datacatalog.GetOrExtendRe" + "servationResponse\022e\n\022ReleaseReservation\022" + "&.datacatalog.ReleaseReservationRequest\032" + "\'.datacatalog.ReleaseReservationResponse" + "B=Z;github.com/flyteorg/flyteidl/gen/pb-" + "go/flyteidl/datacatalogb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto = { false, InitDefaults_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, descriptor_table_protodef_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, - "flyteidl/datacatalog/datacatalog.proto", &assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, 4566, + "flyteidl/datacatalog/datacatalog.proto", &assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto, 4871, }; void AddDescriptors_flyteidl_2fdatacatalog_2fdatacatalog_2eproto() { @@ -5170,23 +5239,877 @@ ::google::protobuf::uint8* ListDatasetsRequest::InternalSerializeWithCachedSizes 1, HasBitSetters::filter(this), target); } - // .datacatalog.PaginationOptions pagination = 2; - if (this->has_pagination()) { + // .datacatalog.PaginationOptions pagination = 2; + if (this->has_pagination()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 2, HasBitSetters::pagination(this), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:datacatalog.ListDatasetsRequest) + return target; +} + +size_t ListDatasetsRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:datacatalog.ListDatasetsRequest) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // .datacatalog.FilterExpression filter = 1; + if (this->has_filter()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *filter_); + } + + // .datacatalog.PaginationOptions pagination = 2; + if (this->has_pagination()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *pagination_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void ListDatasetsRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:datacatalog.ListDatasetsRequest) + GOOGLE_DCHECK_NE(&from, this); + const ListDatasetsRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:datacatalog.ListDatasetsRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:datacatalog.ListDatasetsRequest) + MergeFrom(*source); + } +} + +void ListDatasetsRequest::MergeFrom(const ListDatasetsRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:datacatalog.ListDatasetsRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_filter()) { + mutable_filter()->::datacatalog::FilterExpression::MergeFrom(from.filter()); + } + if (from.has_pagination()) { + mutable_pagination()->::datacatalog::PaginationOptions::MergeFrom(from.pagination()); + } +} + +void ListDatasetsRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:datacatalog.ListDatasetsRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void ListDatasetsRequest::CopyFrom(const ListDatasetsRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:datacatalog.ListDatasetsRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ListDatasetsRequest::IsInitialized() const { + return true; +} + +void ListDatasetsRequest::Swap(ListDatasetsRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void ListDatasetsRequest::InternalSwap(ListDatasetsRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + swap(filter_, other->filter_); + swap(pagination_, other->pagination_); +} + +::google::protobuf::Metadata ListDatasetsRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto); + return ::file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void ListDatasetsResponse::InitAsDefaultInstance() { +} +class ListDatasetsResponse::HasBitSetters { + public: +}; + +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int ListDatasetsResponse::kDatasetsFieldNumber; +const int ListDatasetsResponse::kNextTokenFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +ListDatasetsResponse::ListDatasetsResponse() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:datacatalog.ListDatasetsResponse) +} +ListDatasetsResponse::ListDatasetsResponse(const ListDatasetsResponse& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + datasets_(from.datasets_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + next_token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.next_token().size() > 0) { + next_token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.next_token_); + } + // @@protoc_insertion_point(copy_constructor:datacatalog.ListDatasetsResponse) +} + +void ListDatasetsResponse::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_ListDatasetsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + next_token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +ListDatasetsResponse::~ListDatasetsResponse() { + // @@protoc_insertion_point(destructor:datacatalog.ListDatasetsResponse) + SharedDtor(); +} + +void ListDatasetsResponse::SharedDtor() { + next_token_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} + +void ListDatasetsResponse::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const ListDatasetsResponse& ListDatasetsResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_ListDatasetsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + return *internal_default_instance(); +} + + +void ListDatasetsResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:datacatalog.ListDatasetsResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + datasets_.Clear(); + next_token_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* ListDatasetsResponse::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // repeated .datacatalog.Dataset datasets = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::datacatalog::Dataset::_InternalParse; + object = msg->add_datasets(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1)); + break; + } + // string next_token = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("datacatalog.ListDatasetsResponse.next_token"); + object = msg->mutable_next_token(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool ListDatasetsResponse::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:datacatalog.ListDatasetsResponse) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // repeated .datacatalog.Dataset datasets = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, add_datasets())); + } else { + goto handle_unusual; + } + break; + } + + // string next_token = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_next_token())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->next_token().data(), static_cast(this->next_token().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "datacatalog.ListDatasetsResponse.next_token")); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:datacatalog.ListDatasetsResponse) + return true; +failure: + // @@protoc_insertion_point(parse_failure:datacatalog.ListDatasetsResponse) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void ListDatasetsResponse::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:datacatalog.ListDatasetsResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated .datacatalog.Dataset datasets = 1; + for (unsigned int i = 0, + n = static_cast(this->datasets_size()); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, + this->datasets(static_cast(i)), + output); + } + + // string next_token = 2; + if (this->next_token().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->next_token().data(), static_cast(this->next_token().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "datacatalog.ListDatasetsResponse.next_token"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->next_token(), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:datacatalog.ListDatasetsResponse) +} + +::google::protobuf::uint8* ListDatasetsResponse::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:datacatalog.ListDatasetsResponse) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated .datacatalog.Dataset datasets = 1; + for (unsigned int i = 0, + n = static_cast(this->datasets_size()); i < n; i++) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, this->datasets(static_cast(i)), target); + } + + // string next_token = 2; + if (this->next_token().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->next_token().data(), static_cast(this->next_token().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "datacatalog.ListDatasetsResponse.next_token"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->next_token(), target); + } + + if (_internal_metadata_.have_unknown_fields()) { + target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields(), target); + } + // @@protoc_insertion_point(serialize_to_array_end:datacatalog.ListDatasetsResponse) + return target; +} + +size_t ListDatasetsResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:datacatalog.ListDatasetsResponse) + size_t total_size = 0; + + if (_internal_metadata_.have_unknown_fields()) { + total_size += + ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( + _internal_metadata_.unknown_fields()); + } + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // repeated .datacatalog.Dataset datasets = 1; + { + unsigned int count = static_cast(this->datasets_size()); + total_size += 1UL * count; + for (unsigned int i = 0; i < count; i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSize( + this->datasets(static_cast(i))); + } + } + + // string next_token = 2; + if (this->next_token().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->next_token()); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void ListDatasetsResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:datacatalog.ListDatasetsResponse) + GOOGLE_DCHECK_NE(&from, this); + const ListDatasetsResponse* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:datacatalog.ListDatasetsResponse) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:datacatalog.ListDatasetsResponse) + MergeFrom(*source); + } +} + +void ListDatasetsResponse::MergeFrom(const ListDatasetsResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:datacatalog.ListDatasetsResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + datasets_.MergeFrom(from.datasets_); + if (from.next_token().size() > 0) { + + next_token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.next_token_); + } +} + +void ListDatasetsResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:datacatalog.ListDatasetsResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void ListDatasetsResponse::CopyFrom(const ListDatasetsResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:datacatalog.ListDatasetsResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ListDatasetsResponse::IsInitialized() const { + return true; +} + +void ListDatasetsResponse::Swap(ListDatasetsResponse* other) { + if (other == this) return; + InternalSwap(other); +} +void ListDatasetsResponse::InternalSwap(ListDatasetsResponse* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + CastToBase(&datasets_)->InternalSwap(CastToBase(&other->datasets_)); + next_token_.Swap(&other->next_token_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); +} + +::google::protobuf::Metadata ListDatasetsResponse::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto); + return ::file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[kIndexInFileMessages]; +} + + +// =================================================================== + +void UpdateArtifactRequest::InitAsDefaultInstance() { + ::datacatalog::_UpdateArtifactRequest_default_instance_._instance.get_mutable()->dataset_ = const_cast< ::datacatalog::DatasetID*>( + ::datacatalog::DatasetID::internal_default_instance()); + ::datacatalog::_UpdateArtifactRequest_default_instance_.artifact_id_.UnsafeSetDefault( + &::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::datacatalog::_UpdateArtifactRequest_default_instance_.tag_name_.UnsafeSetDefault( + &::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +class UpdateArtifactRequest::HasBitSetters { + public: + static const ::datacatalog::DatasetID& dataset(const UpdateArtifactRequest* msg); +}; + +const ::datacatalog::DatasetID& +UpdateArtifactRequest::HasBitSetters::dataset(const UpdateArtifactRequest* msg) { + return *msg->dataset_; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int UpdateArtifactRequest::kDatasetFieldNumber; +const int UpdateArtifactRequest::kArtifactIdFieldNumber; +const int UpdateArtifactRequest::kTagNameFieldNumber; +const int UpdateArtifactRequest::kDataFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +UpdateArtifactRequest::UpdateArtifactRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:datacatalog.UpdateArtifactRequest) +} +UpdateArtifactRequest::UpdateArtifactRequest(const UpdateArtifactRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr), + data_(from.data_) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + if (from.has_dataset()) { + dataset_ = new ::datacatalog::DatasetID(*from.dataset_); + } else { + dataset_ = nullptr; + } + clear_has_query_handle(); + switch (from.query_handle_case()) { + case kArtifactId: { + set_artifact_id(from.artifact_id()); + break; + } + case kTagName: { + set_tag_name(from.tag_name()); + break; + } + case QUERY_HANDLE_NOT_SET: { + break; + } + } + // @@protoc_insertion_point(copy_constructor:datacatalog.UpdateArtifactRequest) +} + +void UpdateArtifactRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_UpdateArtifactRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + dataset_ = nullptr; + clear_has_query_handle(); +} + +UpdateArtifactRequest::~UpdateArtifactRequest() { + // @@protoc_insertion_point(destructor:datacatalog.UpdateArtifactRequest) + SharedDtor(); +} + +void UpdateArtifactRequest::SharedDtor() { + if (this != internal_default_instance()) delete dataset_; + if (has_query_handle()) { + clear_query_handle(); + } +} + +void UpdateArtifactRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const UpdateArtifactRequest& UpdateArtifactRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_UpdateArtifactRequest_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + return *internal_default_instance(); +} + + +void UpdateArtifactRequest::clear_query_handle() { +// @@protoc_insertion_point(one_of_clear_start:datacatalog.UpdateArtifactRequest) + switch (query_handle_case()) { + case kArtifactId: { + query_handle_.artifact_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + break; + } + case kTagName: { + query_handle_.tag_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + break; + } + case QUERY_HANDLE_NOT_SET: { + break; + } + } + _oneof_case_[0] = QUERY_HANDLE_NOT_SET; +} + + +void UpdateArtifactRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:datacatalog.UpdateArtifactRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + data_.Clear(); + if (GetArenaNoVirtual() == nullptr && dataset_ != nullptr) { + delete dataset_; + } + dataset_ = nullptr; + clear_query_handle(); + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* UpdateArtifactRequest::_InternalParse(const char* begin, const char* end, void* object, + ::google::protobuf::internal::ParseContext* ctx) { + auto msg = static_cast(object); + ::google::protobuf::int32 size; (void)size; + int depth; (void)depth; + ::google::protobuf::uint32 tag; + ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end; + auto ptr = begin; + while (ptr < end) { + ptr = ::google::protobuf::io::Parse32(ptr, &tag); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + switch (tag >> 3) { + // .datacatalog.DatasetID dataset = 1; + case 1: { + if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::datacatalog::DatasetID::_InternalParse; + object = msg->mutable_dataset(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + break; + } + // string artifact_id = 2; + case 2: { + if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("datacatalog.UpdateArtifactRequest.artifact_id"); + object = msg->mutable_artifact_id(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // string tag_name = 3; + case 3: { + if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual; + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + ctx->extra_parse_data().SetFieldName("datacatalog.UpdateArtifactRequest.tag_name"); + object = msg->mutable_tag_name(); + if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { + parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; + goto string_till_end; + } + GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx)); + ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx); + ptr += size; + break; + } + // repeated .datacatalog.ArtifactData data = 4; + case 4: { + if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual; + do { + ptr = ::google::protobuf::io::ReadSize(ptr, &size); + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); + parser_till_end = ::datacatalog::ArtifactData::_InternalParse; + object = msg->add_data(); + if (size > end - ptr) goto len_delim_till_end; + ptr += size; + GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( + {parser_till_end, object}, ptr - size, ptr)); + if (ptr >= end) break; + } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1)); + break; + } + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->EndGroup(tag); + return ptr; + } + auto res = UnknownFieldParse(tag, {_InternalParse, msg}, + ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx); + ptr = res.first; + GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr); + if (res.second) return ptr; + } + } // switch + } // while + return ptr; +string_till_end: + static_cast<::std::string*>(object)->clear(); + static_cast<::std::string*>(object)->reserve(size); + goto len_delim_till_end; +len_delim_till_end: + return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg}, + {parser_till_end, object}, size); +} +#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +bool UpdateArtifactRequest::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure + ::google::protobuf::uint32 tag; + // @@protoc_insertion_point(parse_start:datacatalog.UpdateArtifactRequest) + for (;;) { + ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); + tag = p.first; + if (!p.second) goto handle_unusual; + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // .datacatalog.DatasetID dataset = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_dataset())); + } else { + goto handle_unusual; + } + break; + } + + // string artifact_id = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_artifact_id())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->artifact_id().data(), static_cast(this->artifact_id().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "datacatalog.UpdateArtifactRequest.artifact_id")); + } else { + goto handle_unusual; + } + break; + } + + // string tag_name = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_tag_name())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tag_name().data(), static_cast(this->tag_name().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "datacatalog.UpdateArtifactRequest.tag_name")); + } else { + goto handle_unusual; + } + break; + } + + // repeated .datacatalog.ArtifactData data = 4; + case 4: { + if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, add_data())); + } else { + goto handle_unusual; + } + break; + } + + default: { + handle_unusual: + if (tag == 0) { + goto success; + } + DO_(::google::protobuf::internal::WireFormat::SkipField( + input, tag, _internal_metadata_.mutable_unknown_fields())); + break; + } + } + } +success: + // @@protoc_insertion_point(parse_success:datacatalog.UpdateArtifactRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:datacatalog.UpdateArtifactRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void UpdateArtifactRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:datacatalog.UpdateArtifactRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .datacatalog.DatasetID dataset = 1; + if (this->has_dataset()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::dataset(this), output); + } + + // string artifact_id = 2; + if (has_artifact_id()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->artifact_id().data(), static_cast(this->artifact_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "datacatalog.UpdateArtifactRequest.artifact_id"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->artifact_id(), output); + } + + // string tag_name = 3; + if (has_tag_name()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tag_name().data(), static_cast(this->tag_name().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "datacatalog.UpdateArtifactRequest.tag_name"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 3, this->tag_name(), output); + } + + // repeated .datacatalog.ArtifactData data = 4; + for (unsigned int i = 0, + n = static_cast(this->data_size()); i < n; i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 4, + this->data(static_cast(i)), + output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:datacatalog.UpdateArtifactRequest) +} + +::google::protobuf::uint8* UpdateArtifactRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:datacatalog.UpdateArtifactRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .datacatalog.DatasetID dataset = 1; + if (this->has_dataset()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::dataset(this), target); + } + + // string artifact_id = 2; + if (has_artifact_id()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->artifact_id().data(), static_cast(this->artifact_id().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "datacatalog.UpdateArtifactRequest.artifact_id"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->artifact_id(), target); + } + + // string tag_name = 3; + if (has_tag_name()) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->tag_name().data(), static_cast(this->tag_name().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "datacatalog.UpdateArtifactRequest.tag_name"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 3, this->tag_name(), target); + } + + // repeated .datacatalog.ArtifactData data = 4; + for (unsigned int i = 0, + n = static_cast(this->data_size()); i < n; i++) { target = ::google::protobuf::internal::WireFormatLite:: InternalWriteMessageToArray( - 2, HasBitSetters::pagination(this), target); + 4, this->data(static_cast(i)), target); } if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); } - // @@protoc_insertion_point(serialize_to_array_end:datacatalog.ListDatasetsRequest) + // @@protoc_insertion_point(serialize_to_array_end:datacatalog.UpdateArtifactRequest) return target; } -size_t ListDatasetsRequest::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:datacatalog.ListDatasetsRequest) +size_t UpdateArtifactRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:datacatalog.UpdateArtifactRequest) size_t total_size = 0; if (_internal_metadata_.have_unknown_fields()) { @@ -5198,85 +6121,121 @@ size_t ListDatasetsRequest::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - // .datacatalog.FilterExpression filter = 1; - if (this->has_filter()) { - total_size += 1 + - ::google::protobuf::internal::WireFormatLite::MessageSize( - *filter_); + // repeated .datacatalog.ArtifactData data = 4; + { + unsigned int count = static_cast(this->data_size()); + total_size += 1UL * count; + for (unsigned int i = 0; i < count; i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSize( + this->data(static_cast(i))); + } } - // .datacatalog.PaginationOptions pagination = 2; - if (this->has_pagination()) { + // .datacatalog.DatasetID dataset = 1; + if (this->has_dataset()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSize( - *pagination_); + *dataset_); } + switch (query_handle_case()) { + // string artifact_id = 2; + case kArtifactId: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->artifact_id()); + break; + } + // string tag_name = 3; + case kTagName: { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->tag_name()); + break; + } + case QUERY_HANDLE_NOT_SET: { + break; + } + } int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } -void ListDatasetsRequest::MergeFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:datacatalog.ListDatasetsRequest) +void UpdateArtifactRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:datacatalog.UpdateArtifactRequest) GOOGLE_DCHECK_NE(&from, this); - const ListDatasetsRequest* source = - ::google::protobuf::DynamicCastToGenerated( + const UpdateArtifactRequest* source = + ::google::protobuf::DynamicCastToGenerated( &from); if (source == nullptr) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:datacatalog.ListDatasetsRequest) + // @@protoc_insertion_point(generalized_merge_from_cast_fail:datacatalog.UpdateArtifactRequest) ::google::protobuf::internal::ReflectionOps::Merge(from, this); } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:datacatalog.ListDatasetsRequest) + // @@protoc_insertion_point(generalized_merge_from_cast_success:datacatalog.UpdateArtifactRequest) MergeFrom(*source); } } -void ListDatasetsRequest::MergeFrom(const ListDatasetsRequest& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:datacatalog.ListDatasetsRequest) +void UpdateArtifactRequest::MergeFrom(const UpdateArtifactRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:datacatalog.UpdateArtifactRequest) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom(from._internal_metadata_); ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; - if (from.has_filter()) { - mutable_filter()->::datacatalog::FilterExpression::MergeFrom(from.filter()); + data_.MergeFrom(from.data_); + if (from.has_dataset()) { + mutable_dataset()->::datacatalog::DatasetID::MergeFrom(from.dataset()); } - if (from.has_pagination()) { - mutable_pagination()->::datacatalog::PaginationOptions::MergeFrom(from.pagination()); + switch (from.query_handle_case()) { + case kArtifactId: { + set_artifact_id(from.artifact_id()); + break; + } + case kTagName: { + set_tag_name(from.tag_name()); + break; + } + case QUERY_HANDLE_NOT_SET: { + break; + } } } -void ListDatasetsRequest::CopyFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:datacatalog.ListDatasetsRequest) +void UpdateArtifactRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:datacatalog.UpdateArtifactRequest) if (&from == this) return; Clear(); MergeFrom(from); } -void ListDatasetsRequest::CopyFrom(const ListDatasetsRequest& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:datacatalog.ListDatasetsRequest) +void UpdateArtifactRequest::CopyFrom(const UpdateArtifactRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:datacatalog.UpdateArtifactRequest) if (&from == this) return; Clear(); MergeFrom(from); } -bool ListDatasetsRequest::IsInitialized() const { +bool UpdateArtifactRequest::IsInitialized() const { return true; } -void ListDatasetsRequest::Swap(ListDatasetsRequest* other) { +void UpdateArtifactRequest::Swap(UpdateArtifactRequest* other) { if (other == this) return; InternalSwap(other); } -void ListDatasetsRequest::InternalSwap(ListDatasetsRequest* other) { +void UpdateArtifactRequest::InternalSwap(UpdateArtifactRequest* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); - swap(filter_, other->filter_); - swap(pagination_, other->pagination_); + CastToBase(&data_)->InternalSwap(CastToBase(&other->data_)); + swap(dataset_, other->dataset_); + swap(query_handle_, other->query_handle_); + swap(_oneof_case_[0], other->_oneof_case_[0]); } -::google::protobuf::Metadata ListDatasetsRequest::GetMetadata() const { +::google::protobuf::Metadata UpdateArtifactRequest::GetMetadata() const { ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto); return ::file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[kIndexInFileMessages]; } @@ -5284,73 +6243,70 @@ ::google::protobuf::Metadata ListDatasetsRequest::GetMetadata() const { // =================================================================== -void ListDatasetsResponse::InitAsDefaultInstance() { +void UpdateArtifactResponse::InitAsDefaultInstance() { } -class ListDatasetsResponse::HasBitSetters { +class UpdateArtifactResponse::HasBitSetters { public: }; #if !defined(_MSC_VER) || _MSC_VER >= 1900 -const int ListDatasetsResponse::kDatasetsFieldNumber; -const int ListDatasetsResponse::kNextTokenFieldNumber; +const int UpdateArtifactResponse::kArtifactIdFieldNumber; #endif // !defined(_MSC_VER) || _MSC_VER >= 1900 -ListDatasetsResponse::ListDatasetsResponse() +UpdateArtifactResponse::UpdateArtifactResponse() : ::google::protobuf::Message(), _internal_metadata_(nullptr) { SharedCtor(); - // @@protoc_insertion_point(constructor:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(constructor:datacatalog.UpdateArtifactResponse) } -ListDatasetsResponse::ListDatasetsResponse(const ListDatasetsResponse& from) +UpdateArtifactResponse::UpdateArtifactResponse(const UpdateArtifactResponse& from) : ::google::protobuf::Message(), - _internal_metadata_(nullptr), - datasets_(from.datasets_) { + _internal_metadata_(nullptr) { _internal_metadata_.MergeFrom(from._internal_metadata_); - next_token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); - if (from.next_token().size() > 0) { - next_token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.next_token_); + artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.artifact_id().size() > 0) { + artifact_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.artifact_id_); } - // @@protoc_insertion_point(copy_constructor:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(copy_constructor:datacatalog.UpdateArtifactResponse) } -void ListDatasetsResponse::SharedCtor() { +void UpdateArtifactResponse::SharedCtor() { ::google::protobuf::internal::InitSCC( - &scc_info_ListDatasetsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); - next_token_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + &scc_info_UpdateArtifactResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); + artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); } -ListDatasetsResponse::~ListDatasetsResponse() { - // @@protoc_insertion_point(destructor:datacatalog.ListDatasetsResponse) +UpdateArtifactResponse::~UpdateArtifactResponse() { + // @@protoc_insertion_point(destructor:datacatalog.UpdateArtifactResponse) SharedDtor(); } -void ListDatasetsResponse::SharedDtor() { - next_token_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +void UpdateArtifactResponse::SharedDtor() { + artifact_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); } -void ListDatasetsResponse::SetCachedSize(int size) const { +void UpdateArtifactResponse::SetCachedSize(int size) const { _cached_size_.Set(size); } -const ListDatasetsResponse& ListDatasetsResponse::default_instance() { - ::google::protobuf::internal::InitSCC(&::scc_info_ListDatasetsResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); +const UpdateArtifactResponse& UpdateArtifactResponse::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_UpdateArtifactResponse_flyteidl_2fdatacatalog_2fdatacatalog_2eproto.base); return *internal_default_instance(); } -void ListDatasetsResponse::Clear() { -// @@protoc_insertion_point(message_clear_start:datacatalog.ListDatasetsResponse) +void UpdateArtifactResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:datacatalog.UpdateArtifactResponse) ::google::protobuf::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - datasets_.Clear(); - next_token_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + artifact_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); _internal_metadata_.Clear(); } #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER -const char* ListDatasetsResponse::_InternalParse(const char* begin, const char* end, void* object, +const char* UpdateArtifactResponse::_InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx) { - auto msg = static_cast(object); + auto msg = static_cast(object); ::google::protobuf::int32 size; (void)size; int depth; (void)depth; ::google::protobuf::uint32 tag; @@ -5360,29 +6316,13 @@ const char* ListDatasetsResponse::_InternalParse(const char* begin, const char* ptr = ::google::protobuf::io::Parse32(ptr, &tag); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); switch (tag >> 3) { - // repeated .datacatalog.Dataset datasets = 1; + // string artifact_id = 1; case 1: { if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual; - do { - ptr = ::google::protobuf::io::ReadSize(ptr, &size); - GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); - parser_till_end = ::datacatalog::Dataset::_InternalParse; - object = msg->add_datasets(); - if (size > end - ptr) goto len_delim_till_end; - ptr += size; - GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange( - {parser_till_end, object}, ptr - size, ptr)); - if (ptr >= end) break; - } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1)); - break; - } - // string next_token = 2; - case 2: { - if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual; ptr = ::google::protobuf::io::ReadSize(ptr, &size); GOOGLE_PROTOBUF_PARSER_ASSERT(ptr); - ctx->extra_parse_data().SetFieldName("datacatalog.ListDatasetsResponse.next_token"); - object = msg->mutable_next_token(); + ctx->extra_parse_data().SetFieldName("datacatalog.UpdateArtifactResponse.artifact_id"); + object = msg->mutable_artifact_id(); if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) { parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8; goto string_till_end; @@ -5416,36 +6356,25 @@ const char* ListDatasetsResponse::_InternalParse(const char* begin, const char* {parser_till_end, object}, size); } #else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER -bool ListDatasetsResponse::MergePartialFromCodedStream( +bool UpdateArtifactResponse::MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input) { #define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure ::google::protobuf::uint32 tag; - // @@protoc_insertion_point(parse_start:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(parse_start:datacatalog.UpdateArtifactResponse) for (;;) { ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u); tag = p.first; if (!p.second) goto handle_unusual; switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { - // repeated .datacatalog.Dataset datasets = 1; + // string artifact_id = 1; case 1: { if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { - DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( - input, add_datasets())); - } else { - goto handle_unusual; - } - break; - } - - // string next_token = 2; - case 2: { - if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { DO_(::google::protobuf::internal::WireFormatLite::ReadString( - input, this->mutable_next_token())); + input, this->mutable_artifact_id())); DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - this->next_token().data(), static_cast(this->next_token().length()), + this->artifact_id().data(), static_cast(this->artifact_id().length()), ::google::protobuf::internal::WireFormatLite::PARSE, - "datacatalog.ListDatasetsResponse.next_token")); + "datacatalog.UpdateArtifactResponse.artifact_id")); } else { goto handle_unusual; } @@ -5464,82 +6393,65 @@ bool ListDatasetsResponse::MergePartialFromCodedStream( } } success: - // @@protoc_insertion_point(parse_success:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(parse_success:datacatalog.UpdateArtifactResponse) return true; failure: - // @@protoc_insertion_point(parse_failure:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(parse_failure:datacatalog.UpdateArtifactResponse) return false; #undef DO_ } #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER -void ListDatasetsResponse::SerializeWithCachedSizes( +void UpdateArtifactResponse::SerializeWithCachedSizes( ::google::protobuf::io::CodedOutputStream* output) const { - // @@protoc_insertion_point(serialize_start:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(serialize_start:datacatalog.UpdateArtifactResponse) ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; - // repeated .datacatalog.Dataset datasets = 1; - for (unsigned int i = 0, - n = static_cast(this->datasets_size()); i < n; i++) { - ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( - 1, - this->datasets(static_cast(i)), - output); - } - - // string next_token = 2; - if (this->next_token().size() > 0) { + // string artifact_id = 1; + if (this->artifact_id().size() > 0) { ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - this->next_token().data(), static_cast(this->next_token().length()), + this->artifact_id().data(), static_cast(this->artifact_id().length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, - "datacatalog.ListDatasetsResponse.next_token"); + "datacatalog.UpdateArtifactResponse.artifact_id"); ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( - 2, this->next_token(), output); + 1, this->artifact_id(), output); } if (_internal_metadata_.have_unknown_fields()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); } - // @@protoc_insertion_point(serialize_end:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(serialize_end:datacatalog.UpdateArtifactResponse) } -::google::protobuf::uint8* ListDatasetsResponse::InternalSerializeWithCachedSizesToArray( +::google::protobuf::uint8* UpdateArtifactResponse::InternalSerializeWithCachedSizesToArray( ::google::protobuf::uint8* target) const { - // @@protoc_insertion_point(serialize_to_array_start:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(serialize_to_array_start:datacatalog.UpdateArtifactResponse) ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; - // repeated .datacatalog.Dataset datasets = 1; - for (unsigned int i = 0, - n = static_cast(this->datasets_size()); i < n; i++) { - target = ::google::protobuf::internal::WireFormatLite:: - InternalWriteMessageToArray( - 1, this->datasets(static_cast(i)), target); - } - - // string next_token = 2; - if (this->next_token().size() > 0) { + // string artifact_id = 1; + if (this->artifact_id().size() > 0) { ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( - this->next_token().data(), static_cast(this->next_token().length()), + this->artifact_id().data(), static_cast(this->artifact_id().length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, - "datacatalog.ListDatasetsResponse.next_token"); + "datacatalog.UpdateArtifactResponse.artifact_id"); target = ::google::protobuf::internal::WireFormatLite::WriteStringToArray( - 2, this->next_token(), target); + 1, this->artifact_id(), target); } if (_internal_metadata_.have_unknown_fields()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); } - // @@protoc_insertion_point(serialize_to_array_end:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(serialize_to_array_end:datacatalog.UpdateArtifactResponse) return target; } -size_t ListDatasetsResponse::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:datacatalog.ListDatasetsResponse) +size_t UpdateArtifactResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:datacatalog.UpdateArtifactResponse) size_t total_size = 0; if (_internal_metadata_.have_unknown_fields()) { @@ -5551,22 +6463,11 @@ size_t ListDatasetsResponse::ByteSizeLong() const { // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - // repeated .datacatalog.Dataset datasets = 1; - { - unsigned int count = static_cast(this->datasets_size()); - total_size += 1UL * count; - for (unsigned int i = 0; i < count; i++) { - total_size += - ::google::protobuf::internal::WireFormatLite::MessageSize( - this->datasets(static_cast(i))); - } - } - - // string next_token = 2; - if (this->next_token().size() > 0) { + // string artifact_id = 1; + if (this->artifact_id().size() > 0) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( - this->next_token()); + this->artifact_id()); } int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); @@ -5574,66 +6475,64 @@ size_t ListDatasetsResponse::ByteSizeLong() const { return total_size; } -void ListDatasetsResponse::MergeFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:datacatalog.ListDatasetsResponse) +void UpdateArtifactResponse::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:datacatalog.UpdateArtifactResponse) GOOGLE_DCHECK_NE(&from, this); - const ListDatasetsResponse* source = - ::google::protobuf::DynamicCastToGenerated( + const UpdateArtifactResponse* source = + ::google::protobuf::DynamicCastToGenerated( &from); if (source == nullptr) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(generalized_merge_from_cast_fail:datacatalog.UpdateArtifactResponse) ::google::protobuf::internal::ReflectionOps::Merge(from, this); } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:datacatalog.ListDatasetsResponse) + // @@protoc_insertion_point(generalized_merge_from_cast_success:datacatalog.UpdateArtifactResponse) MergeFrom(*source); } } -void ListDatasetsResponse::MergeFrom(const ListDatasetsResponse& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:datacatalog.ListDatasetsResponse) +void UpdateArtifactResponse::MergeFrom(const UpdateArtifactResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:datacatalog.UpdateArtifactResponse) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom(from._internal_metadata_); ::google::protobuf::uint32 cached_has_bits = 0; (void) cached_has_bits; - datasets_.MergeFrom(from.datasets_); - if (from.next_token().size() > 0) { + if (from.artifact_id().size() > 0) { - next_token_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.next_token_); + artifact_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.artifact_id_); } } -void ListDatasetsResponse::CopyFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:datacatalog.ListDatasetsResponse) +void UpdateArtifactResponse::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:datacatalog.UpdateArtifactResponse) if (&from == this) return; Clear(); MergeFrom(from); } -void ListDatasetsResponse::CopyFrom(const ListDatasetsResponse& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:datacatalog.ListDatasetsResponse) +void UpdateArtifactResponse::CopyFrom(const UpdateArtifactResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:datacatalog.UpdateArtifactResponse) if (&from == this) return; Clear(); MergeFrom(from); } -bool ListDatasetsResponse::IsInitialized() const { +bool UpdateArtifactResponse::IsInitialized() const { return true; } -void ListDatasetsResponse::Swap(ListDatasetsResponse* other) { +void UpdateArtifactResponse::Swap(UpdateArtifactResponse* other) { if (other == this) return; InternalSwap(other); } -void ListDatasetsResponse::InternalSwap(ListDatasetsResponse* other) { +void UpdateArtifactResponse::InternalSwap(UpdateArtifactResponse* other) { using std::swap; _internal_metadata_.Swap(&other->_internal_metadata_); - CastToBase(&datasets_)->InternalSwap(CastToBase(&other->datasets_)); - next_token_.Swap(&other->next_token_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + artifact_id_.Swap(&other->artifact_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual()); } -::google::protobuf::Metadata ListDatasetsResponse::GetMetadata() const { +::google::protobuf::Metadata UpdateArtifactResponse::GetMetadata() const { ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto); return ::file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[kIndexInFileMessages]; } @@ -10764,7 +11663,7 @@ void Metadata_KeyMapEntry_DoNotUse::MergeFrom(const Metadata_KeyMapEntry_DoNotUs } ::google::protobuf::Metadata Metadata_KeyMapEntry_DoNotUse::GetMetadata() const { ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fdatacatalog_2fdatacatalog_2eproto); - return ::file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[26]; + return ::file_level_metadata_flyteidl_2fdatacatalog_2fdatacatalog_2eproto[28]; } void Metadata_KeyMapEntry_DoNotUse::MergeFrom( const ::google::protobuf::Message& other) { @@ -14475,6 +15374,12 @@ template<> PROTOBUF_NOINLINE ::datacatalog::ListDatasetsRequest* Arena::CreateMa template<> PROTOBUF_NOINLINE ::datacatalog::ListDatasetsResponse* Arena::CreateMaybeMessage< ::datacatalog::ListDatasetsResponse >(Arena* arena) { return Arena::CreateInternal< ::datacatalog::ListDatasetsResponse >(arena); } +template<> PROTOBUF_NOINLINE ::datacatalog::UpdateArtifactRequest* Arena::CreateMaybeMessage< ::datacatalog::UpdateArtifactRequest >(Arena* arena) { + return Arena::CreateInternal< ::datacatalog::UpdateArtifactRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::datacatalog::UpdateArtifactResponse* Arena::CreateMaybeMessage< ::datacatalog::UpdateArtifactResponse >(Arena* arena) { + return Arena::CreateInternal< ::datacatalog::UpdateArtifactResponse >(arena); +} template<> PROTOBUF_NOINLINE ::datacatalog::ReservationID* Arena::CreateMaybeMessage< ::datacatalog::ReservationID >(Arena* arena) { return Arena::CreateInternal< ::datacatalog::ReservationID >(arena); } diff --git a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.h b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.h index 0033b0cd3..ac8b5c69c 100644 --- a/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.h +++ b/gen/pb-cpp/flyteidl/datacatalog/datacatalog.pb.h @@ -48,7 +48,7 @@ struct TableStruct_flyteidl_2fdatacatalog_2fdatacatalog_2eproto { PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::AuxillaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); - static const ::google::protobuf::internal::ParseTable schema[36] + static const ::google::protobuf::internal::ParseTable schema[38] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; @@ -164,6 +164,12 @@ extern TagDefaultTypeInternal _Tag_default_instance_; class TagPropertyFilter; class TagPropertyFilterDefaultTypeInternal; extern TagPropertyFilterDefaultTypeInternal _TagPropertyFilter_default_instance_; +class UpdateArtifactRequest; +class UpdateArtifactRequestDefaultTypeInternal; +extern UpdateArtifactRequestDefaultTypeInternal _UpdateArtifactRequest_default_instance_; +class UpdateArtifactResponse; +class UpdateArtifactResponseDefaultTypeInternal; +extern UpdateArtifactResponseDefaultTypeInternal _UpdateArtifactResponse_default_instance_; } // namespace datacatalog namespace google { namespace protobuf { @@ -203,6 +209,8 @@ template<> ::datacatalog::ReservationID* Arena::CreateMaybeMessage<::datacatalog template<> ::datacatalog::SinglePropertyFilter* Arena::CreateMaybeMessage<::datacatalog::SinglePropertyFilter>(Arena*); template<> ::datacatalog::Tag* Arena::CreateMaybeMessage<::datacatalog::Tag>(Arena*); template<> ::datacatalog::TagPropertyFilter* Arena::CreateMaybeMessage<::datacatalog::TagPropertyFilter>(Arena*); +template<> ::datacatalog::UpdateArtifactRequest* Arena::CreateMaybeMessage<::datacatalog::UpdateArtifactRequest>(Arena*); +template<> ::datacatalog::UpdateArtifactResponse* Arena::CreateMaybeMessage<::datacatalog::UpdateArtifactResponse>(Arena*); } // namespace protobuf } // namespace google namespace datacatalog { @@ -1970,6 +1978,308 @@ class ListDatasetsResponse final : }; // ------------------------------------------------------------------- +class UpdateArtifactRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:datacatalog.UpdateArtifactRequest) */ { + public: + UpdateArtifactRequest(); + virtual ~UpdateArtifactRequest(); + + UpdateArtifactRequest(const UpdateArtifactRequest& from); + + inline UpdateArtifactRequest& operator=(const UpdateArtifactRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + UpdateArtifactRequest(UpdateArtifactRequest&& from) noexcept + : UpdateArtifactRequest() { + *this = ::std::move(from); + } + + inline UpdateArtifactRequest& operator=(UpdateArtifactRequest&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const UpdateArtifactRequest& default_instance(); + + enum QueryHandleCase { + kArtifactId = 2, + kTagName = 3, + QUERY_HANDLE_NOT_SET = 0, + }; + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const UpdateArtifactRequest* internal_default_instance() { + return reinterpret_cast( + &_UpdateArtifactRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 14; + + void Swap(UpdateArtifactRequest* other); + friend void swap(UpdateArtifactRequest& a, UpdateArtifactRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline UpdateArtifactRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + UpdateArtifactRequest* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const UpdateArtifactRequest& from); + void MergeFrom(const UpdateArtifactRequest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(UpdateArtifactRequest* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // repeated .datacatalog.ArtifactData data = 4; + int data_size() const; + void clear_data(); + static const int kDataFieldNumber = 4; + ::datacatalog::ArtifactData* mutable_data(int index); + ::google::protobuf::RepeatedPtrField< ::datacatalog::ArtifactData >* + mutable_data(); + const ::datacatalog::ArtifactData& data(int index) const; + ::datacatalog::ArtifactData* add_data(); + const ::google::protobuf::RepeatedPtrField< ::datacatalog::ArtifactData >& + data() const; + + // .datacatalog.DatasetID dataset = 1; + bool has_dataset() const; + void clear_dataset(); + static const int kDatasetFieldNumber = 1; + const ::datacatalog::DatasetID& dataset() const; + ::datacatalog::DatasetID* release_dataset(); + ::datacatalog::DatasetID* mutable_dataset(); + void set_allocated_dataset(::datacatalog::DatasetID* dataset); + + // string artifact_id = 2; + private: + bool has_artifact_id() const; + public: + void clear_artifact_id(); + static const int kArtifactIdFieldNumber = 2; + const ::std::string& artifact_id() const; + void set_artifact_id(const ::std::string& value); + #if LANG_CXX11 + void set_artifact_id(::std::string&& value); + #endif + void set_artifact_id(const char* value); + void set_artifact_id(const char* value, size_t size); + ::std::string* mutable_artifact_id(); + ::std::string* release_artifact_id(); + void set_allocated_artifact_id(::std::string* artifact_id); + + // string tag_name = 3; + private: + bool has_tag_name() const; + public: + void clear_tag_name(); + static const int kTagNameFieldNumber = 3; + const ::std::string& tag_name() const; + void set_tag_name(const ::std::string& value); + #if LANG_CXX11 + void set_tag_name(::std::string&& value); + #endif + void set_tag_name(const char* value); + void set_tag_name(const char* value, size_t size); + ::std::string* mutable_tag_name(); + ::std::string* release_tag_name(); + void set_allocated_tag_name(::std::string* tag_name); + + void clear_query_handle(); + QueryHandleCase query_handle_case() const; + // @@protoc_insertion_point(class_scope:datacatalog.UpdateArtifactRequest) + private: + class HasBitSetters; + void set_has_artifact_id(); + void set_has_tag_name(); + + inline bool has_query_handle() const; + inline void clear_has_query_handle(); + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::RepeatedPtrField< ::datacatalog::ArtifactData > data_; + ::datacatalog::DatasetID* dataset_; + union QueryHandleUnion { + QueryHandleUnion() {} + ::google::protobuf::internal::ArenaStringPtr artifact_id_; + ::google::protobuf::internal::ArenaStringPtr tag_name_; + } query_handle_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + ::google::protobuf::uint32 _oneof_case_[1]; + + friend struct ::TableStruct_flyteidl_2fdatacatalog_2fdatacatalog_2eproto; +}; +// ------------------------------------------------------------------- + +class UpdateArtifactResponse final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:datacatalog.UpdateArtifactResponse) */ { + public: + UpdateArtifactResponse(); + virtual ~UpdateArtifactResponse(); + + UpdateArtifactResponse(const UpdateArtifactResponse& from); + + inline UpdateArtifactResponse& operator=(const UpdateArtifactResponse& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + UpdateArtifactResponse(UpdateArtifactResponse&& from) noexcept + : UpdateArtifactResponse() { + *this = ::std::move(from); + } + + inline UpdateArtifactResponse& operator=(UpdateArtifactResponse&& from) noexcept { + if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + #endif + static const ::google::protobuf::Descriptor* descriptor() { + return default_instance().GetDescriptor(); + } + static const UpdateArtifactResponse& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const UpdateArtifactResponse* internal_default_instance() { + return reinterpret_cast( + &_UpdateArtifactResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 15; + + void Swap(UpdateArtifactResponse* other); + friend void swap(UpdateArtifactResponse& a, UpdateArtifactResponse& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline UpdateArtifactResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + UpdateArtifactResponse* New(::google::protobuf::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::google::protobuf::Message& from) final; + void MergeFrom(const ::google::protobuf::Message& from) final; + void CopyFrom(const UpdateArtifactResponse& from); + void MergeFrom(const UpdateArtifactResponse& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx); + ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; } + #else + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) final; + #endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const final; + ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(UpdateArtifactResponse* other); + private: + inline ::google::protobuf::Arena* GetArenaNoVirtual() const { + return nullptr; + } + inline void* MaybeArenaPtr() const { + return nullptr; + } + public: + + ::google::protobuf::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // string artifact_id = 1; + void clear_artifact_id(); + static const int kArtifactIdFieldNumber = 1; + const ::std::string& artifact_id() const; + void set_artifact_id(const ::std::string& value); + #if LANG_CXX11 + void set_artifact_id(::std::string&& value); + #endif + void set_artifact_id(const char* value); + void set_artifact_id(const char* value, size_t size); + ::std::string* mutable_artifact_id(); + ::std::string* release_artifact_id(); + void set_allocated_artifact_id(::std::string* artifact_id); + + // @@protoc_insertion_point(class_scope:datacatalog.UpdateArtifactResponse) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr artifact_id_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fdatacatalog_2fdatacatalog_2eproto; +}; +// ------------------------------------------------------------------- + class ReservationID final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:datacatalog.ReservationID) */ { public: @@ -2008,7 +2318,7 @@ class ReservationID final : &_ReservationID_default_instance_); } static constexpr int kIndexInFileMessages = - 14; + 16; void Swap(ReservationID* other); friend void swap(ReservationID& a, ReservationID& b) { @@ -2138,7 +2448,7 @@ class GetOrExtendReservationRequest final : &_GetOrExtendReservationRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 15; + 17; void Swap(GetOrExtendReservationRequest* other); friend void swap(GetOrExtendReservationRequest& a, GetOrExtendReservationRequest& b) { @@ -2278,7 +2588,7 @@ class Reservation final : &_Reservation_default_instance_); } static constexpr int kIndexInFileMessages = - 16; + 18; void Swap(Reservation* other); friend void swap(Reservation& a, Reservation& b) { @@ -2438,7 +2748,7 @@ class GetOrExtendReservationResponse final : &_GetOrExtendReservationResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 17; + 19; void Swap(GetOrExtendReservationResponse* other); friend void swap(GetOrExtendReservationResponse& a, GetOrExtendReservationResponse& b) { @@ -2553,7 +2863,7 @@ class ReleaseReservationRequest final : &_ReleaseReservationRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 18; + 20; void Swap(ReleaseReservationRequest* other); friend void swap(ReleaseReservationRequest& a, ReleaseReservationRequest& b) { @@ -2683,7 +2993,7 @@ class ReleaseReservationResponse final : &_ReleaseReservationResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 19; + 21; void Swap(ReleaseReservationResponse* other); friend void swap(ReleaseReservationResponse& a, ReleaseReservationResponse& b) { @@ -2788,7 +3098,7 @@ class Dataset final : &_Dataset_default_instance_); } static constexpr int kIndexInFileMessages = - 20; + 22; void Swap(Dataset* other); friend void swap(Dataset& a, Dataset& b) { @@ -2936,7 +3246,7 @@ class Partition final : &_Partition_default_instance_); } static constexpr int kIndexInFileMessages = - 21; + 23; void Swap(Partition* other); friend void swap(Partition& a, Partition& b) { @@ -3071,7 +3381,7 @@ class DatasetID final : &_DatasetID_default_instance_); } static constexpr int kIndexInFileMessages = - 22; + 24; void Swap(DatasetID* other); friend void swap(DatasetID& a, DatasetID& b) { @@ -3251,7 +3561,7 @@ class Artifact final : &_Artifact_default_instance_); } static constexpr int kIndexInFileMessages = - 23; + 25; void Swap(Artifact* other); friend void swap(Artifact& a, Artifact& b) { @@ -3440,7 +3750,7 @@ class ArtifactData final : &_ArtifactData_default_instance_); } static constexpr int kIndexInFileMessages = - 24; + 26; void Swap(ArtifactData* other); friend void swap(ArtifactData& a, ArtifactData& b) { @@ -3570,7 +3880,7 @@ class Tag final : &_Tag_default_instance_); } static constexpr int kIndexInFileMessages = - 25; + 27; void Swap(Tag* other); friend void swap(Tag& a, Tag& b) { @@ -3739,7 +4049,7 @@ class Metadata final : &_Metadata_default_instance_); } static constexpr int kIndexInFileMessages = - 27; + 29; void Swap(Metadata* other); friend void swap(Metadata& a, Metadata& b) { @@ -3860,7 +4170,7 @@ class FilterExpression final : &_FilterExpression_default_instance_); } static constexpr int kIndexInFileMessages = - 28; + 30; void Swap(FilterExpression* other); friend void swap(FilterExpression& a, FilterExpression& b) { @@ -3986,7 +4296,7 @@ class SinglePropertyFilter final : &_SinglePropertyFilter_default_instance_); } static constexpr int kIndexInFileMessages = - 29; + 31; void Swap(SinglePropertyFilter* other); friend void swap(SinglePropertyFilter& a, SinglePropertyFilter& b) { @@ -4181,7 +4491,7 @@ class ArtifactPropertyFilter final : &_ArtifactPropertyFilter_default_instance_); } static constexpr int kIndexInFileMessages = - 30; + 32; void Swap(ArtifactPropertyFilter* other); friend void swap(ArtifactPropertyFilter& a, ArtifactPropertyFilter& b) { @@ -4320,7 +4630,7 @@ class TagPropertyFilter final : &_TagPropertyFilter_default_instance_); } static constexpr int kIndexInFileMessages = - 31; + 33; void Swap(TagPropertyFilter* other); friend void swap(TagPropertyFilter& a, TagPropertyFilter& b) { @@ -4459,7 +4769,7 @@ class PartitionPropertyFilter final : &_PartitionPropertyFilter_default_instance_); } static constexpr int kIndexInFileMessages = - 32; + 34; void Swap(PartitionPropertyFilter* other); friend void swap(PartitionPropertyFilter& a, PartitionPropertyFilter& b) { @@ -4585,7 +4895,7 @@ class KeyValuePair final : &_KeyValuePair_default_instance_); } static constexpr int kIndexInFileMessages = - 33; + 35; void Swap(KeyValuePair* other); friend void swap(KeyValuePair& a, KeyValuePair& b) { @@ -4728,7 +5038,7 @@ class DatasetPropertyFilter final : &_DatasetPropertyFilter_default_instance_); } static constexpr int kIndexInFileMessages = - 34; + 36; void Swap(DatasetPropertyFilter* other); friend void swap(DatasetPropertyFilter& a, DatasetPropertyFilter& b) { @@ -4919,7 +5229,7 @@ class PaginationOptions final : &_PaginationOptions_default_instance_); } static constexpr int kIndexInFileMessages = - 35; + 37; void Swap(PaginationOptions* other); friend void swap(PaginationOptions& a, PaginationOptions& b) { @@ -6106,6 +6416,341 @@ inline void ListDatasetsResponse::set_allocated_next_token(::std::string* next_t // ------------------------------------------------------------------- +// UpdateArtifactRequest + +// .datacatalog.DatasetID dataset = 1; +inline bool UpdateArtifactRequest::has_dataset() const { + return this != internal_default_instance() && dataset_ != nullptr; +} +inline void UpdateArtifactRequest::clear_dataset() { + if (GetArenaNoVirtual() == nullptr && dataset_ != nullptr) { + delete dataset_; + } + dataset_ = nullptr; +} +inline const ::datacatalog::DatasetID& UpdateArtifactRequest::dataset() const { + const ::datacatalog::DatasetID* p = dataset_; + // @@protoc_insertion_point(field_get:datacatalog.UpdateArtifactRequest.dataset) + return p != nullptr ? *p : *reinterpret_cast( + &::datacatalog::_DatasetID_default_instance_); +} +inline ::datacatalog::DatasetID* UpdateArtifactRequest::release_dataset() { + // @@protoc_insertion_point(field_release:datacatalog.UpdateArtifactRequest.dataset) + + ::datacatalog::DatasetID* temp = dataset_; + dataset_ = nullptr; + return temp; +} +inline ::datacatalog::DatasetID* UpdateArtifactRequest::mutable_dataset() { + + if (dataset_ == nullptr) { + auto* p = CreateMaybeMessage<::datacatalog::DatasetID>(GetArenaNoVirtual()); + dataset_ = p; + } + // @@protoc_insertion_point(field_mutable:datacatalog.UpdateArtifactRequest.dataset) + return dataset_; +} +inline void UpdateArtifactRequest::set_allocated_dataset(::datacatalog::DatasetID* dataset) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete dataset_; + } + if (dataset) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + dataset = ::google::protobuf::internal::GetOwnedMessage( + message_arena, dataset, submessage_arena); + } + + } else { + + } + dataset_ = dataset; + // @@protoc_insertion_point(field_set_allocated:datacatalog.UpdateArtifactRequest.dataset) +} + +// string artifact_id = 2; +inline bool UpdateArtifactRequest::has_artifact_id() const { + return query_handle_case() == kArtifactId; +} +inline void UpdateArtifactRequest::set_has_artifact_id() { + _oneof_case_[0] = kArtifactId; +} +inline void UpdateArtifactRequest::clear_artifact_id() { + if (has_artifact_id()) { + query_handle_.artifact_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + clear_has_query_handle(); + } +} +inline const ::std::string& UpdateArtifactRequest::artifact_id() const { + // @@protoc_insertion_point(field_get:datacatalog.UpdateArtifactRequest.artifact_id) + if (has_artifact_id()) { + return query_handle_.artifact_id_.GetNoArena(); + } + return *&::google::protobuf::internal::GetEmptyStringAlreadyInited(); +} +inline void UpdateArtifactRequest::set_artifact_id(const ::std::string& value) { + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactRequest.artifact_id) + if (!has_artifact_id()) { + clear_query_handle(); + set_has_artifact_id(); + query_handle_.artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactRequest.artifact_id) +} +#if LANG_CXX11 +inline void UpdateArtifactRequest::set_artifact_id(::std::string&& value) { + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactRequest.artifact_id) + if (!has_artifact_id()) { + clear_query_handle(); + set_has_artifact_id(); + query_handle_.artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:datacatalog.UpdateArtifactRequest.artifact_id) +} +#endif +inline void UpdateArtifactRequest::set_artifact_id(const char* value) { + GOOGLE_DCHECK(value != nullptr); + if (!has_artifact_id()) { + clear_query_handle(); + set_has_artifact_id(); + query_handle_.artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(value)); + // @@protoc_insertion_point(field_set_char:datacatalog.UpdateArtifactRequest.artifact_id) +} +inline void UpdateArtifactRequest::set_artifact_id(const char* value, size_t size) { + if (!has_artifact_id()) { + clear_query_handle(); + set_has_artifact_id(); + query_handle_.artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string( + reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:datacatalog.UpdateArtifactRequest.artifact_id) +} +inline ::std::string* UpdateArtifactRequest::mutable_artifact_id() { + if (!has_artifact_id()) { + clear_query_handle(); + set_has_artifact_id(); + query_handle_.artifact_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_mutable:datacatalog.UpdateArtifactRequest.artifact_id) + return query_handle_.artifact_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* UpdateArtifactRequest::release_artifact_id() { + // @@protoc_insertion_point(field_release:datacatalog.UpdateArtifactRequest.artifact_id) + if (has_artifact_id()) { + clear_has_query_handle(); + return query_handle_.artifact_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } else { + return nullptr; + } +} +inline void UpdateArtifactRequest::set_allocated_artifact_id(::std::string* artifact_id) { + if (has_query_handle()) { + clear_query_handle(); + } + if (artifact_id != nullptr) { + set_has_artifact_id(); + query_handle_.artifact_id_.UnsafeSetDefault(artifact_id); + } + // @@protoc_insertion_point(field_set_allocated:datacatalog.UpdateArtifactRequest.artifact_id) +} + +// string tag_name = 3; +inline bool UpdateArtifactRequest::has_tag_name() const { + return query_handle_case() == kTagName; +} +inline void UpdateArtifactRequest::set_has_tag_name() { + _oneof_case_[0] = kTagName; +} +inline void UpdateArtifactRequest::clear_tag_name() { + if (has_tag_name()) { + query_handle_.tag_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + clear_has_query_handle(); + } +} +inline const ::std::string& UpdateArtifactRequest::tag_name() const { + // @@protoc_insertion_point(field_get:datacatalog.UpdateArtifactRequest.tag_name) + if (has_tag_name()) { + return query_handle_.tag_name_.GetNoArena(); + } + return *&::google::protobuf::internal::GetEmptyStringAlreadyInited(); +} +inline void UpdateArtifactRequest::set_tag_name(const ::std::string& value) { + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactRequest.tag_name) + if (!has_tag_name()) { + clear_query_handle(); + set_has_tag_name(); + query_handle_.tag_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.tag_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactRequest.tag_name) +} +#if LANG_CXX11 +inline void UpdateArtifactRequest::set_tag_name(::std::string&& value) { + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactRequest.tag_name) + if (!has_tag_name()) { + clear_query_handle(); + set_has_tag_name(); + query_handle_.tag_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.tag_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:datacatalog.UpdateArtifactRequest.tag_name) +} +#endif +inline void UpdateArtifactRequest::set_tag_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + if (!has_tag_name()) { + clear_query_handle(); + set_has_tag_name(); + query_handle_.tag_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.tag_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(value)); + // @@protoc_insertion_point(field_set_char:datacatalog.UpdateArtifactRequest.tag_name) +} +inline void UpdateArtifactRequest::set_tag_name(const char* value, size_t size) { + if (!has_tag_name()) { + clear_query_handle(); + set_has_tag_name(); + query_handle_.tag_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + query_handle_.tag_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string( + reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:datacatalog.UpdateArtifactRequest.tag_name) +} +inline ::std::string* UpdateArtifactRequest::mutable_tag_name() { + if (!has_tag_name()) { + clear_query_handle(); + set_has_tag_name(); + query_handle_.tag_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } + // @@protoc_insertion_point(field_mutable:datacatalog.UpdateArtifactRequest.tag_name) + return query_handle_.tag_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* UpdateArtifactRequest::release_tag_name() { + // @@protoc_insertion_point(field_release:datacatalog.UpdateArtifactRequest.tag_name) + if (has_tag_name()) { + clear_has_query_handle(); + return query_handle_.tag_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + } else { + return nullptr; + } +} +inline void UpdateArtifactRequest::set_allocated_tag_name(::std::string* tag_name) { + if (has_query_handle()) { + clear_query_handle(); + } + if (tag_name != nullptr) { + set_has_tag_name(); + query_handle_.tag_name_.UnsafeSetDefault(tag_name); + } + // @@protoc_insertion_point(field_set_allocated:datacatalog.UpdateArtifactRequest.tag_name) +} + +// repeated .datacatalog.ArtifactData data = 4; +inline int UpdateArtifactRequest::data_size() const { + return data_.size(); +} +inline void UpdateArtifactRequest::clear_data() { + data_.Clear(); +} +inline ::datacatalog::ArtifactData* UpdateArtifactRequest::mutable_data(int index) { + // @@protoc_insertion_point(field_mutable:datacatalog.UpdateArtifactRequest.data) + return data_.Mutable(index); +} +inline ::google::protobuf::RepeatedPtrField< ::datacatalog::ArtifactData >* +UpdateArtifactRequest::mutable_data() { + // @@protoc_insertion_point(field_mutable_list:datacatalog.UpdateArtifactRequest.data) + return &data_; +} +inline const ::datacatalog::ArtifactData& UpdateArtifactRequest::data(int index) const { + // @@protoc_insertion_point(field_get:datacatalog.UpdateArtifactRequest.data) + return data_.Get(index); +} +inline ::datacatalog::ArtifactData* UpdateArtifactRequest::add_data() { + // @@protoc_insertion_point(field_add:datacatalog.UpdateArtifactRequest.data) + return data_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::datacatalog::ArtifactData >& +UpdateArtifactRequest::data() const { + // @@protoc_insertion_point(field_list:datacatalog.UpdateArtifactRequest.data) + return data_; +} + +inline bool UpdateArtifactRequest::has_query_handle() const { + return query_handle_case() != QUERY_HANDLE_NOT_SET; +} +inline void UpdateArtifactRequest::clear_has_query_handle() { + _oneof_case_[0] = QUERY_HANDLE_NOT_SET; +} +inline UpdateArtifactRequest::QueryHandleCase UpdateArtifactRequest::query_handle_case() const { + return UpdateArtifactRequest::QueryHandleCase(_oneof_case_[0]); +} +// ------------------------------------------------------------------- + +// UpdateArtifactResponse + +// string artifact_id = 1; +inline void UpdateArtifactResponse::clear_artifact_id() { + artifact_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& UpdateArtifactResponse::artifact_id() const { + // @@protoc_insertion_point(field_get:datacatalog.UpdateArtifactResponse.artifact_id) + return artifact_id_.GetNoArena(); +} +inline void UpdateArtifactResponse::set_artifact_id(const ::std::string& value) { + + artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:datacatalog.UpdateArtifactResponse.artifact_id) +} +#if LANG_CXX11 +inline void UpdateArtifactResponse::set_artifact_id(::std::string&& value) { + + artifact_id_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:datacatalog.UpdateArtifactResponse.artifact_id) +} +#endif +inline void UpdateArtifactResponse::set_artifact_id(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:datacatalog.UpdateArtifactResponse.artifact_id) +} +inline void UpdateArtifactResponse::set_artifact_id(const char* value, size_t size) { + + artifact_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:datacatalog.UpdateArtifactResponse.artifact_id) +} +inline ::std::string* UpdateArtifactResponse::mutable_artifact_id() { + + // @@protoc_insertion_point(field_mutable:datacatalog.UpdateArtifactResponse.artifact_id) + return artifact_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* UpdateArtifactResponse::release_artifact_id() { + // @@protoc_insertion_point(field_release:datacatalog.UpdateArtifactResponse.artifact_id) + + return artifact_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void UpdateArtifactResponse::set_allocated_artifact_id(::std::string* artifact_id) { + if (artifact_id != nullptr) { + + } else { + + } + artifact_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), artifact_id); + // @@protoc_insertion_point(field_set_allocated:datacatalog.UpdateArtifactResponse.artifact_id) +} + +// ------------------------------------------------------------------- + // ReservationID // .datacatalog.DatasetID dataset_id = 1; @@ -9072,6 +9717,10 @@ inline void PaginationOptions::set_sortorder(::datacatalog::PaginationOptions_So // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/gen/pb-go/flyteidl/admin/execution.pb.go b/gen/pb-go/flyteidl/admin/execution.pb.go index dda11fb83..97f79a51e 100644 --- a/gen/pb-go/flyteidl/admin/execution.pb.go +++ b/gen/pb-go/flyteidl/admin/execution.pb.go @@ -189,7 +189,11 @@ type ExecutionRelaunchRequest struct { // User provided value for the relaunched execution. // If none is provided the system will generate a unique string. // +optional - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + OverwriteCache bool `protobuf:"varint,4,opt,name=overwrite_cache,json=overwriteCache,proto3" json:"overwrite_cache,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -234,6 +238,13 @@ func (m *ExecutionRelaunchRequest) GetName() string { return "" } +func (m *ExecutionRelaunchRequest) GetOverwriteCache() bool { + if m != nil { + return m.OverwriteCache + } + return false +} + // Request to recover the referenced execution. type ExecutionRecoverRequest struct { // Identifier of the workflow execution to recover. @@ -1058,10 +1069,14 @@ type ExecutionSpec struct { // Omitting this field uses the workflow's value as a default. // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. - Interruptible *wrappers.BoolValue `protobuf:"bytes,21,opt,name=interruptible,proto3" json:"interruptible,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Interruptible *wrappers.BoolValue `protobuf:"bytes,21,opt,name=interruptible,proto3" json:"interruptible,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + OverwriteCache bool `protobuf:"varint,22,opt,name=overwrite_cache,json=overwriteCache,proto3" json:"overwrite_cache,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ExecutionSpec) Reset() { *m = ExecutionSpec{} } @@ -1212,6 +1227,13 @@ func (m *ExecutionSpec) GetInterruptible() *wrappers.BoolValue { return nil } +func (m *ExecutionSpec) GetOverwriteCache() bool { + if m != nil { + return m.OverwriteCache + } + return false +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*ExecutionSpec) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -1586,111 +1608,114 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/execution.proto", fileDescriptor_4e2785d91b3809ec) } var fileDescriptor_4e2785d91b3809ec = []byte{ - // 1696 bytes of a gzipped FileDescriptorProto + // 1730 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdd, 0x72, 0xdb, 0xc6, - 0x15, 0x16, 0x29, 0x52, 0x3f, 0x87, 0x26, 0x45, 0xaf, 0x1d, 0x05, 0x96, 0x1d, 0x5b, 0x41, 0xa7, - 0x8d, 0x27, 0x99, 0x92, 0x13, 0xa5, 0x9a, 0x4c, 0xdc, 0x3a, 0x13, 0x8a, 0xa2, 0x43, 0xb5, 0xfa, - 0x71, 0x57, 0x3f, 0x4e, 0xd2, 0xc9, 0xa0, 0x4b, 0x60, 0x49, 0x21, 0x5e, 0x60, 0xe1, 0xc5, 0xc2, - 0xb2, 0xdf, 0xa0, 0xd3, 0x27, 0xe8, 0x23, 0xb4, 0x37, 0xbd, 0xec, 0x45, 0xaf, 0xfb, 0x60, 0x1d, - 0x2c, 0x16, 0x20, 0x00, 0x52, 0x96, 0x3c, 0xd6, 0x1d, 0x76, 0xcf, 0x77, 0xce, 0x9e, 0x3d, 0xff, - 0x0b, 0x78, 0x38, 0x66, 0x6f, 0x25, 0x75, 0x1d, 0xd6, 0x25, 0x8e, 0xe7, 0xfa, 0x5d, 0xfa, 0x86, - 0xda, 0x91, 0x74, 0xb9, 0xdf, 0x09, 0x04, 0x97, 0x1c, 0xb5, 0x52, 0x7a, 0x47, 0xd1, 0x37, 0x3e, - 0x2b, 0xe1, 0x6d, 0x16, 0x85, 0x92, 0x0a, 0x8b, 0x84, 0xa1, 0x3b, 0xf1, 0x3d, 0xea, 0xcb, 0x84, - 0x71, 0xe3, 0x7e, 0x19, 0xc8, 0x3d, 0x2f, 0x95, 0xba, 0xf1, 0x20, 0x23, 0xda, 0x5c, 0xd0, 0x2e, - 0x73, 0x25, 0x15, 0x84, 0x85, 0x9a, 0xfa, 0x49, 0x91, 0x5a, 0x52, 0x69, 0xe3, 0x61, 0x91, 0xec, - 0x3a, 0xd4, 0x97, 0xee, 0xd8, 0xa5, 0x62, 0xbe, 0xf0, 0x90, 0xda, 0x91, 0x70, 0xe5, 0xdb, 0x94, - 0x7b, 0xc2, 0xf9, 0x84, 0xd1, 0xae, 0x5a, 0x8d, 0xa2, 0x71, 0xd7, 0x89, 0x04, 0xc9, 0x49, 0x7f, - 0x54, 0xa6, 0x4b, 0xd7, 0xa3, 0xa1, 0x24, 0x5e, 0x70, 0x99, 0x80, 0x0b, 0x41, 0x82, 0x80, 0x0a, - 0xad, 0xbd, 0xf9, 0xbf, 0x0a, 0xac, 0x0f, 0x52, 0x95, 0xfb, 0x82, 0x12, 0x49, 0x31, 0x7d, 0x15, - 0xd1, 0x50, 0x22, 0x03, 0x96, 0x03, 0xc1, 0x7f, 0xa1, 0xb6, 0x34, 0x2a, 0x9b, 0x95, 0xc7, 0xab, - 0x38, 0x5d, 0xa2, 0x75, 0x58, 0x72, 0xb8, 0x47, 0x5c, 0xdf, 0xa8, 0x2a, 0x82, 0x5e, 0x21, 0x04, - 0x35, 0x9f, 0x78, 0xd4, 0x58, 0x54, 0xbb, 0xea, 0x1b, 0x7d, 0x09, 0xb5, 0x30, 0xa0, 0xb6, 0x51, - 0xdb, 0xac, 0x3c, 0x6e, 0x6c, 0x7d, 0xd2, 0x29, 0x7a, 0xa8, 0x93, 0x9d, 0x7d, 0x1c, 0x50, 0x1b, - 0x2b, 0x28, 0xfa, 0x12, 0x96, 0x5c, 0x3f, 0x88, 0x64, 0x68, 0xd4, 0x15, 0xd3, 0xbd, 0x29, 0x53, - 0x6c, 0xa3, 0xce, 0x7e, 0xe2, 0x80, 0x03, 0x12, 0x60, 0x0d, 0x34, 0x7f, 0x01, 0x23, 0x93, 0x84, - 0x29, 0x23, 0x91, 0x6f, 0x9f, 0xa7, 0xf7, 0x78, 0x02, 0x55, 0xd7, 0x51, 0x57, 0x68, 0x6c, 0x7d, - 0x5e, 0x12, 0xf5, 0x82, 0x8b, 0x97, 0x63, 0xc6, 0x2f, 0x32, 0xe6, 0xbd, 0xcc, 0x3f, 0xb8, 0xea, - 0x3a, 0xf3, 0x6e, 0x64, 0xfe, 0xb3, 0x02, 0x1f, 0xe7, 0x0e, 0xb3, 0xf9, 0x6b, 0x2a, 0x6e, 0xf2, - 0xac, 0x6a, 0xce, 0x7a, 0x4f, 0x61, 0xc5, 0xa3, 0x92, 0x38, 0x44, 0x12, 0xa5, 0x43, 0x63, 0xeb, - 0xd3, 0x4b, 0x2d, 0x78, 0xa0, 0x81, 0x38, 0x63, 0x31, 0x4f, 0x73, 0x9a, 0xa6, 0xce, 0x0d, 0x03, - 0xee, 0x87, 0xf4, 0x43, 0x34, 0x35, 0x7f, 0x84, 0xfb, 0x33, 0x90, 0xef, 0xa9, 0xbc, 0x01, 0x23, - 0x98, 0xff, 0xa9, 0xc0, 0x6a, 0x46, 0xfb, 0x20, 0x73, 0xa6, 0x81, 0x57, 0xbd, 0x7e, 0xe0, 0x3d, - 0x81, 0x65, 0x9b, 0xf1, 0x30, 0x12, 0x54, 0x1b, 0x7b, 0xf3, 0x52, 0xae, 0x7e, 0x82, 0xc3, 0x29, - 0x83, 0xf9, 0x57, 0x68, 0x66, 0xc4, 0x7d, 0x37, 0x94, 0xe8, 0x1b, 0x80, 0xac, 0x16, 0x84, 0x46, - 0x65, 0x73, 0xb1, 0x18, 0xc9, 0x25, 0x79, 0x38, 0x07, 0x46, 0x77, 0xa1, 0x2e, 0xf9, 0x4b, 0x9a, - 0xa6, 0x57, 0xb2, 0x30, 0x29, 0xb4, 0xa6, 0x91, 0xbf, 0xc3, 0xf8, 0x08, 0x7d, 0x0d, 0x4b, 0xaf, - 0x09, 0x8b, 0x68, 0xa8, 0x4d, 0x74, 0x79, 0xa2, 0xec, 0x54, 0x8d, 0xca, 0x70, 0x01, 0x6b, 0x38, - 0x42, 0xb0, 0x18, 0x09, 0x37, 0x11, 0x3f, 0x5c, 0xc0, 0xf1, 0x62, 0x67, 0x09, 0x6a, 0x2a, 0x66, - 0xfa, 0xd0, 0xec, 0x8d, 0xb8, 0x90, 0x69, 0x38, 0xc5, 0xda, 0xd8, 0x24, 0x0a, 0xa9, 0xae, 0x02, - 0xc9, 0x02, 0x3d, 0x80, 0xd5, 0x40, 0xb8, 0xbe, 0xed, 0x06, 0x84, 0x69, 0x3d, 0xa7, 0x1b, 0xe6, - 0x3f, 0x96, 0xa1, 0x5d, 0xb6, 0x15, 0xfa, 0x16, 0x96, 0x79, 0x24, 0x55, 0x62, 0x27, 0xfa, 0x3e, - 0x2c, 0x9b, 0xa3, 0x78, 0x3f, 0xad, 0x74, 0xca, 0x84, 0xb6, 0xa1, 0x4e, 0x85, 0xe0, 0x62, 0xd6, - 0xa5, 0xea, 0xb6, 0xd9, 0x79, 0x83, 0x18, 0x34, 0x5c, 0xc0, 0x09, 0x1a, 0xfd, 0x1a, 0x1a, 0x24, - 0xbe, 0x90, 0x95, 0xdc, 0x02, 0x62, 0x5d, 0xb5, 0x68, 0x50, 0x84, 0xbe, 0xba, 0xd0, 0x33, 0x68, - 0x25, 0xb0, 0x2c, 0xe1, 0x6e, 0xcd, 0x8f, 0x9c, 0x82, 0x75, 0x86, 0x0b, 0xb8, 0x49, 0x0a, 0xe6, - 0xfa, 0x0e, 0x1a, 0x89, 0xc2, 0x96, 0x12, 0xd2, 0xbc, 0x9e, 0x67, 0x20, 0xe1, 0xd9, 0x8d, 0x25, - 0x3c, 0x83, 0x35, 0x9b, 0x7b, 0x41, 0x24, 0xa9, 0x63, 0xe9, 0x42, 0xb8, 0x78, 0x0d, 0x29, 0xb8, - 0x95, 0x72, 0xed, 0x29, 0x26, 0xf4, 0x07, 0xa8, 0x07, 0xe7, 0x24, 0xa4, 0xaa, 0xf6, 0xb6, 0xb6, - 0x7e, 0x73, 0x55, 0x02, 0x75, 0x9e, 0xc7, 0x68, 0x9c, 0x30, 0xc5, 0xf1, 0x1b, 0x4a, 0x22, 0x62, - 0x25, 0x88, 0xd4, 0x95, 0x78, 0xa3, 0x93, 0xb4, 0x93, 0x4e, 0xda, 0x4e, 0x3a, 0x27, 0x69, 0xbf, - 0xc1, 0xab, 0x1a, 0xdd, 0x93, 0x68, 0x1b, 0x56, 0xd2, 0x3e, 0x65, 0x2c, 0x69, 0xcd, 0xcb, 0x8c, - 0xbb, 0x1a, 0x80, 0x33, 0x68, 0x7c, 0xa2, 0xad, 0x8a, 0x94, 0x3a, 0x71, 0xf9, 0xea, 0x13, 0x35, - 0xba, 0xa7, 0x92, 0x2d, 0x0a, 0x9c, 0x94, 0x75, 0xe5, 0x6a, 0x56, 0x8d, 0xee, 0x49, 0xb4, 0x03, - 0x4d, 0x9f, 0xc7, 0x75, 0xc3, 0x26, 0x49, 0xaa, 0xae, 0xaa, 0x54, 0x7d, 0x50, 0x76, 0xfb, 0x61, - 0x0e, 0x84, 0x8b, 0x2c, 0xe8, 0x09, 0x34, 0x2e, 0xb4, 0x35, 0x2d, 0xd7, 0x31, 0x1a, 0x73, 0xbd, - 0x95, 0xab, 0x4f, 0x90, 0xa2, 0xf7, 0x1c, 0xf4, 0x33, 0xdc, 0x0d, 0x25, 0x91, 0xd4, 0xb2, 0xcf, - 0x89, 0x3f, 0xa1, 0x96, 0x43, 0x25, 0x71, 0x59, 0x68, 0xb4, 0x94, 0x90, 0x2f, 0x2e, 0xaf, 0x5b, - 0x31, 0x53, 0x5f, 0xf1, 0xec, 0x26, 0x2c, 0x18, 0x85, 0x33, 0x7b, 0x3b, 0x6b, 0xd0, 0xd4, 0xe1, - 0x28, 0x68, 0x18, 0x31, 0x69, 0x3e, 0x85, 0xd6, 0xf1, 0xdb, 0x50, 0x52, 0x2f, 0x8b, 0xd8, 0x2f, - 0xe0, 0x76, 0x56, 0x7c, 0x2c, 0x3d, 0x22, 0xe9, 0x64, 0x6f, 0xd3, 0x69, 0x12, 0xab, 0x7d, 0xf3, - 0xbf, 0x35, 0xb8, 0x3d, 0xd3, 0x72, 0x50, 0x1f, 0x6a, 0x1e, 0x77, 0x92, 0x12, 0xd1, 0xda, 0xea, - 0x5e, 0xd9, 0xa3, 0x72, 0x3b, 0xdc, 0xa1, 0x58, 0x31, 0xbf, 0xbb, 0xa4, 0xc4, 0xe3, 0x88, 0x4f, - 0x43, 0xe9, 0xfa, 0x13, 0x95, 0x0d, 0x4d, 0x9c, 0x2e, 0xd1, 0x53, 0xb8, 0x15, 0xda, 0xe7, 0xd4, - 0x89, 0x58, 0xe2, 0xfe, 0xda, 0x95, 0xee, 0x6f, 0x64, 0xf8, 0x9e, 0x44, 0x3f, 0xc1, 0x47, 0x01, - 0x11, 0xd4, 0x97, 0x96, 0xcf, 0x1d, 0x6a, 0x65, 0x37, 0xd6, 0x31, 0x5f, 0x4e, 0x9b, 0x43, 0xee, - 0xd0, 0x79, 0x3d, 0xe7, 0x4e, 0x22, 0xa4, 0x40, 0x46, 0x7f, 0x81, 0x3b, 0x82, 0x8e, 0xa9, 0xa0, - 0xbe, 0x9d, 0x97, 0xdc, 0x7e, 0xef, 0x8e, 0x86, 0x32, 0x31, 0x53, 0xe1, 0xdf, 0xc3, 0x5a, 0xa8, - 0x3c, 0x39, 0x2d, 0x59, 0xb7, 0xe7, 0xd7, 0xd5, 0xa2, 0xc3, 0x71, 0x2b, 0x2c, 0xac, 0xcd, 0x49, - 0xae, 0x77, 0xc5, 0xfe, 0x40, 0x00, 0x4b, 0x07, 0xbd, 0xc3, 0xd3, 0xde, 0x7e, 0x7b, 0x01, 0x35, - 0x61, 0xf5, 0xb8, 0x3f, 0x1c, 0xec, 0x9e, 0xee, 0x0f, 0x76, 0xdb, 0x95, 0x98, 0x74, 0xfc, 0xe3, - 0xf1, 0xc9, 0xe0, 0xa0, 0x5d, 0x45, 0xb7, 0x60, 0x05, 0x0f, 0xf6, 0x7b, 0xa7, 0x87, 0xfd, 0x61, - 0x7b, 0x11, 0x21, 0x68, 0xf5, 0x87, 0x7b, 0xfb, 0xbb, 0xd6, 0x8b, 0x23, 0xfc, 0xa7, 0x67, 0xfb, - 0x47, 0x2f, 0xda, 0xb5, 0x98, 0x19, 0x0f, 0xfa, 0x47, 0x67, 0x03, 0x3c, 0xd8, 0x6d, 0xd7, 0xcd, - 0x33, 0x68, 0xe7, 0xd3, 0x48, 0xf5, 0xc9, 0x99, 0xfc, 0xab, 0xbc, 0x77, 0xfe, 0x99, 0xff, 0x5a, - 0xce, 0xdd, 0xe0, 0x38, 0x69, 0xe5, 0x8d, 0x64, 0x0a, 0xb4, 0x02, 0x46, 0xfc, 0x4b, 0xfa, 0x63, - 0x3e, 0x23, 0x13, 0xf4, 0x73, 0x46, 0x7c, 0xb4, 0x9d, 0xcd, 0x9f, 0xd5, 0xeb, 0x94, 0x5d, 0x0d, - 0xfe, 0xc0, 0x59, 0x0d, 0x0d, 0xcb, 0x76, 0xa8, 0xcf, 0x1f, 0x41, 0xca, 0x06, 0x8c, 0x3b, 0x50, - 0xb1, 0x1a, 0x7d, 0x0a, 0x0d, 0xc7, 0x0d, 0xc9, 0x88, 0x51, 0x8b, 0x30, 0xa6, 0x2a, 0xf0, 0x4a, - 0xdc, 0x62, 0xf4, 0x66, 0x8f, 0x31, 0xd4, 0x81, 0x25, 0x46, 0x46, 0x94, 0x85, 0xba, 0xcc, 0xae, - 0xcf, 0x74, 0x62, 0x45, 0xc5, 0x1a, 0x85, 0x9e, 0x42, 0x83, 0xf8, 0x3e, 0x97, 0x5a, 0xb5, 0xa4, - 0xc0, 0xde, 0x9f, 0xe9, 0x8c, 0x53, 0x08, 0xce, 0xe3, 0xd1, 0x1e, 0xb4, 0xd3, 0x87, 0x8d, 0x65, - 0x73, 0x5f, 0xd2, 0x37, 0x52, 0xf5, 0xe1, 0x42, 0xa8, 0x2a, 0xdb, 0x1e, 0x6b, 0x58, 0x3f, 0x41, - 0xe1, 0xb5, 0xb0, 0xb8, 0x81, 0xbe, 0x81, 0x55, 0x12, 0xc9, 0x73, 0x4b, 0x70, 0x46, 0x75, 0x1e, - 0x19, 0x33, 0x7a, 0x44, 0xf2, 0x1c, 0x73, 0x46, 0x95, 0x7b, 0x56, 0x88, 0x5e, 0xa1, 0x03, 0x40, - 0xaf, 0x22, 0xc2, 0x62, 0x25, 0xf8, 0xd8, 0x0a, 0xa9, 0x78, 0xed, 0xda, 0x54, 0xa7, 0xcc, 0xa3, - 0x92, 0x1e, 0x7f, 0x4e, 0x80, 0x47, 0xe3, 0xe3, 0x04, 0x86, 0xdb, 0xaf, 0x4a, 0x3b, 0xe8, 0x33, - 0x58, 0xf3, 0xc8, 0x1b, 0x2b, 0x20, 0x82, 0x30, 0x46, 0x99, 0x1b, 0x7a, 0x06, 0xda, 0xac, 0x3c, - 0xae, 0xe3, 0x96, 0x47, 0xde, 0x3c, 0x9f, 0xee, 0xa2, 0x1f, 0x60, 0x5d, 0x90, 0x0b, 0x2b, 0x37, - 0x15, 0xc4, 0x46, 0x18, 0xbb, 0x13, 0xe3, 0x8e, 0x3a, 0xfb, 0x57, 0x65, 0xfd, 0x31, 0xb9, 0x38, - 0xca, 0xc6, 0x81, 0xbe, 0x82, 0xe2, 0x3b, 0x62, 0x76, 0x13, 0x3d, 0x07, 0x34, 0xfb, 0xa4, 0x35, - 0xee, 0xce, 0x0f, 0x3e, 0x5d, 0xc1, 0x7b, 0x19, 0x10, 0xdf, 0xb6, 0xcb, 0x5b, 0xe8, 0x3b, 0x68, - 0xba, 0xbe, 0xa4, 0x42, 0x44, 0x81, 0x74, 0x47, 0x8c, 0x1a, 0x1f, 0x5d, 0x52, 0x4c, 0x77, 0x38, - 0x67, 0x67, 0xf1, 0x34, 0x89, 0x8b, 0x0c, 0x3b, 0x06, 0xac, 0xe7, 0xc3, 0xd1, 0x8a, 0x9f, 0x47, - 0xc2, 0x75, 0x68, 0xf8, 0xc7, 0xda, 0x4a, 0xad, 0x5d, 0x37, 0x3d, 0xb8, 0x97, 0xa5, 0xc1, 0x09, - 0x15, 0x9e, 0xeb, 0xe7, 0xde, 0x9c, 0x1f, 0x32, 0xf0, 0x67, 0x73, 0x6a, 0x35, 0x37, 0xa7, 0x9a, - 0x0f, 0x60, 0x63, 0xde, 0x71, 0xc9, 0x2b, 0xc8, 0xfc, 0x19, 0x1e, 0xcd, 0x7b, 0xc9, 0xc4, 0x26, - 0xbe, 0x89, 0xd7, 0xcc, 0xdf, 0xaa, 0xb0, 0x79, 0xb9, 0x7c, 0xfd, 0x12, 0xdb, 0x2e, 0x8f, 0xc5, - 0x1f, 0x97, 0x3d, 0x77, 0x2a, 0x58, 0x3a, 0x0f, 0x4f, 0xa7, 0xe1, 0xaf, 0x4a, 0x55, 0xea, 0x9d, - 0x5c, 0x69, 0x8d, 0x7a, 0x02, 0x8d, 0x71, 0xc4, 0xd8, 0x75, 0xc7, 0x4a, 0x0c, 0x31, 0x3a, 0x1b, - 0x27, 0x6f, 0x29, 0xde, 0x54, 0xd9, 0xda, 0x55, 0xcc, 0xea, 0xa8, 0x24, 0x66, 0x43, 0xf3, 0xef, - 0xf9, 0x1f, 0x0d, 0xa7, 0x6a, 0xfa, 0xba, 0x09, 0xa7, 0xff, 0x0e, 0xea, 0x6a, 0xe8, 0x51, 0x46, - 0x68, 0xcd, 0x76, 0xbe, 0xe2, 0xb8, 0x84, 0x13, 0xb0, 0xf9, 0xef, 0x0a, 0xdc, 0x7f, 0xc7, 0x20, - 0x35, 0x95, 0x5a, 0x79, 0x0f, 0xa9, 0xe8, 0xf7, 0xd0, 0xe0, 0xb6, 0x1d, 0x09, 0x91, 0x8c, 0x21, - 0xd5, 0x2b, 0xc7, 0x10, 0x48, 0xe1, 0x3d, 0x59, 0x1c, 0x7e, 0x16, 0xcb, 0xef, 0xa9, 0x7b, 0xb9, - 0x87, 0x7c, 0x6a, 0xbc, 0x24, 0x7c, 0x3e, 0xff, 0x16, 0x5a, 0x45, 0x75, 0xd0, 0x5d, 0x68, 0x0f, - 0x7e, 0x18, 0xf4, 0x4f, 0x4f, 0xf6, 0x8e, 0x0e, 0xad, 0x5e, 0xff, 0x64, 0xef, 0x6c, 0xd0, 0x5e, - 0x40, 0xeb, 0x80, 0x72, 0xbb, 0xb8, 0x3f, 0xdc, 0x3b, 0x8b, 0x1b, 0xfa, 0xce, 0xd7, 0x3f, 0x6d, - 0x4f, 0x5c, 0x79, 0x1e, 0x8d, 0x3a, 0x36, 0xf7, 0xba, 0xea, 0xa2, 0x5c, 0x4c, 0xba, 0xd9, 0x6f, - 0xa9, 0x09, 0xf5, 0xbb, 0xc1, 0xe8, 0xb7, 0x13, 0xde, 0x2d, 0xfe, 0x23, 0x1b, 0x2d, 0xa9, 0x1b, - 0x7d, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x57, 0x3e, 0x8c, 0x95, 0x13, 0x00, 0x00, + 0x15, 0x16, 0x29, 0x52, 0xa2, 0x0e, 0x4d, 0x9a, 0x5e, 0x3b, 0x0a, 0x2c, 0x3b, 0xb6, 0x82, 0x4e, + 0x1b, 0x4f, 0x32, 0x25, 0x27, 0x4a, 0x35, 0x99, 0xb8, 0x75, 0x26, 0x14, 0x45, 0x87, 0x4a, 0xf5, + 0xe3, 0xae, 0x7e, 0x9c, 0xa4, 0x93, 0x41, 0x97, 0xc0, 0x92, 0x42, 0xb3, 0xc0, 0xc2, 0x8b, 0x85, + 0x65, 0xbf, 0x41, 0xa7, 0x4f, 0xd0, 0xbe, 0x41, 0xaf, 0x7a, 0xd9, 0x8b, 0x5e, 0xf7, 0x09, 0xfa, + 0x44, 0x19, 0x2c, 0x16, 0x20, 0x00, 0x52, 0x96, 0x3c, 0xf6, 0x1d, 0xf7, 0x9c, 0xef, 0x1c, 0x9c, + 0x3d, 0xff, 0x4b, 0x78, 0x30, 0x61, 0xaf, 0x25, 0x75, 0x1d, 0xd6, 0x23, 0x8e, 0xe7, 0xfa, 0x3d, + 0xfa, 0x8a, 0xda, 0x91, 0x74, 0xb9, 0xdf, 0x0d, 0x04, 0x97, 0x1c, 0xb5, 0x53, 0x7e, 0x57, 0xf1, + 0x37, 0x3e, 0x29, 0xe1, 0x6d, 0x16, 0x85, 0x92, 0x0a, 0x8b, 0x84, 0xa1, 0x3b, 0xf5, 0x3d, 0xea, + 0xcb, 0x44, 0x70, 0xe3, 0x5e, 0x19, 0xc8, 0x3d, 0x2f, 0xd5, 0xba, 0x71, 0x3f, 0x63, 0xda, 0x5c, + 0xd0, 0x1e, 0x73, 0x25, 0x15, 0x84, 0x85, 0x9a, 0xfb, 0x51, 0x91, 0x5b, 0x32, 0x69, 0xe3, 0x41, + 0x91, 0xed, 0x3a, 0xd4, 0x97, 0xee, 0xc4, 0xa5, 0x62, 0xb1, 0xf2, 0x90, 0xda, 0x91, 0x70, 0xe5, + 0xeb, 0x54, 0x7a, 0xca, 0xf9, 0x94, 0xd1, 0x9e, 0x3a, 0x8d, 0xa3, 0x49, 0xcf, 0x89, 0x04, 0xc9, + 0x69, 0x7f, 0x58, 0xe6, 0x4b, 0xd7, 0xa3, 0xa1, 0x24, 0x5e, 0x70, 0x99, 0x82, 0x0b, 0x41, 0x82, + 0x80, 0x0a, 0x6d, 0xbd, 0xf9, 0xbf, 0x0a, 0xac, 0x0f, 0x53, 0x93, 0x07, 0x82, 0x12, 0x49, 0x31, + 0x7d, 0x11, 0xd1, 0x50, 0x22, 0x03, 0x56, 0x03, 0xc1, 0xff, 0x4a, 0x6d, 0x69, 0x54, 0x36, 0x2b, + 0x8f, 0xd6, 0x70, 0x7a, 0x44, 0xeb, 0xb0, 0xe2, 0x70, 0x8f, 0xb8, 0xbe, 0x51, 0x55, 0x0c, 0x7d, + 0x42, 0x08, 0x6a, 0x3e, 0xf1, 0xa8, 0xb1, 0xac, 0xa8, 0xea, 0x37, 0xfa, 0x1c, 0x6a, 0x61, 0x40, + 0x6d, 0xa3, 0xb6, 0x59, 0x79, 0xd4, 0xdc, 0xfa, 0xa8, 0x5b, 0x8c, 0x50, 0x37, 0xfb, 0xf6, 0x71, + 0x40, 0x6d, 0xac, 0xa0, 0xe8, 0x73, 0x58, 0x71, 0xfd, 0x20, 0x92, 0xa1, 0x51, 0x57, 0x42, 0x77, + 0x67, 0x42, 0xb1, 0x8f, 0xba, 0xfb, 0x49, 0x00, 0x0e, 0x48, 0x80, 0x35, 0xd0, 0xfc, 0x67, 0x05, + 0x8c, 0x4c, 0x15, 0xa6, 0x8c, 0x44, 0xbe, 0x7d, 0x9e, 0x5e, 0xe4, 0x31, 0x54, 0x5d, 0x47, 0xdd, + 0xa1, 0xb9, 0xf5, 0x69, 0x49, 0xd7, 0x73, 0x2e, 0x7e, 0x9e, 0x30, 0x7e, 0x91, 0x09, 0xef, 0x65, + 0x01, 0xc2, 0x55, 0xd7, 0x59, 0x78, 0xa5, 0x4f, 0xe0, 0x26, 0x7f, 0x49, 0xc5, 0x85, 0x70, 0x25, + 0xb5, 0x6c, 0x62, 0x9f, 0x53, 0x75, 0xbb, 0x06, 0x6e, 0x67, 0xe4, 0x41, 0x4c, 0xfd, 0xae, 0xd6, + 0xa8, 0x76, 0x96, 0xcd, 0x7f, 0x55, 0xe0, 0xc3, 0x9c, 0x6d, 0x76, 0x0c, 0x7a, 0x9f, 0xa6, 0x55, + 0x73, 0xa6, 0x3d, 0x81, 0x86, 0x47, 0x25, 0x71, 0x88, 0x24, 0xca, 0xe4, 0xe6, 0xd6, 0xc7, 0x97, + 0x7a, 0xfc, 0x40, 0x03, 0x71, 0x26, 0x62, 0x9e, 0xe6, 0x2c, 0x4d, 0x93, 0x21, 0x0c, 0xb8, 0x1f, + 0xd2, 0x77, 0xb1, 0xd4, 0xfc, 0x01, 0xee, 0xcd, 0x41, 0xbe, 0xa5, 0xf2, 0x3d, 0x38, 0xc1, 0xfc, + 0x4f, 0x05, 0xd6, 0x32, 0xde, 0x3b, 0xb9, 0x33, 0x4d, 0xd4, 0xea, 0xf5, 0x13, 0xf5, 0x31, 0xac, + 0xda, 0x8c, 0x87, 0x91, 0xa0, 0xda, 0xd9, 0x9b, 0x97, 0x4a, 0x0d, 0x12, 0x1c, 0x4e, 0x05, 0xcc, + 0xbf, 0x40, 0x2b, 0x63, 0xee, 0xbb, 0xa1, 0x44, 0x5f, 0x01, 0x64, 0xbd, 0x23, 0x34, 0x2a, 0x9b, + 0xcb, 0xc5, 0xcc, 0x2f, 0xe9, 0xc3, 0x39, 0x30, 0xba, 0x03, 0x75, 0xc9, 0x7f, 0xa6, 0x69, 0x39, + 0x26, 0x07, 0x93, 0x42, 0x7b, 0x56, 0x29, 0x3b, 0x8c, 0x8f, 0xd1, 0x97, 0xb0, 0xf2, 0x92, 0xb0, + 0x88, 0x86, 0xda, 0x45, 0x97, 0x17, 0xd6, 0x4e, 0xd5, 0xa8, 0x8c, 0x96, 0xb0, 0x86, 0x23, 0x04, + 0xcb, 0x91, 0x70, 0x13, 0xf5, 0xa3, 0x25, 0x1c, 0x1f, 0x76, 0x56, 0xa0, 0xa6, 0x72, 0x66, 0x00, + 0xad, 0xfe, 0x98, 0x0b, 0x99, 0xa6, 0x53, 0x6c, 0x8d, 0x4d, 0xa2, 0x90, 0xea, 0xae, 0x91, 0x1c, + 0xd0, 0x7d, 0x58, 0x0b, 0x84, 0xeb, 0xdb, 0x6e, 0x40, 0x98, 0xb6, 0x73, 0x46, 0x30, 0xff, 0xb1, + 0x0a, 0x9d, 0xb2, 0xaf, 0xd0, 0xd7, 0xb0, 0xca, 0x23, 0xa9, 0x1a, 0x41, 0x62, 0xef, 0x83, 0xb2, + 0x3b, 0x8a, 0xf7, 0xd3, 0x46, 0xa7, 0x42, 0x68, 0x1b, 0xea, 0x54, 0x08, 0x2e, 0xe6, 0x43, 0xaa, + 0x6e, 0x9b, 0x7d, 0x6f, 0x18, 0x83, 0x46, 0x4b, 0x38, 0x41, 0xa3, 0x5f, 0x43, 0x93, 0xc4, 0x17, + 0xb2, 0x92, 0x5b, 0x40, 0x6c, 0xab, 0x56, 0x0d, 0x8a, 0x31, 0x50, 0x17, 0x7a, 0x0a, 0xed, 0x04, + 0x96, 0x15, 0xdc, 0x8d, 0xc5, 0x99, 0x53, 0xf0, 0xce, 0x68, 0x09, 0xb7, 0x48, 0xc1, 0x5d, 0xdf, + 0x40, 0x33, 0x31, 0xd8, 0x52, 0x4a, 0x5a, 0xd7, 0x8b, 0x0c, 0x24, 0x32, 0xbb, 0xb1, 0x86, 0xa7, + 0x70, 0xd3, 0xe6, 0x5e, 0x10, 0x49, 0xea, 0x58, 0xba, 0x71, 0x2e, 0x5f, 0x43, 0x0b, 0x6e, 0xa7, + 0x52, 0x7b, 0x4a, 0x08, 0xfd, 0x01, 0xea, 0xc1, 0x39, 0x09, 0x93, 0x6e, 0xd6, 0xde, 0xfa, 0xcd, + 0x55, 0x05, 0xd4, 0x7d, 0x16, 0xa3, 0x71, 0x22, 0x14, 0xe7, 0x6f, 0x28, 0x89, 0x88, 0x8d, 0x20, + 0x52, 0x77, 0xee, 0x8d, 0x6e, 0x32, 0x7e, 0xba, 0xe9, 0xf8, 0xe9, 0x9e, 0xa4, 0xf3, 0x09, 0xaf, + 0x69, 0x74, 0x5f, 0xa2, 0x6d, 0x68, 0xa4, 0x73, 0xcd, 0x58, 0xd1, 0x96, 0x97, 0x05, 0x77, 0x35, + 0x00, 0x67, 0xd0, 0xf8, 0x8b, 0xb6, 0x6a, 0x52, 0xea, 0x8b, 0xab, 0x57, 0x7f, 0x51, 0xa3, 0xfb, + 0xaa, 0xd8, 0xa2, 0xc0, 0x49, 0x45, 0x1b, 0x57, 0x8b, 0x6a, 0x74, 0x5f, 0xa2, 0x1d, 0x68, 0xf9, + 0x3c, 0xee, 0x1b, 0x36, 0x49, 0x4a, 0x75, 0x4d, 0x95, 0xea, 0xfd, 0x72, 0xd8, 0x0f, 0x73, 0x20, + 0x5c, 0x14, 0x41, 0x8f, 0xa1, 0x79, 0xa1, 0xbd, 0x69, 0xb9, 0x8e, 0xd1, 0x5c, 0x18, 0xad, 0x5c, + 0x7f, 0x82, 0x14, 0xbd, 0xe7, 0xa0, 0x9f, 0xe0, 0x4e, 0x28, 0x49, 0x3c, 0x79, 0xce, 0x89, 0x3f, + 0xa5, 0x96, 0x43, 0x25, 0x71, 0x59, 0x68, 0xb4, 0x95, 0x92, 0xcf, 0x2e, 0xef, 0x5b, 0xb1, 0xd0, + 0x40, 0xc9, 0xec, 0x26, 0x22, 0x18, 0x85, 0x73, 0xb4, 0x9d, 0x9b, 0xd0, 0xd2, 0xe9, 0x28, 0x68, + 0x18, 0x31, 0x69, 0x3e, 0x81, 0xf6, 0xf1, 0xeb, 0x50, 0x52, 0x2f, 0xcb, 0xd8, 0xcf, 0xe0, 0x56, + 0xd6, 0x7c, 0x2c, 0xbd, 0x52, 0xe9, 0x62, 0xef, 0xd0, 0x59, 0x11, 0x2b, 0xba, 0xf9, 0xdf, 0x1a, + 0xdc, 0x9a, 0x1b, 0x39, 0x68, 0x00, 0x35, 0x8f, 0x3b, 0x49, 0x8b, 0x68, 0x6f, 0xf5, 0xae, 0x9c, + 0x51, 0x39, 0x0a, 0x77, 0x28, 0x56, 0xc2, 0x6f, 0x6e, 0x29, 0xf1, 0xfa, 0xe2, 0xd3, 0x50, 0xba, + 0xfe, 0x54, 0x55, 0x43, 0x0b, 0xa7, 0x47, 0xf4, 0x04, 0x6e, 0x84, 0xf6, 0x39, 0x75, 0x22, 0x96, + 0x84, 0xbf, 0x76, 0x65, 0xf8, 0x9b, 0x19, 0xbe, 0x2f, 0xd1, 0x8f, 0xf0, 0x41, 0x40, 0x04, 0xf5, + 0xa5, 0xe5, 0x73, 0x87, 0x5a, 0xd9, 0x8d, 0x75, 0xce, 0x97, 0xcb, 0xe6, 0x90, 0x3b, 0x74, 0xd1, + 0xcc, 0xb9, 0x9d, 0x28, 0x29, 0xb0, 0xd1, 0x9f, 0xe1, 0xb6, 0xa0, 0x13, 0x2a, 0xa8, 0x6f, 0xe7, + 0x35, 0x77, 0xde, 0x7a, 0xa2, 0xa1, 0x4c, 0xcd, 0x4c, 0xf9, 0xb7, 0x70, 0x33, 0x54, 0x91, 0x9c, + 0xb5, 0xac, 0x5b, 0x8b, 0xfb, 0x6a, 0x31, 0xe0, 0xb8, 0x1d, 0x16, 0xce, 0xe6, 0x34, 0x37, 0xbb, + 0xe2, 0x78, 0x20, 0x80, 0x95, 0x83, 0xfe, 0xe1, 0x69, 0x7f, 0xbf, 0xb3, 0x84, 0x5a, 0xb0, 0x76, + 0x3c, 0x18, 0x0d, 0x77, 0x4f, 0xf7, 0x87, 0xbb, 0x9d, 0x4a, 0xcc, 0x3a, 0xfe, 0xe1, 0xf8, 0x64, + 0x78, 0xd0, 0xa9, 0xa2, 0x1b, 0xd0, 0xc0, 0xc3, 0xfd, 0xfe, 0xe9, 0xe1, 0x60, 0xd4, 0x59, 0x46, + 0x08, 0xda, 0x83, 0xd1, 0xde, 0xfe, 0xae, 0xf5, 0xfc, 0x08, 0xff, 0xf1, 0xe9, 0xfe, 0xd1, 0xf3, + 0x4e, 0x2d, 0x16, 0xc6, 0xc3, 0xc1, 0xd1, 0xd9, 0x10, 0x0f, 0x77, 0x3b, 0x75, 0xf3, 0x0c, 0x3a, + 0xf9, 0x32, 0x52, 0x73, 0x72, 0xae, 0xfe, 0x2a, 0x6f, 0x5d, 0x7f, 0xe6, 0xff, 0x57, 0x73, 0x37, + 0x38, 0x4e, 0x46, 0x79, 0x33, 0x59, 0x1a, 0xad, 0x80, 0x11, 0xff, 0x92, 0xf9, 0x98, 0xaf, 0xc8, + 0x04, 0xfd, 0x8c, 0x11, 0x1f, 0x6d, 0x67, 0xfb, 0x6a, 0xf5, 0x3a, 0x6d, 0x57, 0x83, 0xdf, 0x71, + 0x57, 0x43, 0xa3, 0xb2, 0x1f, 0xea, 0x8b, 0x57, 0x90, 0xb2, 0x03, 0xe3, 0x09, 0x54, 0xec, 0x46, + 0x1f, 0x43, 0xd3, 0x71, 0x43, 0x32, 0x66, 0xd4, 0x22, 0x8c, 0xa9, 0x0e, 0xdc, 0x88, 0x47, 0x8c, + 0x26, 0xf6, 0x19, 0x43, 0x5d, 0x58, 0x61, 0x64, 0x4c, 0x59, 0xa8, 0xdb, 0xec, 0xfa, 0xdc, 0x24, + 0x56, 0x5c, 0xac, 0x51, 0xe8, 0x09, 0x34, 0x89, 0xef, 0x73, 0xa9, 0x4d, 0x4b, 0x1a, 0xec, 0xbd, + 0xb9, 0xc9, 0x38, 0x83, 0xe0, 0x3c, 0x1e, 0xed, 0x41, 0x27, 0x7d, 0x08, 0x59, 0x36, 0xf7, 0x25, + 0x7d, 0x25, 0xd5, 0x1c, 0x2e, 0xa4, 0xaa, 0xf2, 0xed, 0xb1, 0x86, 0x0d, 0x12, 0x14, 0xbe, 0x19, + 0x16, 0x09, 0xe8, 0x2b, 0x58, 0x23, 0x91, 0x3c, 0xb7, 0x04, 0x67, 0x54, 0xd7, 0x91, 0x31, 0x67, + 0x47, 0x24, 0xcf, 0x31, 0x67, 0x54, 0x85, 0xa7, 0x41, 0xf4, 0x09, 0x1d, 0x00, 0x7a, 0x11, 0x11, + 0x16, 0x1b, 0xc1, 0x27, 0x56, 0x48, 0xc5, 0x4b, 0xd7, 0xa6, 0xba, 0x64, 0x1e, 0x96, 0xec, 0xf8, + 0x53, 0x02, 0x3c, 0x9a, 0x1c, 0x27, 0x30, 0xdc, 0x79, 0x51, 0xa2, 0xc4, 0xcf, 0x06, 0x8f, 0xbc, + 0xb2, 0x02, 0x22, 0x08, 0x63, 0x94, 0xb9, 0xa1, 0x67, 0xa0, 0xcd, 0xca, 0xa3, 0x3a, 0x6e, 0x7b, + 0xe4, 0xd5, 0xb3, 0x19, 0x15, 0x7d, 0x0f, 0xeb, 0x82, 0x5c, 0x58, 0xb9, 0xad, 0x20, 0x76, 0xc2, + 0xc4, 0x9d, 0x1a, 0xb7, 0xd5, 0xb7, 0x7f, 0x55, 0xb6, 0x1f, 0x93, 0x8b, 0xa3, 0x6c, 0x1d, 0x18, + 0x28, 0x28, 0xbe, 0x2d, 0xe6, 0x89, 0xe8, 0x19, 0xa0, 0xf9, 0x27, 0xb0, 0x71, 0x67, 0x71, 0xf2, + 0xe9, 0x0e, 0xde, 0xcf, 0x80, 0xf8, 0x96, 0x5d, 0x26, 0xa1, 0x6f, 0xa0, 0xe5, 0xfa, 0x92, 0x0a, + 0x11, 0x05, 0xd2, 0x1d, 0x33, 0x6a, 0x7c, 0x70, 0x49, 0x33, 0xdd, 0xe1, 0x9c, 0x9d, 0xc5, 0xdb, + 0x24, 0x2e, 0x0a, 0x2c, 0x7a, 0x4d, 0xad, 0x2f, 0x7a, 0x4d, 0xed, 0x18, 0xb0, 0x9e, 0xcf, 0x5b, + 0x2b, 0x66, 0x0b, 0xd7, 0xa1, 0xe1, 0x77, 0xb5, 0x46, 0xad, 0x53, 0x37, 0x3d, 0xb8, 0x9b, 0xd5, + 0xcb, 0x09, 0x15, 0x9e, 0xeb, 0xe7, 0x1e, 0xb3, 0xef, 0xf2, 0x32, 0xc8, 0x16, 0xda, 0x6a, 0x6e, + 0xa1, 0x35, 0xef, 0xc3, 0xc6, 0xa2, 0xcf, 0x25, 0xcf, 0x25, 0xf3, 0x27, 0x78, 0xb8, 0xe8, 0xc9, + 0x13, 0xc7, 0xe2, 0x7d, 0x3c, 0x7b, 0xfe, 0x56, 0x85, 0xcd, 0xcb, 0xf5, 0xeb, 0x27, 0xdb, 0x76, + 0x79, 0x7f, 0xfe, 0xb0, 0x1c, 0xe2, 0x53, 0xc1, 0xd2, 0xc5, 0x79, 0xb6, 0x36, 0x7f, 0x51, 0x6a, + 0x67, 0x6f, 0x94, 0x4a, 0x9b, 0xd9, 0x63, 0x68, 0x4e, 0x22, 0xc6, 0xae, 0xbb, 0x7f, 0x62, 0x88, + 0xd1, 0xd9, 0xde, 0x79, 0x43, 0xc9, 0xa6, 0xc6, 0xd6, 0xae, 0x12, 0x56, 0x9f, 0x4a, 0x92, 0x3b, + 0x34, 0xff, 0x9e, 0xff, 0x07, 0xe3, 0x54, 0xad, 0x69, 0xef, 0x23, 0xe8, 0xbf, 0x83, 0xba, 0xda, + 0x8e, 0x94, 0x13, 0xda, 0xf3, 0x23, 0xb2, 0xb8, 0x57, 0xe1, 0x04, 0x6c, 0xfe, 0xbb, 0x02, 0xf7, + 0xde, 0xb0, 0x71, 0xcd, 0xb4, 0x56, 0xde, 0x42, 0x2b, 0xfa, 0x3d, 0x34, 0xb9, 0x6d, 0x47, 0x42, + 0x24, 0xfb, 0x4a, 0xf5, 0xca, 0x7d, 0x05, 0x52, 0x78, 0x5f, 0x16, 0xb7, 0xa4, 0xe5, 0xf2, 0xc3, + 0xeb, 0x6e, 0xee, 0xc5, 0x9f, 0x3a, 0x2f, 0x49, 0x9f, 0x4f, 0xbf, 0x86, 0x76, 0xd1, 0x1c, 0x74, + 0x07, 0x3a, 0xc3, 0xef, 0x87, 0x83, 0xd3, 0x93, 0xbd, 0xa3, 0x43, 0xab, 0x3f, 0x38, 0xd9, 0x3b, + 0x1b, 0x76, 0x96, 0xd0, 0x3a, 0xa0, 0x1c, 0x15, 0x0f, 0x46, 0x7b, 0x67, 0xf1, 0xe4, 0xdf, 0xf9, + 0xf2, 0xc7, 0xed, 0xa9, 0x2b, 0xcf, 0xa3, 0x71, 0xd7, 0xe6, 0x5e, 0x4f, 0x5d, 0x94, 0x8b, 0x69, + 0x2f, 0xfb, 0xbf, 0x6b, 0x4a, 0xfd, 0x5e, 0x30, 0xfe, 0xed, 0x94, 0xf7, 0x8a, 0x7f, 0xbe, 0x8d, + 0x57, 0xd4, 0x8d, 0xbe, 0xf8, 0x25, 0x00, 0x00, 0xff, 0xff, 0x26, 0xb3, 0xd4, 0x61, 0xee, 0x13, + 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/execution.pb.validate.go b/gen/pb-go/flyteidl/admin/execution.pb.validate.go index 1a14dceb8..4b6bbe524 100644 --- a/gen/pb-go/flyteidl/admin/execution.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/execution.pb.validate.go @@ -153,6 +153,8 @@ func (m *ExecutionRelaunchRequest) Validate() error { // no validation rules for Name + // no validation rules for OverwriteCache + return nil } @@ -1372,6 +1374,8 @@ func (m *ExecutionSpec) Validate() error { } } + // no validation rules for OverwriteCache + switch m.NotificationOverrides.(type) { case *ExecutionSpec_Notifications: diff --git a/gen/pb-go/flyteidl/admin/launch_plan.pb.go b/gen/pb-go/flyteidl/admin/launch_plan.pb.go index 971c7dacd..23b8978c7 100644 --- a/gen/pb-go/flyteidl/admin/launch_plan.pb.go +++ b/gen/pb-go/flyteidl/admin/launch_plan.pb.go @@ -338,10 +338,14 @@ type LaunchPlanSpec struct { // Omitting this field uses the workflow's value as a default. // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. - Interruptible *wrappers.BoolValue `protobuf:"bytes,19,opt,name=interruptible,proto3" json:"interruptible,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Interruptible *wrappers.BoolValue `protobuf:"bytes,19,opt,name=interruptible,proto3" json:"interruptible,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + OverwriteCache bool `protobuf:"varint,20,opt,name=overwrite_cache,json=overwriteCache,proto3" json:"overwrite_cache,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LaunchPlanSpec) Reset() { *m = LaunchPlanSpec{} } @@ -470,6 +474,13 @@ func (m *LaunchPlanSpec) GetInterruptible() *wrappers.BoolValue { return nil } +func (m *LaunchPlanSpec) GetOverwriteCache() bool { + if m != nil { + return m.OverwriteCache + } + return false +} + // Values computed by the flyte platform after launch plan registration. // These include expected_inputs required to be present in a CreateExecutionRequest // to launch the reference workflow as well timestamp values associated with the launch plan. @@ -830,75 +841,76 @@ func init() { func init() { proto.RegisterFile("flyteidl/admin/launch_plan.proto", fileDescriptor_368a863574f5e699) } var fileDescriptor_368a863574f5e699 = []byte{ - // 1109 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xef, 0x6e, 0x1b, 0x45, - 0x10, 0xc7, 0xae, 0xe3, 0x24, 0xe3, 0xc6, 0x71, 0xb7, 0x55, 0x7a, 0xb8, 0xa5, 0x0d, 0x46, 0x88, - 0x02, 0xad, 0x2d, 0x15, 0x2a, 0xd4, 0xd2, 0x4a, 0xd8, 0x69, 0x3f, 0x58, 0xf4, 0x4f, 0xd8, 0x94, - 0x0a, 0xf1, 0xe5, 0xb4, 0xbe, 0x1b, 0xdb, 0x4b, 0xf7, 0x6e, 0xaf, 0xbb, 0x7b, 0x8d, 0x23, 0xde, - 0x81, 0xe7, 0x40, 0xbc, 0x0b, 0x2f, 0xc2, 0x53, 0xa0, 0xdb, 0xdb, 0xf3, 0x9f, 0xbb, 0x46, 0x05, - 0x24, 0x3e, 0x25, 0xb3, 0xf3, 0xfb, 0xcd, 0xce, 0xcc, 0xcd, 0xfe, 0xc6, 0x70, 0x38, 0x15, 0x67, - 0x06, 0x79, 0x28, 0x06, 0x2c, 0x8c, 0x78, 0x3c, 0x10, 0x2c, 0x8d, 0x83, 0xb9, 0x9f, 0x08, 0x16, - 0xf7, 0x13, 0x25, 0x8d, 0x24, 0xed, 0x02, 0xd1, 0xb7, 0x88, 0xee, 0x47, 0x4b, 0x46, 0x20, 0x15, - 0x0e, 0x70, 0x81, 0x41, 0x6a, 0xb8, 0x74, 0xf0, 0xee, 0xf5, 0x4d, 0xb7, 0xe0, 0x06, 0x15, 0x13, - 0xda, 0x79, 0x6f, 0x6c, 0x7a, 0x79, 0x88, 0xb1, 0xe1, 0x53, 0x8e, 0xca, 0xf9, 0x4b, 0xc1, 0x79, - 0x6c, 0x50, 0x4d, 0x59, 0x80, 0xef, 0x0e, 0xae, 0x31, 0x48, 0x15, 0x37, 0x67, 0x15, 0x72, 0x5e, - 0x8b, 0x0e, 0xe6, 0x18, 0xa6, 0xa2, 0x20, 0x5f, 0x2b, 0xb9, 0x03, 0x19, 0x45, 0xcb, 0xb4, 0x6f, - 0xce, 0xa4, 0x9c, 0x09, 0x1c, 0x58, 0x6b, 0x92, 0x4e, 0x07, 0x86, 0x47, 0xa8, 0x0d, 0x8b, 0x92, - 0x22, 0xf3, 0x32, 0xe0, 0x54, 0xb1, 0x24, 0x41, 0xe5, 0x2a, 0xeb, 0x2d, 0xe0, 0xea, 0x53, 0xdb, - 0xbb, 0x63, 0xc1, 0xe2, 0x23, 0x85, 0xcc, 0x20, 0xc5, 0x37, 0x29, 0x6a, 0x43, 0x3e, 0x87, 0x3a, - 0x0f, 0xbd, 0xda, 0x61, 0xed, 0x56, 0xeb, 0xee, 0x87, 0xfd, 0x65, 0x3b, 0xb3, 0x12, 0xfa, 0xe3, - 0x65, 0x07, 0x68, 0x9d, 0x87, 0xe4, 0x2e, 0x34, 0x74, 0x82, 0x81, 0x57, 0xb7, 0xe0, 0x1b, 0xfd, - 0xcd, 0xde, 0xf7, 0x57, 0x37, 0x9c, 0x24, 0x18, 0x50, 0x8b, 0xed, 0x75, 0xc1, 0xab, 0xde, 0xac, - 0x13, 0x19, 0x6b, 0xec, 0xfd, 0x5e, 0x03, 0x58, 0x39, 0xff, 0xe7, 0x4c, 0xc8, 0xb7, 0xb0, 0x1d, - 0x08, 0xa9, 0x53, 0x85, 0xde, 0x05, 0x4b, 0xfb, 0xf8, 0x7c, 0xda, 0x51, 0x0e, 0xa4, 0x05, 0xa3, - 0x87, 0xd0, 0x5e, 0x79, 0x9f, 0x72, 0x6d, 0xc8, 0x23, 0xb8, 0xb8, 0x36, 0x8e, 0xda, 0xab, 0x1d, - 0x5e, 0xb8, 0xd5, 0xba, 0xdb, 0x3d, 0x3f, 0x26, 0x6d, 0x89, 0xe5, 0xff, 0x9a, 0x5c, 0x81, 0x2d, - 0x23, 0x5f, 0x63, 0x6c, 0x4b, 0xd8, 0xa5, 0xb9, 0xd1, 0x7b, 0x0b, 0x8d, 0x61, 0x6a, 0xe6, 0xe4, - 0x36, 0x10, 0xa6, 0x75, 0x1a, 0xb1, 0x89, 0x40, 0x9f, 0xb3, 0xc8, 0x57, 0x52, 0xa0, 0x6d, 0xcd, - 0x2e, 0xed, 0x2c, 0x3d, 0x63, 0x16, 0x51, 0x29, 0x90, 0x3c, 0x84, 0xee, 0xeb, 0x74, 0x82, 0x2a, - 0x46, 0x83, 0xda, 0xd7, 0xa8, 0xde, 0xf2, 0x00, 0x7d, 0x16, 0x04, 0x32, 0x8d, 0x8d, 0xbb, 0xc0, - 0x5b, 0x21, 0x4e, 0x72, 0xc0, 0x30, 0xf7, 0x3f, 0xa8, 0x7b, 0xb5, 0xde, 0x5f, 0xcd, 0xf5, 0xfa, - 0xb2, 0xa6, 0x91, 0x07, 0xd0, 0x3a, 0x95, 0xea, 0xf5, 0x54, 0xc8, 0x53, 0xff, 0x9f, 0x7c, 0x16, - 0x28, 0xd0, 0xe3, 0x90, 0x7c, 0x0f, 0xfb, 0xd9, 0xb9, 0x39, 0xf3, 0x23, 0x34, 0x2c, 0x64, 0x86, - 0xb9, 0x2f, 0xd5, 0x3b, 0xbf, 0x3d, 0xcf, 0x1c, 0x92, 0xb6, 0x73, 0x6a, 0x61, 0x93, 0x11, 0xb4, - 0x43, 0x9c, 0xb2, 0x54, 0x18, 0x9f, 0xc7, 0x49, 0x6a, 0xb4, 0xfb, 0x7c, 0xd7, 0x4a, 0xb9, 0x1c, - 0x33, 0xc5, 0x22, 0x34, 0xa8, 0x9e, 0xb1, 0x84, 0xee, 0x39, 0xca, 0xd8, 0x32, 0xc8, 0x43, 0xb8, - 0x38, 0xe5, 0x0b, 0x0c, 0x8b, 0x08, 0x8d, 0x77, 0x56, 0xf3, 0x34, 0x97, 0x83, 0x8c, 0xdf, 0xb2, - 0x70, 0xc7, 0x3e, 0x80, 0x86, 0xed, 0xff, 0x56, 0xd6, 0xc9, 0x51, 0xdd, 0xab, 0x51, 0x6b, 0x93, - 0x3e, 0x34, 0x05, 0x9b, 0xa0, 0xd0, 0x5e, 0xd3, 0xc6, 0x3b, 0xa8, 0x56, 0x97, 0x79, 0xa9, 0x43, - 0x91, 0x47, 0xd0, 0x62, 0x71, 0x2c, 0x0d, 0xcb, 0x14, 0x49, 0x7b, 0xdb, 0xe5, 0x32, 0x72, 0xd2, - 0x70, 0x05, 0xa1, 0xeb, 0x78, 0x72, 0x1b, 0x1a, 0x2c, 0x35, 0x73, 0x6f, 0xc7, 0xf2, 0xae, 0x54, - 0x78, 0xa9, 0x99, 0xe7, 0xc9, 0x65, 0x28, 0x72, 0x1f, 0x76, 0xb3, 0xbf, 0xf9, 0xe4, 0xec, 0x5a, - 0x8a, 0xf7, 0x2e, 0x4a, 0x36, 0x41, 0x96, 0xb6, 0xc3, 0x9c, 0x45, 0xc6, 0xd0, 0x29, 0xc4, 0xcb, - 0x0f, 0x64, 0x6c, 0x70, 0x61, 0x3c, 0x28, 0xbf, 0x34, 0xdb, 0xb1, 0x13, 0x07, 0x3b, 0xca, 0x51, - 0x74, 0x5f, 0x6f, 0x1e, 0x90, 0x67, 0x40, 0xde, 0xa4, 0x4c, 0x64, 0x91, 0xe4, 0xb4, 0x18, 0x4d, - 0xaf, 0x63, 0x83, 0xdd, 0x2c, 0x05, 0xfb, 0x21, 0x07, 0xbe, 0x98, 0xba, 0x01, 0xa5, 0x9d, 0x37, - 0xa5, 0x13, 0xf2, 0x13, 0x1c, 0x28, 0x76, 0xea, 0xcb, 0xd4, 0x24, 0xa9, 0xf1, 0xb3, 0xf1, 0xc8, - 0x12, 0x9c, 0xf2, 0x99, 0x77, 0xc9, 0x86, 0xfc, 0xa4, 0x5c, 0x21, 0x65, 0xa7, 0x2f, 0x2c, 0xf8, - 0x31, 0x33, 0xec, 0xc8, 0x42, 0xe9, 0x65, 0x55, 0x3d, 0x24, 0x9f, 0xc1, 0x7e, 0xc4, 0x16, 0x7e, - 0xc2, 0x14, 0x13, 0x02, 0x05, 0xd7, 0x91, 0x47, 0x0e, 0x6b, 0xb7, 0xb6, 0x68, 0x3b, 0x62, 0x8b, - 0xe3, 0xd5, 0x29, 0xf9, 0x0e, 0xf6, 0xac, 0xf0, 0xab, 0x34, 0x31, 0x7c, 0x22, 0xd0, 0xbb, 0x6c, - 0x6f, 0xee, 0xf6, 0x73, 0x09, 0xee, 0x17, 0x12, 0xdc, 0x1f, 0x49, 0x29, 0x5e, 0x31, 0x91, 0x22, - 0xdd, 0x24, 0xf4, 0xfe, 0xac, 0xc3, 0xa5, 0x8a, 0xd4, 0x90, 0x7b, 0xb0, 0xa5, 0x0d, 0x33, 0xf9, - 0x2b, 0x6f, 0xaf, 0x37, 0xa7, 0xa2, 0x69, 0x19, 0x8c, 0xe6, 0x68, 0xf2, 0x18, 0xf6, 0x71, 0x91, - 0x60, 0x60, 0x56, 0xc3, 0x5d, 0x7f, 0xff, 0xf3, 0x68, 0x17, 0x1c, 0x37, 0xe1, 0x4f, 0xa0, 0xb3, - 0x8c, 0x92, 0x37, 0xb7, 0x78, 0x65, 0xdd, 0x52, 0x98, 0x57, 0x4c, 0xf1, 0x4c, 0x7b, 0xb2, 0x28, - 0xcb, 0x9b, 0xf3, 0x6e, 0x6a, 0x72, 0x1f, 0x20, 0xb0, 0x12, 0x1f, 0xfa, 0xcc, 0xb8, 0x47, 0x56, - 0x6d, 0xcc, 0xcb, 0x62, 0x79, 0xd1, 0x5d, 0x87, 0x1e, 0x9a, 0x8c, 0x9a, 0x26, 0x61, 0x41, 0xdd, - 0x7a, 0x3f, 0xd5, 0xa1, 0x87, 0xa6, 0xf7, 0x5b, 0x0d, 0x48, 0x55, 0x47, 0xc8, 0xd7, 0xb0, 0x53, - 0xec, 0x58, 0xa7, 0x5e, 0x95, 0xf9, 0x3f, 0x71, 0x7e, 0xba, 0x44, 0x92, 0x11, 0xec, 0xc5, 0x32, - 0x93, 0xb4, 0xc0, 0xbd, 0xd2, 0xba, 0xd5, 0xf5, 0xeb, 0x65, 0xea, 0xf3, 0x35, 0x10, 0xdd, 0xa4, - 0xf4, 0x7e, 0x5d, 0xdf, 0xb6, 0x3f, 0xda, 0x3c, 0xff, 0xc3, 0xb6, 0x5d, 0x0e, 0x44, 0xfd, 0xdf, - 0x0c, 0xc4, 0xe6, 0xc2, 0x2d, 0x2e, 0x77, 0x0b, 0xf7, 0x18, 0xae, 0x0e, 0x03, 0xc3, 0xdf, 0xe2, - 0xda, 0x56, 0x72, 0x89, 0xdd, 0x5b, 0x4b, 0xec, 0xd3, 0x4a, 0xb1, 0x2c, 0xc2, 0xf0, 0x89, 0x95, - 0xe5, 0xcd, 0x24, 0x7b, 0x7f, 0xd4, 0xe0, 0x5a, 0x39, 0x64, 0xb6, 0x1e, 0x8b, 0xb0, 0x1e, 0x6c, - 0x27, 0x4a, 0xfe, 0x82, 0x81, 0x71, 0xdb, 0xab, 0x30, 0xc9, 0x01, 0x34, 0x43, 0x19, 0x31, 0x5e, - 0x6c, 0x40, 0x67, 0x65, 0x8b, 0x51, 0xf0, 0x88, 0x1b, 0x3b, 0x7f, 0x7b, 0x34, 0x37, 0x56, 0xeb, - 0xb2, 0xb1, 0xb6, 0x2e, 0xc9, 0x1d, 0xd8, 0xd6, 0x52, 0x19, 0x7f, 0x72, 0xe6, 0x26, 0xa6, 0x22, - 0x8a, 0x27, 0x52, 0x19, 0xda, 0xcc, 0x40, 0xa3, 0xb3, 0x2f, 0xbe, 0x84, 0xfd, 0x52, 0xd3, 0xc8, - 0x45, 0xd8, 0x19, 0x3f, 0x1f, 0x1e, 0xbd, 0x1c, 0xbf, 0x7a, 0xd2, 0xf9, 0x80, 0x00, 0x34, 0xdd, - 0xff, 0xb5, 0xd1, 0x37, 0x3f, 0xdf, 0x9b, 0x71, 0x33, 0x4f, 0x27, 0xfd, 0x40, 0x46, 0x03, 0x1b, - 0x56, 0xaa, 0xd9, 0x60, 0xf9, 0x33, 0x6d, 0x86, 0xf1, 0x20, 0x99, 0xdc, 0x99, 0xc9, 0xc1, 0xe6, - 0x2f, 0xb7, 0x49, 0xd3, 0x4e, 0xeb, 0x57, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xba, 0x3d, 0x1b, - 0x3a, 0xbd, 0x0a, 0x00, 0x00, + // 1132 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x6d, 0x8f, 0xdb, 0x44, + 0x10, 0x26, 0xe9, 0xbd, 0xce, 0xf5, 0x72, 0xd7, 0x6d, 0x75, 0x35, 0x69, 0x69, 0x8f, 0x20, 0xc4, + 0x01, 0x6d, 0x22, 0x15, 0x2a, 0xd4, 0xd2, 0x4a, 0xe4, 0xd2, 0x7e, 0x88, 0xe8, 0xcb, 0xb1, 0x57, + 0x2a, 0xc4, 0x17, 0x6b, 0x63, 0x4f, 0x92, 0xa5, 0x6b, 0xaf, 0xbb, 0xbb, 0xbe, 0xe4, 0xc4, 0x7f, + 0xe0, 0x0b, 0x7f, 0x02, 0xf1, 0x5f, 0xf8, 0x4f, 0xc8, 0xeb, 0xb5, 0x93, 0xd8, 0x3d, 0x15, 0x90, + 0xf8, 0x94, 0xcc, 0xce, 0xf3, 0xcc, 0xce, 0xcc, 0xce, 0x8b, 0xe1, 0x70, 0x2c, 0xce, 0x0d, 0xf2, + 0x50, 0xf4, 0x58, 0x18, 0xf1, 0xb8, 0x27, 0x58, 0x1a, 0x07, 0x53, 0x3f, 0x11, 0x2c, 0xee, 0x26, + 0x4a, 0x1a, 0x49, 0x5a, 0x05, 0xa2, 0x6b, 0x11, 0xed, 0x8f, 0x4a, 0x46, 0x20, 0x15, 0xf6, 0x70, + 0x8e, 0x41, 0x6a, 0xb8, 0x74, 0xf0, 0xf6, 0xcd, 0x55, 0xb5, 0xe0, 0x06, 0x15, 0x13, 0xda, 0x69, + 0x6f, 0xad, 0x6a, 0x79, 0x88, 0xb1, 0xe1, 0x63, 0x8e, 0xca, 0xe9, 0x2b, 0xc6, 0x79, 0x6c, 0x50, + 0x8d, 0x59, 0x80, 0xef, 0x36, 0xae, 0x31, 0x48, 0x15, 0x37, 0xe7, 0x35, 0x72, 0x1e, 0x8b, 0x0e, + 0xa6, 0x18, 0xa6, 0xa2, 0x20, 0xdf, 0xa8, 0xa8, 0x03, 0x19, 0x45, 0xa5, 0xdb, 0xb7, 0x27, 0x52, + 0x4e, 0x04, 0xf6, 0xac, 0x34, 0x4a, 0xc7, 0x3d, 0xc3, 0x23, 0xd4, 0x86, 0x45, 0x49, 0xe1, 0x79, + 0x15, 0x30, 0x53, 0x2c, 0x49, 0x50, 0xb9, 0xc8, 0x3a, 0x73, 0xb8, 0xfe, 0xcc, 0xe6, 0xee, 0x44, + 0xb0, 0x78, 0xa0, 0x90, 0x19, 0xa4, 0xf8, 0x36, 0x45, 0x6d, 0xc8, 0xe7, 0xd0, 0xe4, 0xa1, 0xd7, + 0x38, 0x6c, 0x1c, 0xed, 0xdc, 0xfb, 0xb0, 0x5b, 0xa6, 0x33, 0x0b, 0xa1, 0x3b, 0x2c, 0x33, 0x40, + 0x9b, 0x3c, 0x24, 0xf7, 0x60, 0x4d, 0x27, 0x18, 0x78, 0x4d, 0x0b, 0xbe, 0xd5, 0x5d, 0xcd, 0x7d, + 0x77, 0x71, 0xc3, 0x69, 0x82, 0x01, 0xb5, 0xd8, 0x4e, 0x1b, 0xbc, 0xfa, 0xcd, 0x3a, 0x91, 0xb1, + 0xc6, 0xce, 0x1f, 0x0d, 0x80, 0x85, 0xf2, 0x7f, 0xf6, 0x84, 0x7c, 0x0b, 0x9b, 0x81, 0x90, 0x3a, + 0x55, 0xe8, 0x5d, 0xb2, 0xb4, 0x8f, 0x2f, 0xa6, 0x0d, 0x72, 0x20, 0x2d, 0x18, 0x1d, 0x84, 0xd6, + 0x42, 0xfb, 0x8c, 0x6b, 0x43, 0x1e, 0xc3, 0xe5, 0xa5, 0x72, 0xd4, 0x5e, 0xe3, 0xf0, 0xd2, 0xd1, + 0xce, 0xbd, 0xf6, 0xc5, 0x36, 0xe9, 0x8e, 0x28, 0xff, 0x6b, 0x72, 0x0d, 0xd6, 0x8d, 0x7c, 0x83, + 0xb1, 0x0d, 0x61, 0x9b, 0xe6, 0x42, 0xe7, 0x0c, 0xd6, 0xfa, 0xa9, 0x99, 0x92, 0x3b, 0x40, 0x98, + 0xd6, 0x69, 0xc4, 0x46, 0x02, 0x7d, 0xce, 0x22, 0x5f, 0x49, 0x81, 0x36, 0x35, 0xdb, 0x74, 0xbf, + 0xd4, 0x0c, 0x59, 0x44, 0xa5, 0x40, 0xf2, 0x08, 0xda, 0x6f, 0xd2, 0x11, 0xaa, 0x18, 0x0d, 0x6a, + 0x5f, 0xa3, 0x3a, 0xe3, 0x01, 0xfa, 0x2c, 0x08, 0x64, 0x1a, 0x1b, 0x77, 0x81, 0xb7, 0x40, 0x9c, + 0xe6, 0x80, 0x7e, 0xae, 0x7f, 0xd8, 0xf4, 0x1a, 0x9d, 0xdf, 0x37, 0x97, 0xe3, 0xcb, 0x92, 0x46, + 0x1e, 0xc2, 0xce, 0x4c, 0xaa, 0x37, 0x63, 0x21, 0x67, 0xfe, 0x3f, 0x79, 0x16, 0x28, 0xd0, 0xc3, + 0x90, 0x7c, 0x0f, 0x7b, 0xd9, 0xb9, 0x39, 0xf7, 0x23, 0x34, 0x2c, 0x64, 0x86, 0xb9, 0x97, 0xea, + 0x5c, 0x9c, 0x9e, 0xe7, 0x0e, 0x49, 0x5b, 0x39, 0xb5, 0x90, 0xc9, 0x31, 0xb4, 0x42, 0x1c, 0xb3, + 0x54, 0x18, 0x9f, 0xc7, 0x49, 0x6a, 0xb4, 0x7b, 0xbe, 0x1b, 0x15, 0x5f, 0x4e, 0x98, 0x62, 0x11, + 0x1a, 0x54, 0xcf, 0x59, 0x42, 0x77, 0x1d, 0x65, 0x68, 0x19, 0xe4, 0x11, 0x5c, 0x1e, 0xf3, 0x39, + 0x86, 0x85, 0x85, 0xb5, 0x77, 0x46, 0xf3, 0x2c, 0x1f, 0x07, 0x19, 0x7f, 0xc7, 0xc2, 0x1d, 0xfb, + 0x00, 0xd6, 0x6c, 0xfe, 0xd7, 0xb3, 0x4c, 0x1e, 0x37, 0xbd, 0x06, 0xb5, 0x32, 0xe9, 0xc2, 0x86, + 0x60, 0x23, 0x14, 0xda, 0xdb, 0xb0, 0xf6, 0x0e, 0xea, 0xd1, 0x65, 0x5a, 0xea, 0x50, 0xe4, 0x31, + 0xec, 0xb0, 0x38, 0x96, 0x86, 0x65, 0x13, 0x49, 0x7b, 0x9b, 0xd5, 0x30, 0x72, 0x52, 0x7f, 0x01, + 0xa1, 0xcb, 0x78, 0x72, 0x07, 0xd6, 0x58, 0x6a, 0xa6, 0xde, 0x96, 0xe5, 0x5d, 0xab, 0xf1, 0x52, + 0x33, 0xcd, 0x9d, 0xcb, 0x50, 0xe4, 0x01, 0x6c, 0x67, 0xbf, 0x79, 0xe5, 0x6c, 0x5b, 0x8a, 0xf7, + 0x2e, 0x4a, 0x56, 0x41, 0x96, 0xb6, 0xc5, 0x9c, 0x44, 0x86, 0xb0, 0x5f, 0x0c, 0x2f, 0x3f, 0x90, + 0xb1, 0xc1, 0xb9, 0xf1, 0xa0, 0xda, 0x69, 0x36, 0x63, 0xa7, 0x0e, 0x36, 0xc8, 0x51, 0x74, 0x4f, + 0xaf, 0x1e, 0x90, 0xe7, 0x40, 0xde, 0xa6, 0x4c, 0x64, 0x96, 0xe4, 0xb8, 0x28, 0x4d, 0x6f, 0xdf, + 0x1a, 0xbb, 0x5d, 0x31, 0xf6, 0x43, 0x0e, 0x7c, 0x39, 0x76, 0x05, 0x4a, 0xf7, 0xdf, 0x56, 0x4e, + 0xc8, 0x4f, 0x70, 0xa0, 0xd8, 0xcc, 0x97, 0xa9, 0x49, 0x52, 0xe3, 0x67, 0xe5, 0x91, 0x39, 0x38, + 0xe6, 0x13, 0xef, 0x8a, 0x35, 0xf9, 0x49, 0x35, 0x42, 0xca, 0x66, 0x2f, 0x2d, 0xf8, 0x09, 0x33, + 0x6c, 0x60, 0xa1, 0xf4, 0xaa, 0xaa, 0x1f, 0x92, 0xcf, 0x60, 0x2f, 0x62, 0x73, 0x3f, 0x61, 0x8a, + 0x09, 0x81, 0x82, 0xeb, 0xc8, 0x23, 0x87, 0x8d, 0xa3, 0x75, 0xda, 0x8a, 0xd8, 0xfc, 0x64, 0x71, + 0x4a, 0xbe, 0x83, 0x5d, 0x3b, 0xf8, 0x55, 0x9a, 0x18, 0x3e, 0x12, 0xe8, 0x5d, 0xb5, 0x37, 0xb7, + 0xbb, 0xf9, 0x08, 0xee, 0x16, 0x23, 0xb8, 0x7b, 0x2c, 0xa5, 0x78, 0xcd, 0x44, 0x8a, 0x74, 0x95, + 0x90, 0x5d, 0x25, 0xcf, 0x50, 0xcd, 0x14, 0x37, 0xe8, 0x07, 0x2c, 0x98, 0xa2, 0x77, 0xed, 0xb0, + 0x71, 0xb4, 0x45, 0x5b, 0xe5, 0xf1, 0x20, 0x3b, 0xed, 0xfc, 0xd5, 0x84, 0x2b, 0xb5, 0x99, 0x44, + 0xee, 0xc3, 0xba, 0x36, 0xcc, 0xe4, 0xe3, 0xa0, 0xb5, 0x9c, 0xc5, 0xda, 0xf0, 0xcb, 0x60, 0x34, + 0x47, 0x93, 0x27, 0xb0, 0x87, 0xf3, 0x04, 0x03, 0xb3, 0xe8, 0x82, 0xe6, 0xfb, 0xfb, 0xa8, 0x55, + 0x70, 0x5c, 0x2b, 0x3c, 0x85, 0xfd, 0xd2, 0x4a, 0xfe, 0x0a, 0x45, 0x3b, 0xb6, 0x2b, 0x66, 0x5e, + 0x33, 0xc5, 0xb3, 0x21, 0x95, 0x59, 0x29, 0x6f, 0xce, 0xd3, 0xae, 0xc9, 0x03, 0x80, 0xc0, 0xee, + 0x82, 0xd0, 0x67, 0xc6, 0x75, 0x63, 0x3d, 0x83, 0xaf, 0x8a, 0x2d, 0x47, 0xb7, 0x1d, 0xba, 0x6f, + 0x32, 0x6a, 0x9a, 0x84, 0x05, 0x75, 0xfd, 0xfd, 0x54, 0x87, 0xee, 0x9b, 0xce, 0x6f, 0x0d, 0x20, + 0xf5, 0x81, 0x43, 0xbe, 0x86, 0xad, 0x62, 0x19, 0xbb, 0x31, 0x57, 0x6b, 0x94, 0x53, 0xa7, 0xa7, + 0x25, 0x92, 0x1c, 0xc3, 0x6e, 0x2c, 0xb3, 0xd9, 0x17, 0xb8, 0x76, 0x6e, 0xda, 0x05, 0x70, 0xb3, + 0x4a, 0x7d, 0xb1, 0x04, 0xa2, 0xab, 0x94, 0xce, 0xaf, 0xcb, 0x6b, 0xf9, 0x47, 0xeb, 0xe7, 0x7f, + 0x58, 0xcb, 0x65, 0x41, 0x34, 0xff, 0x4d, 0x41, 0xac, 0x6e, 0xe6, 0xe2, 0x72, 0xb7, 0x99, 0x4f, + 0xe0, 0x7a, 0x3f, 0x30, 0xfc, 0x0c, 0x97, 0xd6, 0x97, 0x73, 0xec, 0xfe, 0x92, 0x63, 0x9f, 0xd6, + 0x82, 0x65, 0x11, 0x86, 0x4f, 0xed, 0xfc, 0x5e, 0x75, 0xb2, 0xf3, 0x67, 0x03, 0x6e, 0x54, 0x4d, + 0x66, 0x7b, 0xb4, 0x30, 0xeb, 0xc1, 0x66, 0xa2, 0xe4, 0x2f, 0x18, 0x18, 0xb7, 0xe6, 0x0a, 0x91, + 0x1c, 0xc0, 0x46, 0x28, 0x23, 0xc6, 0x8b, 0x55, 0xe9, 0xa4, 0x6c, 0x83, 0x0a, 0x1e, 0x71, 0x63, + 0xeb, 0x6f, 0x97, 0xe6, 0xc2, 0x62, 0xaf, 0xae, 0x2d, 0xed, 0x55, 0x72, 0x17, 0x36, 0xb5, 0x54, + 0xc6, 0x1f, 0x9d, 0xbb, 0x8a, 0xa9, 0x4d, 0xcf, 0x53, 0xa9, 0x0c, 0xdd, 0xc8, 0x40, 0xc7, 0xe7, + 0x5f, 0x7c, 0x09, 0x7b, 0x95, 0xa4, 0x91, 0xcb, 0xb0, 0x35, 0x7c, 0xd1, 0x1f, 0xbc, 0x1a, 0xbe, + 0x7e, 0xba, 0xff, 0x01, 0x01, 0xd8, 0x70, 0xff, 0x1b, 0xc7, 0xdf, 0xfc, 0x7c, 0x7f, 0xc2, 0xcd, + 0x34, 0x1d, 0x75, 0x03, 0x19, 0xf5, 0xac, 0x59, 0xa9, 0x26, 0xbd, 0xf2, 0x7b, 0x6e, 0x82, 0x71, + 0x2f, 0x19, 0xdd, 0x9d, 0xc8, 0xde, 0xea, 0x27, 0xde, 0x68, 0xc3, 0x56, 0xeb, 0x57, 0x7f, 0x07, + 0x00, 0x00, 0xff, 0xff, 0xdc, 0x78, 0xb9, 0x05, 0xe6, 0x0a, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go b/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go index 4d8c9733f..06c617802 100644 --- a/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/launch_plan.pb.validate.go @@ -566,6 +566,8 @@ func (m *LaunchPlanSpec) Validate() error { } } + // no validation rules for OverwriteCache + return nil } diff --git a/gen/pb-go/flyteidl/admin/matchable_resource.pb.go b/gen/pb-go/flyteidl/admin/matchable_resource.pb.go index 239d7c2c7..71e18bba1 100644 --- a/gen/pb-go/flyteidl/admin/matchable_resource.pb.go +++ b/gen/pb-go/flyteidl/admin/matchable_resource.pb.go @@ -460,10 +460,14 @@ type WorkflowExecutionConfig struct { // Omitting this field uses the workflow's value as a default. // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. - Interruptible *wrappers.BoolValue `protobuf:"bytes,6,opt,name=interruptible,proto3" json:"interruptible,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Interruptible *wrappers.BoolValue `protobuf:"bytes,6,opt,name=interruptible,proto3" json:"interruptible,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + OverwriteCache bool `protobuf:"varint,7,opt,name=overwrite_cache,json=overwriteCache,proto3" json:"overwrite_cache,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *WorkflowExecutionConfig) Reset() { *m = WorkflowExecutionConfig{} } @@ -533,6 +537,13 @@ func (m *WorkflowExecutionConfig) GetInterruptible() *wrappers.BoolValue { return nil } +func (m *WorkflowExecutionConfig) GetOverwriteCache() bool { + if m != nil { + return m.OverwriteCache + } + return false +} + // Generic container for encapsulating all types of the above attributes messages. type MatchingAttributes struct { // Types that are valid to be assigned to Target: @@ -885,87 +896,88 @@ func init() { } var fileDescriptor_1d15bcabb02640f4 = []byte{ - // 1299 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xeb, 0x72, 0xda, 0xc6, - 0x17, 0x07, 0x5f, 0x88, 0x7d, 0xf8, 0xc7, 0xc8, 0x9b, 0xd8, 0xc6, 0xf6, 0x3f, 0x89, 0xab, 0x5e, - 0x92, 0xb6, 0x13, 0xe8, 0xd0, 0x76, 0x9a, 0x76, 0x9a, 0x99, 0x62, 0x22, 0x02, 0x13, 0x6c, 0xec, - 0x05, 0x72, 0xe9, 0x17, 0xcd, 0x22, 0x16, 0xa1, 0x5a, 0xd2, 0xca, 0xab, 0x95, 0x6d, 0xa6, 0x2f, - 0xd1, 0x0f, 0xed, 0x4c, 0x5f, 0xa4, 0x8f, 0xd2, 0xef, 0x7d, 0x80, 0x3e, 0x44, 0x47, 0x2b, 0x89, - 0x8b, 0x0c, 0x99, 0x7c, 0xd3, 0x9e, 0xfd, 0x9d, 0x8b, 0xce, 0xe5, 0xb7, 0x07, 0x1e, 0x0f, 0xed, - 0xb1, 0xa0, 0xd6, 0xc0, 0x2e, 0x93, 0x81, 0x63, 0xb9, 0x65, 0x87, 0x08, 0x63, 0x44, 0xfa, 0x36, - 0xd5, 0x39, 0xf5, 0x59, 0xc0, 0x0d, 0x5a, 0xf2, 0x38, 0x13, 0x0c, 0x6d, 0x25, 0xc0, 0x92, 0x04, - 0x1e, 0x1c, 0xa6, 0x14, 0x0d, 0xe6, 0x38, 0xcc, 0x8d, 0xc0, 0x07, 0x69, 0xab, 0x86, 0x1d, 0xf8, - 0x82, 0x72, 0x9d, 0xf8, 0xbe, 0x65, 0xba, 0x0e, 0x75, 0x45, 0x0c, 0x7c, 0x30, 0x01, 0x1a, 0x8c, - 0xd3, 0x32, 0xbd, 0xa1, 0x46, 0x20, 0xac, 0x89, 0x9d, 0xff, 0xcf, 0x5f, 0xfb, 0xd4, 0x08, 0xb8, - 0x25, 0xc6, 0xf1, 0xed, 0x43, 0x93, 0x31, 0xd3, 0xa6, 0x65, 0x79, 0xea, 0x07, 0xc3, 0xf2, 0x35, - 0x27, 0x9e, 0x47, 0xb9, 0x1f, 0xdd, 0xab, 0x7f, 0x64, 0x41, 0xe9, 0x12, 0xff, 0x02, 0xc7, 0x7f, - 0xd2, 0xf1, 0xa8, 0x81, 0x14, 0x58, 0x35, 0xbc, 0xa0, 0x98, 0x3d, 0xca, 0x3e, 0xd9, 0xc4, 0xe1, - 0x67, 0x28, 0x31, 0xbd, 0xa0, 0xb8, 0x12, 0x49, 0x4c, 0x2f, 0x40, 0xbb, 0x90, 0x73, 0xa8, 0xc3, - 0xf8, 0xb8, 0xb8, 0x2a, 0x85, 0xf1, 0x09, 0x15, 0xe1, 0x8e, 0x2f, 0x18, 0x27, 0x26, 0x2d, 0xae, - 0xc9, 0x8b, 0xe4, 0x88, 0xbe, 0x84, 0x6d, 0xea, 0x8d, 0xa8, 0x43, 0x39, 0xb1, 0xf5, 0x04, 0xb3, - 0x2e, 0x31, 0xca, 0xe4, 0xa2, 0x13, 0xc9, 0xd5, 0xdf, 0xb2, 0xb0, 0x3b, 0x1b, 0x57, 0x55, 0x08, - 0x6e, 0xf5, 0x03, 0x41, 0x7d, 0xf4, 0x23, 0x6c, 0x0c, 0xe8, 0x90, 0x04, 0xb6, 0xf0, 0x65, 0x88, - 0xf9, 0xca, 0x51, 0x69, 0x3e, 0xf1, 0xa5, 0xf4, 0x1f, 0xe1, 0x89, 0x06, 0x7a, 0x06, 0x39, 0xdb, - 0x72, 0x2c, 0xe1, 0xcb, 0x9f, 0xf9, 0x10, 0xdd, 0x18, 0xaf, 0xfe, 0x95, 0x85, 0xfd, 0x5a, 0x54, - 0xa4, 0x05, 0x51, 0xbd, 0x03, 0x20, 0x93, 0x53, 0x31, 0x7b, 0xb4, 0xfa, 0x24, 0x5f, 0xf9, 0x3e, - 0x6d, 0x7b, 0xa9, 0x7a, 0x69, 0xfa, 0xa9, 0xb9, 0x82, 0x8f, 0xf1, 0x8c, 0xb1, 0x83, 0xe7, 0x50, - 0x48, 0x5d, 0x87, 0xf5, 0xb8, 0xa0, 0xe3, 0xa4, 0x42, 0x17, 0x74, 0x8c, 0xee, 0xc3, 0xfa, 0x15, - 0xb1, 0x03, 0x1a, 0xd7, 0x28, 0x3a, 0xfc, 0xb0, 0xf2, 0x2c, 0xab, 0x96, 0xa0, 0xa8, 0x25, 0x3d, - 0x73, 0x1e, 0xd0, 0x60, 0x36, 0x6a, 0x04, 0x6b, 0x82, 0x98, 0x51, 0xbc, 0x9b, 0x58, 0x7e, 0xab, - 0x4f, 0x61, 0x67, 0x82, 0x8f, 0x03, 0x6e, 0x91, 0x3e, 0xb5, 0xa7, 0x2e, 0xb2, 0x33, 0x2e, 0xd4, - 0x7f, 0xb3, 0xb0, 0x75, 0x66, 0x07, 0xa6, 0xe5, 0xb6, 0xaf, 0x28, 0xe7, 0xd6, 0x80, 0xa2, 0x43, - 0xd8, 0x14, 0xc4, 0xbf, 0xd0, 0xc5, 0xd8, 0x4b, 0xc0, 0x1b, 0xa1, 0xa0, 0x3b, 0xf6, 0xe4, 0xa5, - 0x27, 0xe1, 0xba, 0x35, 0x28, 0xae, 0x48, 0xbf, 0x1b, 0x91, 0xa0, 0x39, 0x40, 0x36, 0xec, 0x39, - 0x96, 0xef, 0x5b, 0xae, 0xa9, 0xc7, 0xa0, 0x3e, 0x1d, 0x91, 0x2b, 0x8b, 0x71, 0xd9, 0x4d, 0x5b, - 0x95, 0x6f, 0xd2, 0x29, 0x9d, 0x77, 0x5d, 0x3a, 0x89, 0xb4, 0x23, 0xe9, 0x71, 0xac, 0x8b, 0x77, - 0x9c, 0x45, 0x62, 0xb5, 0x02, 0x3b, 0x0b, 0xf1, 0x68, 0x03, 0xd6, 0xea, 0xd5, 0x66, 0x4b, 0xc9, - 0xa0, 0x02, 0xe4, 0x7b, 0x1d, 0x4d, 0x7f, 0xa1, 0xd5, 0xab, 0xbd, 0x56, 0x57, 0xc9, 0xaa, 0x6d, - 0x28, 0xcc, 0xbb, 0x0c, 0x1b, 0x72, 0x93, 0x25, 0x87, 0xb8, 0xf2, 0x0f, 0xdf, 0x1f, 0x26, 0x9e, - 0x2a, 0xa8, 0x7f, 0xae, 0xc2, 0xde, 0x1b, 0xc6, 0x2f, 0x86, 0x36, 0xbb, 0x9e, 0xe6, 0x9d, 0xb9, - 0x43, 0xcb, 0x44, 0x8f, 0xa1, 0xe0, 0x90, 0x1b, 0xdd, 0x23, 0x9c, 0xd8, 0x36, 0xb5, 0x2d, 0xdf, - 0x91, 0xe9, 0x5c, 0xc7, 0x5b, 0x0e, 0xb9, 0x39, 0x9b, 0x4a, 0x51, 0x13, 0x94, 0x64, 0xf0, 0x75, - 0x83, 0xb9, 0x82, 0xde, 0x88, 0xb8, 0xbf, 0x67, 0x22, 0x09, 0xf9, 0xa1, 0xd4, 0x89, 0x61, 0xb5, - 0x08, 0x85, 0x0b, 0xfe, 0xbc, 0x00, 0xbd, 0x85, 0x5d, 0x4e, 0xae, 0x75, 0x16, 0x08, 0x2f, 0x10, - 0xfa, 0x80, 0x08, 0x12, 0x5a, 0x1c, 0x5a, 0xa6, 0x1c, 0xf4, 0x7c, 0xe5, 0xe3, 0xf4, 0xaf, 0x61, - 0x72, 0xdd, 0x96, 0xe0, 0x17, 0x44, 0x90, 0x28, 0x70, 0x7c, 0x8f, 0xdf, 0x16, 0xa2, 0x12, 0xe4, - 0xec, 0xb0, 0x91, 0x7c, 0x59, 0xcb, 0x7c, 0x65, 0x37, 0x6d, 0x49, 0xb6, 0x99, 0x8f, 0x63, 0x14, - 0x7a, 0x0e, 0x79, 0xe2, 0xba, 0x4c, 0x90, 0x30, 0x23, 0xbe, 0xa4, 0x8a, 0x7c, 0xe5, 0x30, 0xad, - 0x54, 0x9d, 0x42, 0xf0, 0x2c, 0x1e, 0xfd, 0x04, 0x77, 0x2d, 0x57, 0x50, 0xce, 0x03, 0x4f, 0x58, - 0x7d, 0x9b, 0x16, 0x73, 0xd2, 0xc0, 0x41, 0x29, 0xa2, 0xc4, 0x52, 0x42, 0x89, 0xa5, 0x63, 0xc6, - 0xec, 0xd7, 0x61, 0x2f, 0xe3, 0x79, 0x05, 0xf5, 0xf7, 0x1c, 0xa0, 0x93, 0x90, 0xec, 0x2d, 0xd7, - 0x9c, 0x19, 0x9a, 0x3e, 0x14, 0x65, 0x7b, 0x27, 0xec, 0xaf, 0xcf, 0x0d, 0x7e, 0xe8, 0xe3, 0xb3, - 0xf7, 0x91, 0xca, 0xd4, 0x52, 0x23, 0x83, 0x77, 0xc5, 0x62, 0x92, 0xbb, 0x80, 0xc3, 0xe4, 0x41, - 0x58, 0xe4, 0x26, 0xaa, 0xed, 0xe7, 0x1f, 0xcc, 0x2f, 0x8d, 0x0c, 0xde, 0x37, 0x96, 0x72, 0xd7, - 0x08, 0x0e, 0x26, 0xaf, 0x8a, 0x7e, 0x19, 0x52, 0xc4, 0xac, 0xaf, 0xa8, 0xec, 0x4f, 0xd2, 0xbe, - 0x96, 0x71, 0x4a, 0x23, 0x83, 0x8b, 0x74, 0x19, 0xdf, 0xe8, 0xb0, 0x37, 0xf5, 0x94, 0xfc, 0xa0, - 0x2c, 0x77, 0xdc, 0x13, 0x9f, 0x2e, 0x75, 0x33, 0x4b, 0x45, 0x8d, 0x0c, 0xde, 0xa1, 0x0b, 0x39, - 0xaa, 0x0d, 0xe8, 0x32, 0x20, 0x76, 0x38, 0x07, 0x6c, 0xa8, 0xfb, 0x94, 0x5f, 0x59, 0x06, 0x8d, - 0x5b, 0xe7, 0x51, 0x6a, 0x14, 0xce, 0x23, 0x60, 0x7b, 0xd8, 0x89, 0x60, 0x8d, 0x0c, 0x56, 0x2e, - 0x53, 0x32, 0xd4, 0x02, 0x25, 0x66, 0xa2, 0xe9, 0x8c, 0xe7, 0xd2, 0xe6, 0x16, 0xcd, 0x78, 0x98, - 0x88, 0x82, 0x97, 0xa2, 0x0a, 0x0a, 0xfb, 0xd7, 0xf1, 0xac, 0xeb, 0x33, 0x89, 0x88, 0xe6, 0xeb, - 0x8e, 0x34, 0xfb, 0x38, 0x6d, 0x76, 0x09, 0x39, 0x34, 0x32, 0x78, 0xef, 0x7a, 0x09, 0x6f, 0x60, - 0x40, 0xb7, 0xd7, 0x89, 0xe2, 0x86, 0xb4, 0xff, 0xd1, 0x92, 0xa6, 0xa9, 0x4e, 0x80, 0x8d, 0x0c, - 0xde, 0x36, 0xd2, 0xc2, 0xe3, 0x0d, 0xc8, 0x09, 0xc2, 0x4d, 0x2a, 0xd4, 0xbf, 0xb3, 0x70, 0x74, - 0x92, 0xec, 0x40, 0xd3, 0xe2, 0x46, 0xbe, 0x03, 0x2e, 0xc7, 0x0f, 0x1d, 0xa7, 0xde, 0xc3, 0xd0, - 0xb5, 0x9a, 0x76, 0x7d, 0x7b, 0xb8, 0x66, 0x1f, 0xbe, 0x70, 0xc7, 0x18, 0x30, 0x87, 0x58, 0x6e, - 0xfc, 0xa8, 0xc5, 0xa7, 0x70, 0xc7, 0xf0, 0x38, 0xfb, 0x85, 0x1a, 0x22, 0x5e, 0x3e, 0x92, 0x23, - 0x3a, 0x80, 0x8d, 0x24, 0x27, 0xf1, 0xfa, 0x31, 0x39, 0xa3, 0x47, 0x90, 0xb7, 0x49, 0xe0, 0x1a, - 0x23, 0xdd, 0xb3, 0x89, 0x1b, 0x6f, 0x1e, 0x10, 0x89, 0xce, 0x6c, 0xe2, 0xaa, 0x23, 0x78, 0xd8, - 0xb2, 0x7c, 0xb1, 0xe0, 0xd7, 0x30, 0xbd, 0x0c, 0xa8, 0x2f, 0x50, 0x1d, 0xee, 0x4e, 0xa6, 0x71, - 0xf2, 0xb8, 0x6d, 0xdd, 0x4e, 0xe9, 0xc4, 0x44, 0x32, 0x6c, 0xf8, 0x7f, 0x89, 0x5e, 0xf8, 0x06, - 0xaa, 0xbf, 0xc2, 0xa3, 0xa5, 0x9e, 0x7c, 0x8f, 0xb9, 0x3e, 0x45, 0x6f, 0x61, 0xcb, 0x98, 0x4d, - 0x68, 0xf2, 0xb2, 0x7c, 0xb5, 0xd4, 0xd7, 0x92, 0x4a, 0xe0, 0x94, 0x9d, 0x2f, 0xfe, 0xc9, 0xc2, - 0xf6, 0xad, 0x00, 0xd1, 0x36, 0xdc, 0xed, 0x56, 0x3b, 0xaf, 0x74, 0xac, 0x75, 0xda, 0x3d, 0x5c, - 0xd3, 0x94, 0x0c, 0xba, 0x0f, 0x4a, 0xad, 0xd5, 0xeb, 0x74, 0x35, 0x3c, 0x95, 0x66, 0xd1, 0x3d, - 0x28, 0x68, 0x6f, 0xb5, 0x5a, 0xaf, 0xdb, 0x6c, 0x9f, 0xea, 0xe7, 0x3d, 0xad, 0xa7, 0x29, 0x2b, - 0xe8, 0x10, 0xf6, 0xa6, 0xc2, 0x44, 0xa9, 0x55, 0x3d, 0xd6, 0x5a, 0xca, 0x2a, 0xfa, 0x04, 0x8e, - 0xce, 0x7b, 0xd5, 0x56, 0xb3, 0xfb, 0x4e, 0x6f, 0xd7, 0xf5, 0x8e, 0x86, 0x5f, 0x37, 0x6b, 0x9a, - 0xde, 0x39, 0xd3, 0x6a, 0xcd, 0x7a, 0xb3, 0x56, 0x0d, 0x75, 0x94, 0xb5, 0xd0, 0xee, 0x59, 0xab, - 0xf7, 0xb2, 0x79, 0xaa, 0xb7, 0x5f, 0x6b, 0x18, 0x37, 0x5f, 0x68, 0xca, 0x3a, 0x7a, 0x00, 0xfb, - 0x6f, 0xda, 0xf8, 0x55, 0xbd, 0xd5, 0x7e, 0xa3, 0xcf, 0x38, 0x68, 0x9f, 0xd6, 0x9b, 0x2f, 0x95, - 0x1c, 0xda, 0x05, 0x94, 0x38, 0xab, 0x76, 0x3a, 0xcd, 0x97, 0xa7, 0x27, 0xda, 0x69, 0x57, 0xb9, - 0x73, 0xfc, 0xdd, 0xcf, 0xdf, 0x9a, 0x96, 0x18, 0x05, 0xfd, 0x92, 0xc1, 0x9c, 0xb2, 0x4c, 0x18, - 0xe3, 0x66, 0x79, 0xb2, 0x29, 0x9b, 0xd4, 0x2d, 0x7b, 0xfd, 0xa7, 0x26, 0x2b, 0xcf, 0x2f, 0xe1, - 0xfd, 0x9c, 0x7c, 0x14, 0xbe, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x00, 0x73, 0x06, 0xf3, - 0x0b, 0x00, 0x00, + // 1323 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xdb, 0x72, 0x1a, 0x47, + 0x13, 0x66, 0x75, 0x40, 0xa8, 0xf9, 0x0d, 0xab, 0xb1, 0x25, 0x21, 0xe9, 0xb7, 0xad, 0x6c, 0x0e, + 0x56, 0x92, 0x32, 0xa4, 0x48, 0x52, 0x71, 0x52, 0x71, 0x55, 0x10, 0x5e, 0x0c, 0x65, 0x24, 0xa4, + 0x01, 0x7c, 0xc8, 0xcd, 0xd6, 0xb0, 0x0c, 0xcb, 0x46, 0x7b, 0xd2, 0xec, 0xac, 0x10, 0x95, 0x97, + 0xc8, 0x45, 0xf2, 0x28, 0x79, 0x80, 0x3c, 0x44, 0xee, 0xf3, 0x00, 0x79, 0x88, 0xd4, 0x1e, 0x81, + 0x15, 0xb8, 0x7c, 0xb7, 0xd3, 0xf3, 0xf5, 0x61, 0x7b, 0xba, 0xbf, 0x6e, 0x78, 0x32, 0x32, 0xa6, + 0x9c, 0xea, 0x43, 0xa3, 0x42, 0x86, 0xa6, 0x6e, 0x55, 0x4c, 0xc2, 0xd5, 0x31, 0x19, 0x18, 0x54, + 0x61, 0xd4, 0xb5, 0x3d, 0xa6, 0xd2, 0xb2, 0xc3, 0x6c, 0x6e, 0xa3, 0x42, 0x0c, 0x2c, 0x07, 0xc0, + 0xc3, 0xa3, 0x94, 0xa2, 0x6a, 0x9b, 0xa6, 0x6d, 0x85, 0xe0, 0xc3, 0xb4, 0x55, 0xd5, 0xf0, 0x5c, + 0x4e, 0x99, 0x42, 0x5c, 0x57, 0xd7, 0x2c, 0x93, 0x5a, 0x3c, 0x02, 0x3e, 0x4c, 0x80, 0xaa, 0xcd, + 0x68, 0x85, 0xde, 0x52, 0xd5, 0xe3, 0x7a, 0x62, 0xe7, 0xff, 0x8b, 0xd7, 0x2e, 0x55, 0x3d, 0xa6, + 0xf3, 0x69, 0x74, 0xfb, 0x48, 0xb3, 0x6d, 0xcd, 0xa0, 0x95, 0xe0, 0x34, 0xf0, 0x46, 0x95, 0x09, + 0x23, 0x8e, 0x43, 0x99, 0x1b, 0xde, 0x4b, 0x7f, 0x08, 0x20, 0xf6, 0x88, 0x7b, 0x85, 0xa3, 0x3f, + 0xe9, 0x3a, 0x54, 0x45, 0x22, 0xac, 0xab, 0x8e, 0x57, 0x12, 0x8e, 0x85, 0x93, 0x6d, 0xec, 0x7f, + 0xfa, 0x12, 0xcd, 0xf1, 0x4a, 0x6b, 0xa1, 0x44, 0x73, 0x3c, 0xb4, 0x07, 0x59, 0x93, 0x9a, 0x36, + 0x9b, 0x96, 0xd6, 0x03, 0x61, 0x74, 0x42, 0x25, 0xd8, 0x72, 0xb9, 0xcd, 0x88, 0x46, 0x4b, 0x1b, + 0xc1, 0x45, 0x7c, 0x44, 0x5f, 0xc2, 0x0e, 0x75, 0xc6, 0xd4, 0xa4, 0x8c, 0x18, 0x4a, 0x8c, 0xd9, + 0x0c, 0x30, 0x62, 0x72, 0xd1, 0x0d, 0xe5, 0xd2, 0x6f, 0x02, 0xec, 0xcd, 0xc7, 0x55, 0xe3, 0x9c, + 0xe9, 0x03, 0x8f, 0x53, 0x17, 0xfd, 0x08, 0xb9, 0x21, 0x1d, 0x11, 0xcf, 0xe0, 0x6e, 0x10, 0x62, + 0xbe, 0x7a, 0x5c, 0x5e, 0x4c, 0x7c, 0x39, 0xfd, 0x47, 0x38, 0xd1, 0x40, 0xcf, 0x20, 0x6b, 0xe8, + 0xa6, 0xce, 0xdd, 0xe0, 0x67, 0x3e, 0x44, 0x37, 0xc2, 0x4b, 0x7f, 0x0a, 0x70, 0x50, 0x0f, 0x1f, + 0x69, 0x49, 0x54, 0xef, 0x00, 0x48, 0x72, 0x2a, 0x09, 0xc7, 0xeb, 0x27, 0xf9, 0xea, 0xf7, 0x69, + 0xdb, 0x2b, 0xd5, 0xcb, 0xb3, 0x4f, 0xd9, 0xe2, 0x6c, 0x8a, 0xe7, 0x8c, 0x1d, 0x3e, 0x87, 0x62, + 0xea, 0xda, 0x7f, 0x8f, 0x2b, 0x3a, 0x8d, 0x5f, 0xe8, 0x8a, 0x4e, 0xd1, 0x03, 0xd8, 0xbc, 0x21, + 0x86, 0x47, 0xa3, 0x37, 0x0a, 0x0f, 0x3f, 0xac, 0x3d, 0x13, 0xa4, 0x32, 0x94, 0xe4, 0xb8, 0x66, + 0x2e, 0x3d, 0xea, 0xcd, 0x47, 0x8d, 0x60, 0x83, 0x13, 0x2d, 0x8c, 0x77, 0x1b, 0x07, 0xdf, 0xd2, + 0x53, 0xd8, 0x4d, 0xf0, 0x51, 0xc0, 0x6d, 0x32, 0xa0, 0xc6, 0xcc, 0x85, 0x30, 0xe7, 0x42, 0xfa, + 0x57, 0x80, 0xc2, 0x85, 0xe1, 0x69, 0xba, 0xd5, 0xb9, 0xa1, 0x8c, 0xe9, 0x43, 0x8a, 0x8e, 0x60, + 0x9b, 0x13, 0xf7, 0x4a, 0xe1, 0x53, 0x27, 0x06, 0xe7, 0x7c, 0x41, 0x6f, 0xea, 0x04, 0x97, 0x4e, + 0x00, 0x57, 0xf4, 0x61, 0x69, 0x2d, 0xf0, 0x9b, 0x0b, 0x05, 0xad, 0x21, 0x32, 0x60, 0xdf, 0xd4, + 0x5d, 0x57, 0xb7, 0x34, 0x25, 0x02, 0x0d, 0xe8, 0x98, 0xdc, 0xe8, 0x36, 0x0b, 0xaa, 0xa9, 0x50, + 0xfd, 0x26, 0x9d, 0xd2, 0x45, 0xd7, 0xe5, 0xb3, 0x50, 0x3b, 0x94, 0x9e, 0x46, 0xba, 0x78, 0xd7, + 0x5c, 0x26, 0x96, 0xaa, 0xb0, 0xbb, 0x14, 0x8f, 0x72, 0xb0, 0xd1, 0xa8, 0xb5, 0xda, 0x62, 0x06, + 0x15, 0x21, 0xdf, 0xef, 0xca, 0xca, 0x0b, 0xb9, 0x51, 0xeb, 0xb7, 0x7b, 0xa2, 0x20, 0x75, 0xa0, + 0xb8, 0xe8, 0xd2, 0x2f, 0xc8, 0x6d, 0x3b, 0x3e, 0x44, 0x2f, 0xff, 0xe8, 0xfd, 0x61, 0xe2, 0x99, + 0x82, 0xf4, 0xd7, 0x3a, 0xec, 0xbf, 0xb1, 0xd9, 0xd5, 0xc8, 0xb0, 0x27, 0xb3, 0xbc, 0xdb, 0xd6, + 0x48, 0xd7, 0xd0, 0x13, 0x28, 0x9a, 0xe4, 0x56, 0x71, 0x08, 0x23, 0x86, 0x41, 0x0d, 0xdd, 0x35, + 0x83, 0x74, 0x6e, 0xe2, 0x82, 0x49, 0x6e, 0x2f, 0x66, 0x52, 0xd4, 0x02, 0x31, 0x6e, 0x7c, 0x45, + 0xb5, 0x2d, 0x4e, 0x6f, 0x79, 0x54, 0xdf, 0x73, 0x91, 0xf8, 0xfc, 0x50, 0xee, 0x46, 0xb0, 0x7a, + 0x88, 0xc2, 0x45, 0x77, 0x51, 0x80, 0xde, 0xc2, 0x1e, 0x23, 0x13, 0xc5, 0xf6, 0xb8, 0xe3, 0x71, + 0x65, 0x48, 0x38, 0xf1, 0x2d, 0x8e, 0x74, 0x2d, 0x68, 0xf4, 0x7c, 0xf5, 0xe3, 0xf4, 0xaf, 0x61, + 0x32, 0xe9, 0x04, 0xe0, 0x17, 0x84, 0x93, 0x30, 0x70, 0x7c, 0x9f, 0xdd, 0x15, 0xa2, 0x32, 0x64, + 0x0d, 0xbf, 0x90, 0xdc, 0xe0, 0x2d, 0xf3, 0xd5, 0xbd, 0xb4, 0xa5, 0xa0, 0xcc, 0x5c, 0x1c, 0xa1, + 0xd0, 0x73, 0xc8, 0x13, 0xcb, 0xb2, 0x39, 0xf1, 0x33, 0xe2, 0x06, 0x54, 0x91, 0xaf, 0x1e, 0xa5, + 0x95, 0x6a, 0x33, 0x08, 0x9e, 0xc7, 0xa3, 0x9f, 0xe0, 0x9e, 0x6e, 0x71, 0xca, 0x98, 0xe7, 0x70, + 0x7d, 0x60, 0xd0, 0x52, 0x36, 0x30, 0x70, 0x58, 0x0e, 0x29, 0xb1, 0x1c, 0x53, 0x62, 0xf9, 0xd4, + 0xb6, 0x8d, 0xd7, 0x7e, 0x2d, 0xe3, 0x45, 0x05, 0x3f, 0xfd, 0xfe, 0x3b, 0x4d, 0x98, 0xce, 0xa9, + 0xa2, 0x12, 0x75, 0x4c, 0x4b, 0x5b, 0xc7, 0xc2, 0x49, 0x0e, 0x17, 0x12, 0x71, 0xdd, 0x97, 0x4a, + 0xbf, 0x67, 0x01, 0x9d, 0xf9, 0x53, 0x41, 0xb7, 0xb4, 0xb9, 0xee, 0x1a, 0x40, 0x29, 0xe8, 0x83, + 0x78, 0x4c, 0x28, 0x0b, 0x0c, 0xe1, 0x07, 0xf3, 0xd9, 0xfb, 0xd8, 0x67, 0x66, 0xa9, 0x99, 0xc1, + 0x7b, 0x7c, 0x39, 0x1b, 0x5e, 0xc1, 0x51, 0x3c, 0x39, 0x96, 0xb9, 0x09, 0x8b, 0xe0, 0xf3, 0x0f, + 0x26, 0xa2, 0x66, 0x06, 0x1f, 0xa8, 0x2b, 0x49, 0x6e, 0x0c, 0x87, 0xc9, 0xf8, 0x51, 0xae, 0x7d, + 0x2e, 0x99, 0xf7, 0x15, 0xd6, 0xc7, 0x49, 0xda, 0xd7, 0x2a, 0xf2, 0x69, 0x66, 0x70, 0x89, 0xae, + 0x22, 0x26, 0x05, 0xf6, 0x67, 0x9e, 0xe2, 0x1f, 0x0c, 0xea, 0x22, 0x2a, 0x9e, 0x4f, 0x57, 0xba, + 0x99, 0xe7, 0xac, 0x66, 0x06, 0xef, 0xd2, 0xa5, 0x64, 0xd6, 0x01, 0x74, 0xed, 0x11, 0xc3, 0x6f, + 0x18, 0x7b, 0xa4, 0xb8, 0x94, 0xdd, 0xe8, 0x2a, 0x8d, 0x6a, 0xec, 0x71, 0xaa, 0x67, 0x2e, 0x43, + 0x60, 0x67, 0xd4, 0x0d, 0x61, 0xcd, 0x0c, 0x16, 0xaf, 0x53, 0x32, 0xd4, 0x06, 0x31, 0xa2, 0xac, + 0x19, 0x19, 0x64, 0xd3, 0xe6, 0x96, 0x91, 0x81, 0x9f, 0x88, 0xa2, 0x93, 0xe2, 0x14, 0x0a, 0x07, + 0x93, 0x88, 0x14, 0x94, 0xb9, 0x44, 0x84, 0x8d, 0xb8, 0x15, 0x98, 0x7d, 0x92, 0x36, 0xbb, 0x82, + 0x45, 0x9a, 0x19, 0xbc, 0x3f, 0x59, 0x41, 0x30, 0x18, 0xd0, 0xdd, 0xbd, 0xa3, 0x94, 0x0b, 0xec, + 0x7f, 0xb4, 0xa2, 0x68, 0x6a, 0x09, 0xb0, 0x99, 0xc1, 0x3b, 0x6a, 0x5a, 0x78, 0x9a, 0x83, 0x2c, + 0x27, 0x4c, 0xa3, 0x5c, 0xfa, 0x5b, 0x80, 0xe3, 0xb3, 0x78, 0x59, 0x9a, 0x3d, 0x6e, 0xe8, 0xdb, + 0x63, 0x41, 0x9f, 0xa2, 0xd3, 0xd4, 0xe0, 0xf4, 0x5d, 0x4b, 0x69, 0xd7, 0x77, 0x9b, 0x6b, 0x7e, + 0x42, 0xfa, 0xcb, 0xc8, 0xd0, 0x36, 0x89, 0x6e, 0x45, 0xd3, 0x2f, 0x3a, 0xf9, 0xcb, 0x88, 0xc3, + 0xec, 0x5f, 0xa8, 0xca, 0xa3, 0x2d, 0x25, 0x3e, 0xa2, 0x43, 0xc8, 0xc5, 0x39, 0x89, 0xf6, 0x94, + 0xe4, 0x8c, 0x1e, 0x43, 0xde, 0x20, 0x9e, 0xa5, 0x8e, 0x15, 0xc7, 0x20, 0x56, 0xb4, 0xa2, 0x40, + 0x28, 0xba, 0x30, 0x88, 0x25, 0x8d, 0xe1, 0x51, 0x5b, 0x77, 0xf9, 0x92, 0x5f, 0xc3, 0xf4, 0xda, + 0xa3, 0x2e, 0x47, 0x0d, 0xb8, 0x97, 0x74, 0x63, 0x32, 0x05, 0x0b, 0x77, 0x53, 0x9a, 0x98, 0x88, + 0x9b, 0x0d, 0xff, 0x2f, 0xd6, 0xf3, 0x87, 0xa5, 0xf4, 0x2b, 0x3c, 0x5e, 0xe9, 0xc9, 0x75, 0x6c, + 0xcb, 0xa5, 0xe8, 0x2d, 0x14, 0xd4, 0xf9, 0x84, 0xc6, 0x23, 0xe8, 0xab, 0x95, 0xbe, 0x56, 0xbc, + 0x04, 0x4e, 0xd9, 0xf9, 0xe2, 0x1f, 0x01, 0x76, 0xee, 0x04, 0x88, 0x76, 0xe0, 0x5e, 0xaf, 0xd6, + 0x7d, 0xa5, 0x60, 0xb9, 0xdb, 0xe9, 0xe3, 0xba, 0x2c, 0x66, 0xd0, 0x03, 0x10, 0xeb, 0xed, 0x7e, + 0xb7, 0x27, 0xe3, 0x99, 0x54, 0x40, 0xf7, 0xa1, 0x28, 0xbf, 0x95, 0xeb, 0xfd, 0x5e, 0xab, 0x73, + 0xae, 0x5c, 0xf6, 0xe5, 0xbe, 0x2c, 0xae, 0xa1, 0x23, 0xd8, 0x9f, 0x09, 0x63, 0xa5, 0x76, 0xed, + 0x54, 0x6e, 0x8b, 0xeb, 0xe8, 0x13, 0x38, 0xbe, 0xec, 0xd7, 0xda, 0xad, 0xde, 0x3b, 0xa5, 0xd3, + 0x50, 0xba, 0x32, 0x7e, 0xdd, 0xaa, 0xcb, 0x4a, 0xf7, 0x42, 0xae, 0xb7, 0x1a, 0xad, 0x7a, 0xcd, + 0xd7, 0x11, 0x37, 0x7c, 0xbb, 0x17, 0xed, 0xfe, 0xcb, 0xd6, 0xb9, 0xd2, 0x79, 0x2d, 0x63, 0xdc, + 0x7a, 0x21, 0x8b, 0x9b, 0xe8, 0x21, 0x1c, 0xbc, 0xe9, 0xe0, 0x57, 0x8d, 0x76, 0xe7, 0x8d, 0x32, + 0xe7, 0xa0, 0x73, 0xde, 0x68, 0xbd, 0x14, 0xb3, 0x68, 0x0f, 0x50, 0xec, 0xac, 0xd6, 0xed, 0xb6, + 0x5e, 0x9e, 0x9f, 0xc9, 0xe7, 0x3d, 0x71, 0xeb, 0xf4, 0xbb, 0x9f, 0xbf, 0xd5, 0x74, 0x3e, 0xf6, + 0x06, 0x65, 0xd5, 0x36, 0x2b, 0x41, 0xc2, 0x6c, 0xa6, 0x55, 0x92, 0x95, 0x5a, 0xa3, 0x56, 0xc5, + 0x19, 0x3c, 0xd5, 0xec, 0xca, 0xe2, 0xb6, 0x3e, 0xc8, 0x06, 0xd3, 0xe3, 0xeb, 0xff, 0x02, 0x00, + 0x00, 0xff, 0xff, 0x2e, 0x16, 0xaf, 0xac, 0x1c, 0x0c, 0x00, 0x00, } diff --git a/gen/pb-go/flyteidl/admin/matchable_resource.pb.validate.go b/gen/pb-go/flyteidl/admin/matchable_resource.pb.validate.go index 9a698a48a..b69407074 100644 --- a/gen/pb-go/flyteidl/admin/matchable_resource.pb.validate.go +++ b/gen/pb-go/flyteidl/admin/matchable_resource.pb.validate.go @@ -612,6 +612,8 @@ func (m *WorkflowExecutionConfig) Validate() error { } } + // no validation rules for OverwriteCache + return nil } diff --git a/gen/pb-go/flyteidl/core/catalog.pb.go b/gen/pb-go/flyteidl/core/catalog.pb.go index b26b3632b..39c64304a 100644 --- a/gen/pb-go/flyteidl/core/catalog.pb.go +++ b/gen/pb-go/flyteidl/core/catalog.pb.go @@ -36,6 +36,8 @@ const ( CatalogCacheStatus_CACHE_LOOKUP_FAILURE CatalogCacheStatus = 4 // Used to indicate that cache lookup failed because of an error CatalogCacheStatus_CACHE_PUT_FAILURE CatalogCacheStatus = 5 + // Used to indicate the cache lookup was skipped + CatalogCacheStatus_CACHE_SKIPPED CatalogCacheStatus = 6 ) var CatalogCacheStatus_name = map[int32]string{ @@ -45,6 +47,7 @@ var CatalogCacheStatus_name = map[int32]string{ 3: "CACHE_POPULATED", 4: "CACHE_LOOKUP_FAILURE", 5: "CACHE_PUT_FAILURE", + 6: "CACHE_SKIPPED", } var CatalogCacheStatus_value = map[string]int32{ @@ -54,6 +57,7 @@ var CatalogCacheStatus_value = map[string]int32{ "CACHE_POPULATED": 3, "CACHE_LOOKUP_FAILURE": 4, "CACHE_PUT_FAILURE": 5, + "CACHE_SKIPPED": 6, } func (x CatalogCacheStatus) String() string { @@ -281,34 +285,35 @@ func init() { func init() { proto.RegisterFile("flyteidl/core/catalog.proto", fileDescriptor_534f5d1443565574) } var fileDescriptor_534f5d1443565574 = []byte{ - // 453 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x52, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0xad, 0xd3, 0x52, 0x29, 0x13, 0xda, 0x9a, 0x49, 0x0b, 0x06, 0x24, 0x3e, 0x72, 0x40, 0x08, - 0x09, 0x5b, 0x2a, 0x08, 0x71, 0x75, 0xec, 0x45, 0x59, 0xe1, 0x92, 0xb0, 0xb6, 0x11, 0x42, 0x48, - 0xd1, 0xc6, 0xde, 0xb8, 0x56, 0xd3, 0x6c, 0x65, 0x6f, 0x10, 0x9c, 0x39, 0x70, 0xe2, 0x2f, 0xf0, - 0x5b, 0x51, 0x6c, 0x67, 0xf3, 0xd1, 0x93, 0x3d, 0xef, 0xbd, 0x79, 0xf3, 0x76, 0x77, 0xe0, 0xf1, - 0x74, 0xf6, 0x4b, 0x89, 0x3c, 0x9d, 0x39, 0x89, 0x2c, 0x84, 0x93, 0x70, 0xc5, 0x67, 0x32, 0xb3, - 0x6f, 0x0a, 0xa9, 0x24, 0x1e, 0xad, 0x48, 0x7b, 0x49, 0x3e, 0x7a, 0xb2, 0xad, 0xcd, 0x53, 0x31, - 0x57, 0xf9, 0x34, 0x17, 0x45, 0x2d, 0xef, 0x51, 0x40, 0xaf, 0xee, 0x77, 0x0b, 0x95, 0x4f, 0x79, - 0xa2, 0x22, 0x9e, 0xe1, 0x53, 0xe8, 0xf0, 0xa6, 0x1c, 0xe7, 0xa9, 0x65, 0x3c, 0x33, 0x5e, 0xb6, - 0x19, 0xac, 0x20, 0x9a, 0x22, 0xc2, 0xc1, 0x9c, 0x5f, 0x0b, 0xab, 0x55, 0x31, 0xd5, 0x7f, 0xef, - 0x77, 0x0b, 0x4e, 0x1a, 0xaf, 0x0b, 0xa1, 0x78, 0xca, 0x15, 0xc7, 0xf7, 0x00, 0xcb, 0x6f, 0x29, - 0xb4, 0x4f, 0xe7, 0xfc, 0xa1, 0xbd, 0x15, 0xd1, 0xa6, 0x3a, 0x13, 0x6b, 0x37, 0x62, 0x9a, 0xa2, - 0x0f, 0x77, 0x75, 0x04, 0xc5, 0xb3, 0x6a, 0x52, 0xe7, 0xfc, 0xf9, 0x4e, 0xef, 0xed, 0xec, 0x4c, - 0x27, 0x5f, 0x1e, 0xe4, 0x3b, 0x9c, 0x95, 0x72, 0x51, 0x24, 0x62, 0xac, 0x78, 0x79, 0x35, 0x16, - 0x3f, 0x45, 0xb2, 0x50, 0xb9, 0x9c, 0x5b, 0xfb, 0x95, 0xdd, 0x8b, 0x1d, 0xbb, 0x88, 0x97, 0x57, - 0x64, 0xa5, 0x59, 0xe7, 0x1a, 0xec, 0xb1, 0x6e, 0x6d, 0xb3, 0x25, 0xe8, 0x23, 0x98, 0x8d, 0xbb, - 0x36, 0xee, 0xfd, 0x33, 0xf4, 0x8d, 0x32, 0x51, 0x8a, 0xe2, 0x07, 0xaf, 0xe0, 0x3f, 0x06, 0x1c, - 0x86, 0x8a, 0xab, 0x45, 0x89, 0x16, 0x9c, 0x32, 0x12, 0x12, 0xf6, 0xc5, 0x8d, 0xe8, 0xf0, 0xd3, - 0xd8, 0xa7, 0xa1, 0xdb, 0x0f, 0x88, 0x6f, 0xee, 0xed, 0x32, 0xae, 0xf7, 0x39, 0xa6, 0x8c, 0xf8, - 0xa6, 0x81, 0xf7, 0x01, 0x37, 0x19, 0xf2, 0x95, 0x86, 0x51, 0x68, 0xb6, 0x76, 0x3b, 0x18, 0x09, - 0x88, 0x1b, 0x12, 0xdf, 0xdc, 0xc7, 0x07, 0xd0, 0xdd, 0x64, 0x3e, 0xb8, 0x34, 0x88, 0x19, 0x31, - 0x0f, 0x5e, 0xfd, 0x5d, 0x07, 0xf4, 0x78, 0x72, 0x29, 0x9a, 0x54, 0x08, 0xc7, 0x9e, 0xeb, 0x0d, - 0xc8, 0x66, 0x9e, 0x63, 0x80, 0x1a, 0xbb, 0xa0, 0x61, 0x68, 0x1a, 0x78, 0x04, 0xed, 0xba, 0x1e, - 0xd0, 0xc8, 0x6c, 0x61, 0x17, 0x4e, 0xea, 0x72, 0x34, 0x1c, 0xc5, 0x81, 0x1b, 0x55, 0x73, 0x2d, - 0x38, 0xad, 0xc1, 0x60, 0x38, 0xfc, 0x18, 0x8f, 0xd6, 0x83, 0xf1, 0x0c, 0xee, 0x35, 0xf2, 0x38, - 0xd2, 0xf0, 0x9d, 0xfe, 0xbb, 0x6f, 0x6f, 0xb3, 0x5c, 0x5d, 0x2e, 0x26, 0x76, 0x22, 0xaf, 0x9d, - 0xea, 0x3d, 0x64, 0x91, 0x39, 0x7a, 0x6f, 0x33, 0x31, 0x77, 0x6e, 0x26, 0xaf, 0x33, 0xe9, 0x6c, - 0xad, 0xf2, 0xe4, 0xb0, 0x5a, 0xe0, 0x37, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x52, 0x1b, 0xbb, - 0x0d, 0x0e, 0x03, 0x00, 0x00, + // 465 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x52, 0x5f, 0x6f, 0xd3, 0x3e, + 0x14, 0x5d, 0xba, 0xfd, 0x2a, 0xf5, 0xf6, 0xd7, 0xcd, 0x73, 0x37, 0x08, 0x20, 0xf1, 0xa7, 0x0f, + 0x08, 0x21, 0x91, 0x48, 0x03, 0x21, 0x5e, 0xd3, 0xc4, 0xa8, 0xd6, 0x32, 0x1a, 0xec, 0x04, 0x21, + 0x84, 0x54, 0xb9, 0x89, 0x9b, 0x45, 0xeb, 0xea, 0x29, 0x71, 0x11, 0x3c, 0xf3, 0xc0, 0xb7, 0x40, + 0x7c, 0x54, 0xd4, 0x24, 0x4d, 0xff, 0xf0, 0x94, 0xdc, 0x73, 0xce, 0x3d, 0xf7, 0xd8, 0xbe, 0xf0, + 0x68, 0x36, 0xff, 0xa1, 0x65, 0x96, 0xcc, 0xed, 0x58, 0xe5, 0xd2, 0x8e, 0x85, 0x16, 0x73, 0x95, + 0x5a, 0x77, 0xb9, 0xd2, 0x0a, 0xf7, 0xd6, 0xa4, 0xb5, 0x22, 0x1f, 0x3e, 0xde, 0xd5, 0x66, 0x89, + 0x5c, 0xe8, 0x6c, 0x96, 0xc9, 0xbc, 0x92, 0x0f, 0x28, 0x60, 0xb7, 0xea, 0x77, 0x72, 0x9d, 0xcd, + 0x44, 0xac, 0x43, 0x91, 0xe2, 0x27, 0xd0, 0x15, 0x75, 0x39, 0xc9, 0x12, 0xd3, 0x78, 0x6a, 0xbc, + 0xe8, 0x30, 0x58, 0x43, 0x34, 0xc1, 0x18, 0x8e, 0x16, 0xe2, 0x56, 0x9a, 0xad, 0x92, 0x29, 0xff, + 0x07, 0x3f, 0x5b, 0x70, 0x52, 0x7b, 0x5d, 0x49, 0x2d, 0x12, 0xa1, 0x05, 0x7e, 0x07, 0xb0, 0xfa, + 0x16, 0xb2, 0xf1, 0xe9, 0x5e, 0x3c, 0xb0, 0x76, 0x22, 0x5a, 0xb4, 0xc9, 0xc4, 0x3a, 0xb5, 0x98, + 0x26, 0xd8, 0x83, 0xff, 0x9b, 0x08, 0x5a, 0xa4, 0xe5, 0xa4, 0xee, 0xc5, 0xb3, 0xbd, 0xde, 0x7f, + 0xb3, 0xb3, 0x26, 0xf9, 0xea, 0x20, 0x5f, 0xe1, 0xbc, 0x50, 0xcb, 0x3c, 0x96, 0x13, 0x2d, 0x8a, + 0x9b, 0x89, 0xfc, 0x2e, 0xe3, 0xa5, 0xce, 0xd4, 0xc2, 0x3c, 0x2c, 0xed, 0x9e, 0xef, 0xd9, 0x85, + 0xa2, 0xb8, 0x21, 0x6b, 0xcd, 0x26, 0xd7, 0xe8, 0x80, 0xf5, 0x2b, 0x9b, 0x1d, 0xc1, 0x10, 0x03, + 0xaa, 0xdd, 0x1b, 0xe3, 0xc1, 0x6f, 0xa3, 0xb9, 0x51, 0x26, 0x0b, 0x99, 0x7f, 0x13, 0x25, 0xfc, + 0xcb, 0x80, 0x36, 0xd7, 0x42, 0x2f, 0x0b, 0x6c, 0xc2, 0x19, 0x23, 0x9c, 0xb0, 0x4f, 0x4e, 0x48, + 0xc7, 0x1f, 0x26, 0x1e, 0xe5, 0xce, 0xd0, 0x27, 0x1e, 0x3a, 0xd8, 0x67, 0x1c, 0xf7, 0x63, 0x44, + 0x19, 0xf1, 0x90, 0x81, 0xef, 0x01, 0xde, 0x66, 0xc8, 0x67, 0xca, 0x43, 0x8e, 0x5a, 0xfb, 0x1d, + 0x8c, 0xf8, 0xc4, 0xe1, 0xc4, 0x43, 0x87, 0xf8, 0x3e, 0xf4, 0xb7, 0x99, 0xf7, 0x0e, 0xf5, 0x23, + 0x46, 0xd0, 0xd1, 0xcb, 0x3f, 0x9b, 0x80, 0xae, 0x88, 0xaf, 0x65, 0x9d, 0x0a, 0xc3, 0xb1, 0xeb, + 0xb8, 0x23, 0xb2, 0x9d, 0xe7, 0x18, 0xa0, 0xc2, 0xae, 0x28, 0xe7, 0xc8, 0xc0, 0x3d, 0xe8, 0x54, + 0xf5, 0x88, 0x86, 0xa8, 0x85, 0xfb, 0x70, 0x52, 0x95, 0xc1, 0x38, 0x88, 0x7c, 0x27, 0x2c, 0xe7, + 0x9a, 0x70, 0x56, 0x81, 0xfe, 0x78, 0x7c, 0x19, 0x05, 0x9b, 0xc1, 0xf8, 0x1c, 0x4e, 0x6b, 0x79, + 0x14, 0x36, 0xf0, 0x7f, 0xf8, 0x14, 0x7a, 0x15, 0xcc, 0x2f, 0x69, 0x10, 0x10, 0x0f, 0xb5, 0x87, + 0x6f, 0xbf, 0xbc, 0x49, 0x33, 0x7d, 0xbd, 0x9c, 0x5a, 0xb1, 0xba, 0xb5, 0xcb, 0x27, 0x52, 0x79, + 0x6a, 0x37, 0xab, 0x9c, 0xca, 0x85, 0x7d, 0x37, 0x7d, 0x95, 0x2a, 0x7b, 0x67, 0xbb, 0xa7, 0xed, + 0x72, 0xa7, 0x5f, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x98, 0xf7, 0xa0, 0x21, 0x03, 0x00, + 0x00, } diff --git a/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.go b/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.go index 737c5a3d9..5e897b2a0 100644 --- a/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.go +++ b/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.go @@ -47,7 +47,7 @@ func (x SinglePropertyFilter_ComparisonOperator) String() string { } func (SinglePropertyFilter_ComparisonOperator) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{28, 0} + return fileDescriptor_275951237ff4368a, []int{30, 0} } type PaginationOptions_SortOrder int32 @@ -72,7 +72,7 @@ func (x PaginationOptions_SortOrder) String() string { } func (PaginationOptions_SortOrder) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{34, 0} + return fileDescriptor_275951237ff4368a, []int{36, 0} } type PaginationOptions_SortKey int32 @@ -94,7 +94,7 @@ func (x PaginationOptions_SortKey) String() string { } func (PaginationOptions_SortKey) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{34, 1} + return fileDescriptor_275951237ff4368a, []int{36, 1} } // @@ -746,6 +746,151 @@ func (m *ListDatasetsResponse) GetNextToken() string { return "" } +// +// Request message for updating an Artifact and overwriting its associated ArtifactData. +type UpdateArtifactRequest struct { + // ID of dataset the artifact is associated with + Dataset *DatasetID `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` + // Either ID of artifact or name of tag to retrieve existing artifact from + // + // Types that are valid to be assigned to QueryHandle: + // *UpdateArtifactRequest_ArtifactId + // *UpdateArtifactRequest_TagName + QueryHandle isUpdateArtifactRequest_QueryHandle `protobuf_oneof:"query_handle"` + // List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing + // ArtifactData entries will be removed from the underlying blob storage and database. + Data []*ArtifactData `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateArtifactRequest) Reset() { *m = UpdateArtifactRequest{} } +func (m *UpdateArtifactRequest) String() string { return proto.CompactTextString(m) } +func (*UpdateArtifactRequest) ProtoMessage() {} +func (*UpdateArtifactRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_275951237ff4368a, []int{14} +} + +func (m *UpdateArtifactRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateArtifactRequest.Unmarshal(m, b) +} +func (m *UpdateArtifactRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateArtifactRequest.Marshal(b, m, deterministic) +} +func (m *UpdateArtifactRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateArtifactRequest.Merge(m, src) +} +func (m *UpdateArtifactRequest) XXX_Size() int { + return xxx_messageInfo_UpdateArtifactRequest.Size(m) +} +func (m *UpdateArtifactRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateArtifactRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateArtifactRequest proto.InternalMessageInfo + +func (m *UpdateArtifactRequest) GetDataset() *DatasetID { + if m != nil { + return m.Dataset + } + return nil +} + +type isUpdateArtifactRequest_QueryHandle interface { + isUpdateArtifactRequest_QueryHandle() +} + +type UpdateArtifactRequest_ArtifactId struct { + ArtifactId string `protobuf:"bytes,2,opt,name=artifact_id,json=artifactId,proto3,oneof"` +} + +type UpdateArtifactRequest_TagName struct { + TagName string `protobuf:"bytes,3,opt,name=tag_name,json=tagName,proto3,oneof"` +} + +func (*UpdateArtifactRequest_ArtifactId) isUpdateArtifactRequest_QueryHandle() {} + +func (*UpdateArtifactRequest_TagName) isUpdateArtifactRequest_QueryHandle() {} + +func (m *UpdateArtifactRequest) GetQueryHandle() isUpdateArtifactRequest_QueryHandle { + if m != nil { + return m.QueryHandle + } + return nil +} + +func (m *UpdateArtifactRequest) GetArtifactId() string { + if x, ok := m.GetQueryHandle().(*UpdateArtifactRequest_ArtifactId); ok { + return x.ArtifactId + } + return "" +} + +func (m *UpdateArtifactRequest) GetTagName() string { + if x, ok := m.GetQueryHandle().(*UpdateArtifactRequest_TagName); ok { + return x.TagName + } + return "" +} + +func (m *UpdateArtifactRequest) GetData() []*ArtifactData { + if m != nil { + return m.Data + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*UpdateArtifactRequest) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*UpdateArtifactRequest_ArtifactId)(nil), + (*UpdateArtifactRequest_TagName)(nil), + } +} + +// +// Response message for updating an Artifact. +type UpdateArtifactResponse struct { + // The unique ID of the artifact updated + ArtifactId string `protobuf:"bytes,1,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateArtifactResponse) Reset() { *m = UpdateArtifactResponse{} } +func (m *UpdateArtifactResponse) String() string { return proto.CompactTextString(m) } +func (*UpdateArtifactResponse) ProtoMessage() {} +func (*UpdateArtifactResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_275951237ff4368a, []int{15} +} + +func (m *UpdateArtifactResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateArtifactResponse.Unmarshal(m, b) +} +func (m *UpdateArtifactResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateArtifactResponse.Marshal(b, m, deterministic) +} +func (m *UpdateArtifactResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateArtifactResponse.Merge(m, src) +} +func (m *UpdateArtifactResponse) XXX_Size() int { + return xxx_messageInfo_UpdateArtifactResponse.Size(m) +} +func (m *UpdateArtifactResponse) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateArtifactResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateArtifactResponse proto.InternalMessageInfo + +func (m *UpdateArtifactResponse) GetArtifactId() string { + if m != nil { + return m.ArtifactId + } + return "" +} + // // ReservationID message that is composed of several string fields. type ReservationID struct { @@ -760,7 +905,7 @@ func (m *ReservationID) Reset() { *m = ReservationID{} } func (m *ReservationID) String() string { return proto.CompactTextString(m) } func (*ReservationID) ProtoMessage() {} func (*ReservationID) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{14} + return fileDescriptor_275951237ff4368a, []int{16} } func (m *ReservationID) XXX_Unmarshal(b []byte) error { @@ -809,7 +954,7 @@ func (m *GetOrExtendReservationRequest) Reset() { *m = GetOrExtendReserv func (m *GetOrExtendReservationRequest) String() string { return proto.CompactTextString(m) } func (*GetOrExtendReservationRequest) ProtoMessage() {} func (*GetOrExtendReservationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{15} + return fileDescriptor_275951237ff4368a, []int{17} } func (m *GetOrExtendReservationRequest) XXX_Unmarshal(b []byte) error { @@ -867,7 +1012,7 @@ func (m *Reservation) Reset() { *m = Reservation{} } func (m *Reservation) String() string { return proto.CompactTextString(m) } func (*Reservation) ProtoMessage() {} func (*Reservation) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{16} + return fileDescriptor_275951237ff4368a, []int{18} } func (m *Reservation) XXX_Unmarshal(b []byte) error { @@ -935,7 +1080,7 @@ func (m *GetOrExtendReservationResponse) Reset() { *m = GetOrExtendReser func (m *GetOrExtendReservationResponse) String() string { return proto.CompactTextString(m) } func (*GetOrExtendReservationResponse) ProtoMessage() {} func (*GetOrExtendReservationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{17} + return fileDescriptor_275951237ff4368a, []int{19} } func (m *GetOrExtendReservationResponse) XXX_Unmarshal(b []byte) error { @@ -976,7 +1121,7 @@ func (m *ReleaseReservationRequest) Reset() { *m = ReleaseReservationReq func (m *ReleaseReservationRequest) String() string { return proto.CompactTextString(m) } func (*ReleaseReservationRequest) ProtoMessage() {} func (*ReleaseReservationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{18} + return fileDescriptor_275951237ff4368a, []int{20} } func (m *ReleaseReservationRequest) XXX_Unmarshal(b []byte) error { @@ -1022,7 +1167,7 @@ func (m *ReleaseReservationResponse) Reset() { *m = ReleaseReservationRe func (m *ReleaseReservationResponse) String() string { return proto.CompactTextString(m) } func (*ReleaseReservationResponse) ProtoMessage() {} func (*ReleaseReservationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{19} + return fileDescriptor_275951237ff4368a, []int{21} } func (m *ReleaseReservationResponse) XXX_Unmarshal(b []byte) error { @@ -1058,7 +1203,7 @@ func (m *Dataset) Reset() { *m = Dataset{} } func (m *Dataset) String() string { return proto.CompactTextString(m) } func (*Dataset) ProtoMessage() {} func (*Dataset) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{20} + return fileDescriptor_275951237ff4368a, []int{22} } func (m *Dataset) XXX_Unmarshal(b []byte) error { @@ -1114,7 +1259,7 @@ func (m *Partition) Reset() { *m = Partition{} } func (m *Partition) String() string { return proto.CompactTextString(m) } func (*Partition) ProtoMessage() {} func (*Partition) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{21} + return fileDescriptor_275951237ff4368a, []int{23} } func (m *Partition) XXX_Unmarshal(b []byte) error { @@ -1166,7 +1311,7 @@ func (m *DatasetID) Reset() { *m = DatasetID{} } func (m *DatasetID) String() string { return proto.CompactTextString(m) } func (*DatasetID) ProtoMessage() {} func (*DatasetID) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{22} + return fileDescriptor_275951237ff4368a, []int{24} } func (m *DatasetID) XXX_Unmarshal(b []byte) error { @@ -1241,7 +1386,7 @@ func (m *Artifact) Reset() { *m = Artifact{} } func (m *Artifact) String() string { return proto.CompactTextString(m) } func (*Artifact) ProtoMessage() {} func (*Artifact) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{23} + return fileDescriptor_275951237ff4368a, []int{25} } func (m *Artifact) XXX_Unmarshal(b []byte) error { @@ -1325,7 +1470,7 @@ func (m *ArtifactData) Reset() { *m = ArtifactData{} } func (m *ArtifactData) String() string { return proto.CompactTextString(m) } func (*ArtifactData) ProtoMessage() {} func (*ArtifactData) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{24} + return fileDescriptor_275951237ff4368a, []int{26} } func (m *ArtifactData) XXX_Unmarshal(b []byte) error { @@ -1376,7 +1521,7 @@ func (m *Tag) Reset() { *m = Tag{} } func (m *Tag) String() string { return proto.CompactTextString(m) } func (*Tag) ProtoMessage() {} func (*Tag) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{25} + return fileDescriptor_275951237ff4368a, []int{27} } func (m *Tag) XXX_Unmarshal(b []byte) error { @@ -1431,7 +1576,7 @@ func (m *Metadata) Reset() { *m = Metadata{} } func (m *Metadata) String() string { return proto.CompactTextString(m) } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{26} + return fileDescriptor_275951237ff4368a, []int{28} } func (m *Metadata) XXX_Unmarshal(b []byte) error { @@ -1471,7 +1616,7 @@ func (m *FilterExpression) Reset() { *m = FilterExpression{} } func (m *FilterExpression) String() string { return proto.CompactTextString(m) } func (*FilterExpression) ProtoMessage() {} func (*FilterExpression) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{27} + return fileDescriptor_275951237ff4368a, []int{29} } func (m *FilterExpression) XXX_Unmarshal(b []byte) error { @@ -1517,7 +1662,7 @@ func (m *SinglePropertyFilter) Reset() { *m = SinglePropertyFilter{} } func (m *SinglePropertyFilter) String() string { return proto.CompactTextString(m) } func (*SinglePropertyFilter) ProtoMessage() {} func (*SinglePropertyFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{28} + return fileDescriptor_275951237ff4368a, []int{30} } func (m *SinglePropertyFilter) XXX_Unmarshal(b []byte) error { @@ -1634,7 +1779,7 @@ func (m *ArtifactPropertyFilter) Reset() { *m = ArtifactPropertyFilter{} func (m *ArtifactPropertyFilter) String() string { return proto.CompactTextString(m) } func (*ArtifactPropertyFilter) ProtoMessage() {} func (*ArtifactPropertyFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{29} + return fileDescriptor_275951237ff4368a, []int{31} } func (m *ArtifactPropertyFilter) XXX_Unmarshal(b []byte) error { @@ -1700,7 +1845,7 @@ func (m *TagPropertyFilter) Reset() { *m = TagPropertyFilter{} } func (m *TagPropertyFilter) String() string { return proto.CompactTextString(m) } func (*TagPropertyFilter) ProtoMessage() {} func (*TagPropertyFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{30} + return fileDescriptor_275951237ff4368a, []int{32} } func (m *TagPropertyFilter) XXX_Unmarshal(b []byte) error { @@ -1766,7 +1911,7 @@ func (m *PartitionPropertyFilter) Reset() { *m = PartitionPropertyFilter func (m *PartitionPropertyFilter) String() string { return proto.CompactTextString(m) } func (*PartitionPropertyFilter) ProtoMessage() {} func (*PartitionPropertyFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{31} + return fileDescriptor_275951237ff4368a, []int{33} } func (m *PartitionPropertyFilter) XXX_Unmarshal(b []byte) error { @@ -1830,7 +1975,7 @@ func (m *KeyValuePair) Reset() { *m = KeyValuePair{} } func (m *KeyValuePair) String() string { return proto.CompactTextString(m) } func (*KeyValuePair) ProtoMessage() {} func (*KeyValuePair) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{32} + return fileDescriptor_275951237ff4368a, []int{34} } func (m *KeyValuePair) XXX_Unmarshal(b []byte) error { @@ -1882,7 +2027,7 @@ func (m *DatasetPropertyFilter) Reset() { *m = DatasetPropertyFilter{} } func (m *DatasetPropertyFilter) String() string { return proto.CompactTextString(m) } func (*DatasetPropertyFilter) ProtoMessage() {} func (*DatasetPropertyFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{33} + return fileDescriptor_275951237ff4368a, []int{35} } func (m *DatasetPropertyFilter) XXX_Unmarshal(b []byte) error { @@ -1995,7 +2140,7 @@ func (m *PaginationOptions) Reset() { *m = PaginationOptions{} } func (m *PaginationOptions) String() string { return proto.CompactTextString(m) } func (*PaginationOptions) ProtoMessage() {} func (*PaginationOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_275951237ff4368a, []int{34} + return fileDescriptor_275951237ff4368a, []int{36} } func (m *PaginationOptions) XXX_Unmarshal(b []byte) error { @@ -2062,6 +2207,8 @@ func init() { proto.RegisterType((*ListArtifactsResponse)(nil), "datacatalog.ListArtifactsResponse") proto.RegisterType((*ListDatasetsRequest)(nil), "datacatalog.ListDatasetsRequest") proto.RegisterType((*ListDatasetsResponse)(nil), "datacatalog.ListDatasetsResponse") + proto.RegisterType((*UpdateArtifactRequest)(nil), "datacatalog.UpdateArtifactRequest") + proto.RegisterType((*UpdateArtifactResponse)(nil), "datacatalog.UpdateArtifactResponse") proto.RegisterType((*ReservationID)(nil), "datacatalog.ReservationID") proto.RegisterType((*GetOrExtendReservationRequest)(nil), "datacatalog.GetOrExtendReservationRequest") proto.RegisterType((*Reservation)(nil), "datacatalog.Reservation") @@ -2091,108 +2238,112 @@ func init() { } var fileDescriptor_275951237ff4368a = []byte{ - // 1616 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x5b, 0x53, 0xdb, 0xc6, - 0x17, 0x47, 0x36, 0xb1, 0xd1, 0x31, 0x76, 0xcc, 0x06, 0x88, 0x70, 0x12, 0xe2, 0x28, 0x19, 0xfe, - 0x4c, 0xfe, 0x8d, 0x9d, 0x42, 0x92, 0x69, 0x92, 0xde, 0x0c, 0x76, 0xc0, 0x25, 0x80, 0x23, 0x08, - 0x33, 0xbd, 0xcc, 0x78, 0x16, 0xb4, 0x28, 0x2a, 0xb2, 0xa4, 0x48, 0x4b, 0x8a, 0x9f, 0x3a, 0x7d, - 0x6d, 0xfb, 0xd6, 0x99, 0x7e, 0x81, 0x3e, 0xf6, 0x43, 0xf4, 0x31, 0x6f, 0xfd, 0x4c, 0x9d, 0x95, - 0x56, 0xb2, 0x24, 0xcb, 0xe0, 0xf0, 0xd0, 0x99, 0xbe, 0x78, 0xbc, 0xbb, 0xe7, 0xfc, 0xf6, 0x5c, - 0xf6, 0xdc, 0x04, 0x4b, 0xc7, 0x46, 0x9f, 0x12, 0x5d, 0x35, 0xea, 0x2a, 0xa6, 0xf8, 0x08, 0x53, - 0x6c, 0x58, 0x5a, 0xf4, 0x7f, 0xcd, 0x76, 0x2c, 0x6a, 0xa1, 0x42, 0x64, 0xab, 0x72, 0x33, 0x64, - 0x3a, 0xb2, 0x1c, 0x52, 0x37, 0x74, 0x4a, 0x1c, 0x6c, 0xb8, 0x3e, 0x69, 0x65, 0x51, 0xb3, 0x2c, - 0xcd, 0x20, 0x75, 0x6f, 0x75, 0x78, 0x7a, 0x5c, 0x57, 0x4f, 0x1d, 0x4c, 0x75, 0xcb, 0xe4, 0xe7, - 0xb7, 0x93, 0xe7, 0x54, 0xef, 0x11, 0x97, 0xe2, 0x9e, 0xed, 0x13, 0xc8, 0x2f, 0x60, 0x76, 0xdd, - 0x21, 0x98, 0x92, 0x26, 0xa6, 0xd8, 0x25, 0x54, 0x21, 0x6f, 0x4f, 0x89, 0x4b, 0x51, 0x0d, 0xf2, - 0xaa, 0xbf, 0x23, 0x09, 0x55, 0x61, 0xb9, 0xb0, 0x32, 0x5b, 0x8b, 0x0a, 0x1a, 0x50, 0x07, 0x44, - 0xf2, 0x75, 0x98, 0x4b, 0xe0, 0xb8, 0xb6, 0x65, 0xba, 0x44, 0x6e, 0xc1, 0xcc, 0x06, 0xa1, 0x09, - 0xf4, 0x87, 0x49, 0xf4, 0xf9, 0x34, 0xf4, 0x76, 0x73, 0x80, 0xdf, 0x04, 0x14, 0x85, 0xf1, 0xc1, - 0x3f, 0x58, 0xca, 0xdf, 0x05, 0x0f, 0xa6, 0xe1, 0x50, 0xfd, 0x18, 0x1f, 0x5d, 0x5e, 0x1c, 0x74, - 0x07, 0x0a, 0x98, 0x83, 0x74, 0x75, 0x55, 0xca, 0x54, 0x85, 0x65, 0x71, 0x73, 0x42, 0x81, 0x60, - 0xb3, 0xad, 0xa2, 0x1b, 0x30, 0x45, 0xb1, 0xd6, 0x35, 0x71, 0x8f, 0x48, 0x59, 0x7e, 0x9e, 0xa7, - 0x58, 0xdb, 0xc1, 0x3d, 0xb2, 0x56, 0x82, 0xe9, 0xb7, 0xa7, 0xc4, 0xe9, 0x77, 0xdf, 0x60, 0x53, - 0x35, 0x88, 0xbc, 0x09, 0xd7, 0x62, 0x72, 0x71, 0xfd, 0x3e, 0x86, 0xa9, 0x00, 0x91, 0x4b, 0x36, - 0x17, 0x93, 0x2c, 0x64, 0x08, 0xc9, 0xe4, 0xaf, 0x02, 0x47, 0x24, 0x95, 0xbc, 0x04, 0x96, 0x04, - 0xf3, 0x49, 0x2c, 0xee, 0xd5, 0x55, 0x28, 0x36, 0x54, 0x75, 0x1f, 0x6b, 0x01, 0xba, 0x0c, 0x59, - 0x8a, 0x35, 0x0e, 0x5c, 0x8e, 0x01, 0x33, 0x2a, 0x76, 0x28, 0x97, 0xa1, 0x14, 0x30, 0x71, 0x98, - 0xbf, 0x04, 0x98, 0x7d, 0xa9, 0xbb, 0xa1, 0xe2, 0xee, 0xe5, 0x3d, 0xf2, 0x18, 0x72, 0xc7, 0xba, - 0x41, 0x89, 0xe3, 0x39, 0xa3, 0xb0, 0x72, 0x2b, 0xc6, 0xf0, 0xc2, 0x3b, 0x6a, 0x9d, 0xd9, 0x0e, - 0x71, 0x5d, 0xdd, 0x32, 0x15, 0x4e, 0x8c, 0x3e, 0x07, 0xb0, 0xb1, 0xa6, 0x9b, 0x5e, 0xd0, 0x78, - 0x7e, 0x2a, 0xac, 0x2c, 0xc6, 0x58, 0x3b, 0xe1, 0xf1, 0xae, 0xcd, 0x7e, 0x5d, 0x25, 0xc2, 0x21, - 0x9f, 0xc0, 0x5c, 0x42, 0x01, 0xee, 0xba, 0x55, 0x10, 0x03, 0x3b, 0xba, 0x92, 0x50, 0xcd, 0x8e, - 0xb6, 0xf7, 0x80, 0x0e, 0xdd, 0x02, 0x30, 0xc9, 0x19, 0xed, 0x52, 0xeb, 0x84, 0x98, 0xfe, 0xab, - 0x52, 0x44, 0xb6, 0xb3, 0xcf, 0x36, 0xe4, 0x5f, 0x05, 0xb8, 0xc6, 0x6e, 0xe3, 0xea, 0x87, 0xd6, - 0x1a, 0xe8, 0x2e, 0x5c, 0x5e, 0xf7, 0xcc, 0x07, 0xeb, 0xae, 0xf9, 0xce, 0x1b, 0x48, 0xc3, 0x55, - 0x7f, 0x08, 0x53, 0xdc, 0x2b, 0x81, 0xe6, 0xe9, 0x61, 0x19, 0x52, 0x5d, 0xa4, 0x37, 0x86, 0xa2, - 0x42, 0x5c, 0xe2, 0xbc, 0xf3, 0xee, 0x6d, 0x37, 0xd1, 0x63, 0x00, 0xce, 0xcb, 0xa2, 0xef, 0xfc, - 0x17, 0x22, 0x72, 0xca, 0xb6, 0x8a, 0x16, 0x22, 0x21, 0xe9, 0x5f, 0x12, 0x04, 0xa4, 0xfc, 0x5e, - 0x80, 0x5b, 0x1b, 0x84, 0xee, 0x3a, 0xad, 0x33, 0x4a, 0x4c, 0x35, 0x72, 0x5d, 0x60, 0xe4, 0x06, - 0x94, 0x9c, 0xc1, 0xee, 0xe0, 0xde, 0x4a, 0xec, 0xde, 0x98, 0x9c, 0x4a, 0x31, 0xc2, 0xe1, 0xdf, - 0x6f, 0xfd, 0x60, 0x12, 0x27, 0x4c, 0x19, 0x4a, 0xde, 0x5b, 0xb7, 0x55, 0xb4, 0x09, 0xe8, 0x0d, - 0xc1, 0x0e, 0x3d, 0x24, 0x98, 0x76, 0x75, 0x93, 0x32, 0x2e, 0x83, 0xbf, 0xc7, 0x85, 0x9a, 0x9f, - 0xc5, 0x6b, 0x41, 0x16, 0xaf, 0x35, 0x79, 0x96, 0x57, 0x66, 0x42, 0xa6, 0x36, 0xe7, 0x91, 0xff, - 0xc8, 0x40, 0x21, 0x22, 0xc5, 0x7f, 0x45, 0x6e, 0xf4, 0x14, 0x80, 0x9c, 0xd9, 0xba, 0x43, 0xdc, - 0x2e, 0xa6, 0xd2, 0x24, 0x97, 0x31, 0x89, 0xb0, 0x1f, 0xd4, 0x2f, 0x45, 0xe4, 0xd4, 0x0d, 0x2f, - 0xb5, 0xf5, 0x08, 0xc5, 0x4c, 0x1f, 0x29, 0x97, 0x92, 0xda, 0xb6, 0xf9, 0xa1, 0x12, 0x92, 0xc9, - 0xdf, 0xc1, 0xe2, 0x28, 0x77, 0xf3, 0x57, 0xfc, 0x0c, 0x0a, 0x11, 0x2b, 0x70, 0xa3, 0x49, 0xa3, - 0x8c, 0xa6, 0x44, 0x89, 0xe5, 0x3e, 0x2c, 0x28, 0xc4, 0x20, 0xd8, 0x25, 0xff, 0xf6, 0x43, 0x92, - 0x6f, 0x42, 0x25, 0xed, 0x6a, 0x9e, 0x70, 0x7f, 0x16, 0x20, 0xcf, 0x43, 0x03, 0x2d, 0x41, 0xe6, - 0xc2, 0xe0, 0xc9, 0xe8, 0x6a, 0xcc, 0xba, 0x99, 0xb1, 0xac, 0x8b, 0xee, 0x41, 0xd1, 0x66, 0x59, - 0x8d, 0xdd, 0xbd, 0x45, 0xfa, 0xae, 0x94, 0xad, 0x66, 0x97, 0x45, 0x25, 0xbe, 0x29, 0xaf, 0x82, - 0xd8, 0x09, 0x36, 0x50, 0x19, 0xb2, 0x27, 0xa4, 0xef, 0x89, 0x23, 0x2a, 0xec, 0x2f, 0x9a, 0x85, - 0x2b, 0xef, 0xb0, 0x71, 0x1a, 0x84, 0xaa, 0xbf, 0x90, 0x7f, 0x04, 0x31, 0x14, 0x0f, 0x49, 0x90, - 0xb7, 0x1d, 0xeb, 0x7b, 0xc2, 0x4b, 0x9a, 0xa8, 0x04, 0x4b, 0x84, 0x60, 0x32, 0x12, 0xe6, 0xde, - 0x7f, 0x34, 0x0f, 0x39, 0xd5, 0xea, 0x61, 0xdd, 0xcf, 0xf3, 0xa2, 0xc2, 0x57, 0x0c, 0xe5, 0x1d, - 0x71, 0x58, 0x6a, 0xf4, 0x9e, 0x9d, 0xa8, 0x04, 0x4b, 0x86, 0xf2, 0xfa, 0x75, 0xbb, 0x29, 0x5d, - 0xf1, 0x51, 0xd8, 0x7f, 0xf9, 0x7d, 0x06, 0xa6, 0x82, 0xdc, 0x8d, 0x4a, 0xa1, 0x0d, 0x45, 0xcf, - 0x56, 0x91, 0xba, 0x95, 0x19, 0xaf, 0x6e, 0x3d, 0x80, 0x49, 0xcf, 0xb2, 0x59, 0x2f, 0x51, 0x2e, - 0xa4, 0x96, 0x08, 0xc6, 0xa6, 0x78, 0x64, 0x31, 0x67, 0x4c, 0x8e, 0xe7, 0x8c, 0x27, 0x2c, 0xcd, - 0x73, 0x33, 0xbb, 0xd2, 0x15, 0xef, 0x9e, 0xf9, 0x44, 0x9a, 0xe7, 0xc7, 0x4a, 0x84, 0x12, 0xdd, - 0x83, 0x49, 0x8a, 0x35, 0x57, 0xca, 0x79, 0x1c, 0xc3, 0x35, 0xdd, 0x3b, 0x65, 0x61, 0x7b, 0xe4, - 0xf5, 0x08, 0x2a, 0x0b, 0xdb, 0xfc, 0xc5, 0x61, 0xcb, 0xa9, 0x1b, 0x54, 0xee, 0xc0, 0x74, 0x54, - 0xc3, 0xd0, 0x67, 0x42, 0xc4, 0x67, 0x1f, 0x45, 0x1f, 0x01, 0x93, 0x3b, 0x68, 0x87, 0x6b, 0xac, - 0x1d, 0xae, 0xbd, 0xf4, 0xdb, 0xe1, 0xe0, 0x71, 0x18, 0x90, 0xdd, 0xc7, 0x5a, 0x2a, 0xd0, 0xed, - 0x94, 0x8e, 0x2d, 0xd6, 0xaf, 0x45, 0x5c, 0x97, 0x1d, 0xaf, 0x27, 0xfd, 0x49, 0x80, 0xa9, 0xc0, - 0xde, 0xe8, 0x19, 0xe4, 0x4f, 0x48, 0xbf, 0xdb, 0xc3, 0x36, 0xaf, 0x79, 0x77, 0x52, 0xfd, 0x52, - 0xdb, 0x22, 0xfd, 0x6d, 0x6c, 0xb7, 0x4c, 0xea, 0xf4, 0x95, 0xdc, 0x89, 0xb7, 0xa8, 0x3c, 0x85, - 0x42, 0x64, 0x7b, 0xdc, 0x50, 0x78, 0x96, 0xf9, 0x44, 0x90, 0x77, 0xa1, 0x9c, 0xac, 0xef, 0xe8, - 0x39, 0xe4, 0xfd, 0x0a, 0xef, 0xa6, 0x8a, 0xb2, 0xa7, 0x9b, 0x9a, 0x41, 0x3a, 0x8e, 0x65, 0x13, - 0x87, 0xf6, 0x7d, 0x6e, 0x25, 0xe0, 0x90, 0xff, 0xce, 0xc2, 0x6c, 0x1a, 0x05, 0xfa, 0x02, 0x80, - 0x15, 0xcf, 0x58, 0xa3, 0xb1, 0x98, 0x7c, 0x14, 0x71, 0x9e, 0xcd, 0x09, 0x45, 0xa4, 0x58, 0xe3, - 0x00, 0xaf, 0xa0, 0x1c, 0xbe, 0xae, 0x6e, 0xac, 0x57, 0xbb, 0x97, 0xfe, 0x1a, 0x87, 0xc0, 0xae, - 0x86, 0xfc, 0x1c, 0x72, 0x07, 0xae, 0x86, 0x4e, 0xe5, 0x88, 0xbe, 0xef, 0xee, 0xa6, 0xc6, 0xd1, - 0x10, 0x60, 0x29, 0xe0, 0xe6, 0x78, 0x5b, 0x50, 0x0a, 0xfa, 0x0a, 0x0e, 0xe7, 0xc7, 0x98, 0x9c, - 0xf6, 0x14, 0x86, 0xd0, 0x8a, 0x9c, 0x97, 0x83, 0x75, 0x60, 0x8a, 0x11, 0x60, 0x6a, 0x39, 0x12, - 0x54, 0x85, 0xe5, 0xd2, 0xca, 0xa3, 0x0b, 0xfd, 0x50, 0x5b, 0xb7, 0x7a, 0x36, 0x76, 0x74, 0x97, - 0x75, 0x5c, 0x3e, 0xaf, 0x12, 0xa2, 0xc8, 0x55, 0x40, 0xc3, 0xe7, 0x08, 0x20, 0xd7, 0x7a, 0xf5, - 0xba, 0xf1, 0x72, 0xaf, 0x3c, 0xb1, 0x36, 0x03, 0x57, 0x6d, 0x0e, 0xc8, 0x35, 0x90, 0x37, 0x60, - 0x3e, 0x5d, 0xff, 0xe4, 0x10, 0x23, 0x0c, 0x0f, 0x31, 0x6b, 0x00, 0x53, 0x01, 0x9e, 0xfc, 0x29, - 0xcc, 0x0c, 0x79, 0x38, 0x36, 0xe5, 0x08, 0xc9, 0x29, 0x27, 0xca, 0xfd, 0x2d, 0x5c, 0x1f, 0xe1, - 0x58, 0xf4, 0xc8, 0x0f, 0x1d, 0xd6, 0x38, 0x08, 0xbc, 0x71, 0x88, 0xda, 0x69, 0x8b, 0xf4, 0x0f, - 0xd8, 0x7b, 0xef, 0x60, 0x9d, 0x59, 0x99, 0x05, 0xcd, 0x01, 0x36, 0x62, 0xe0, 0x4f, 0x60, 0x3a, - 0x4a, 0x35, 0x76, 0x31, 0xf9, 0x45, 0x80, 0xb9, 0x54, 0x6f, 0xa2, 0x4a, 0xa2, 0xb2, 0x30, 0xb5, - 0x82, 0xda, 0x32, 0x1b, 0xad, 0x2d, 0x9b, 0x13, 0x3c, 0xc1, 0x48, 0xf1, 0xea, 0xc2, 0x24, 0xe5, - 0xf5, 0xa5, 0x92, 0xa8, 0x2f, 0x0c, 0x8b, 0x6f, 0xc4, 0xb4, 0xf8, 0x2d, 0x03, 0x33, 0x43, 0x1d, - 0x37, 0x93, 0xdc, 0xd0, 0x7b, 0xba, 0x2f, 0x47, 0x51, 0xf1, 0x17, 0x6c, 0x37, 0xda, 0x2c, 0xfb, - 0x0b, 0xf4, 0x25, 0xe4, 0x5d, 0xcb, 0xa1, 0x5b, 0xa4, 0xef, 0x09, 0x51, 0x5a, 0x59, 0x3a, 0xbf, - 0x9d, 0xaf, 0xed, 0xf9, 0xd4, 0x4a, 0xc0, 0x86, 0x5e, 0x80, 0xc8, 0xfe, 0xee, 0x3a, 0x2a, 0x7f, - 0xfc, 0xa5, 0x95, 0xe5, 0x31, 0x30, 0x3c, 0x7a, 0x65, 0xc0, 0x2a, 0xdf, 0x07, 0x31, 0xdc, 0x47, - 0x25, 0x80, 0x66, 0x6b, 0x6f, 0xbd, 0xb5, 0xd3, 0x6c, 0xef, 0x6c, 0x94, 0x27, 0x50, 0x11, 0xc4, - 0x46, 0xb8, 0x14, 0xe4, 0x9b, 0x90, 0xe7, 0x72, 0xa0, 0x19, 0x28, 0xae, 0x2b, 0xad, 0xc6, 0x7e, - 0x7b, 0x77, 0xa7, 0xbb, 0xdf, 0xde, 0x6e, 0x95, 0x27, 0x56, 0xfe, 0xcc, 0x41, 0x81, 0xf9, 0x68, - 0xdd, 0x17, 0x00, 0x1d, 0x40, 0x31, 0xf6, 0xa5, 0x01, 0xc5, 0xb3, 0x5b, 0xda, 0xd7, 0x8c, 0x8a, - 0x7c, 0x1e, 0x09, 0xef, 0xf7, 0xb6, 0x01, 0x06, 0x5f, 0x18, 0x50, 0x3c, 0xb3, 0x0d, 0x7d, 0xc1, - 0xa8, 0xdc, 0x1e, 0x79, 0xce, 0xe1, 0xbe, 0x86, 0x52, 0x7c, 0x76, 0x46, 0x69, 0x42, 0x24, 0x86, - 0xf4, 0xca, 0xdd, 0x73, 0x69, 0x38, 0x74, 0x07, 0x0a, 0x91, 0x8f, 0x05, 0x68, 0x48, 0x94, 0x24, - 0x68, 0x75, 0x34, 0x01, 0x47, 0x6c, 0x40, 0xce, 0x9f, 0xcc, 0x51, 0xbc, 0x09, 0x8d, 0xcd, 0xf8, - 0x95, 0x1b, 0xa9, 0x67, 0x1c, 0xe2, 0x00, 0x8a, 0xb1, 0x41, 0x38, 0xe1, 0x96, 0xb4, 0x29, 0x3f, - 0xe1, 0x96, 0xf4, 0x39, 0x7a, 0x0f, 0xa6, 0xa3, 0x43, 0x26, 0xaa, 0x0e, 0xf1, 0x24, 0xa6, 0xe1, - 0xca, 0x9d, 0x73, 0x28, 0x38, 0xe8, 0x5b, 0x98, 0x4f, 0xef, 0xfe, 0xd1, 0xfd, 0xa4, 0xad, 0x46, - 0x4f, 0x84, 0x95, 0xff, 0x8f, 0x45, 0xcb, 0xaf, 0x24, 0x80, 0x86, 0xfb, 0x72, 0xb4, 0x94, 0xe8, - 0xf9, 0x47, 0xcc, 0x0c, 0x95, 0xff, 0x5d, 0x48, 0xe7, 0x5f, 0xb3, 0xf6, 0xd9, 0x37, 0xcf, 0x35, - 0x9d, 0xbe, 0x39, 0x3d, 0xac, 0x1d, 0x59, 0xbd, 0xba, 0xd7, 0x2c, 0x59, 0x8e, 0x56, 0x0f, 0x3f, - 0x22, 0x6a, 0xc4, 0xac, 0xdb, 0x87, 0x0f, 0x34, 0xab, 0x9e, 0xf6, 0x31, 0xf2, 0x30, 0xe7, 0x75, - 0x6c, 0xab, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x55, 0xcd, 0xf1, 0xcd, 0xab, 0x14, 0x00, 0x00, + // 1669 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4b, 0x6f, 0xdb, 0xc6, + 0x16, 0x36, 0x25, 0x47, 0x32, 0x8f, 0x2c, 0x45, 0x9e, 0xd8, 0x8e, 0xac, 0x24, 0xb6, 0xc2, 0x04, + 0xbe, 0x46, 0xee, 0x8d, 0x94, 0x6b, 0x27, 0xc1, 0x4d, 0x72, 0xfb, 0x90, 0x2d, 0xc5, 0x56, 0x1d, + 0x3f, 0x42, 0x3f, 0x80, 0x3e, 0x00, 0x61, 0x6c, 0x8e, 0x19, 0xd6, 0x94, 0xc8, 0x90, 0xe3, 0xd4, + 0x5a, 0x15, 0xdd, 0x74, 0xd1, 0x76, 0x57, 0xa0, 0x7f, 0xa0, 0x3f, 0xa4, 0xcb, 0x74, 0xd5, 0xdf, + 0x54, 0x0c, 0x39, 0x43, 0x91, 0x14, 0x65, 0x2b, 0x5e, 0x04, 0xe8, 0x86, 0xe0, 0xcc, 0x9c, 0xf3, + 0xcd, 0x79, 0xcc, 0x99, 0x73, 0xce, 0xc0, 0xe2, 0x89, 0xd9, 0xa3, 0xc4, 0xd0, 0xcc, 0x9a, 0x86, + 0x29, 0x3e, 0xc6, 0x14, 0x9b, 0x96, 0x1e, 0xfe, 0xaf, 0xda, 0x8e, 0x45, 0x2d, 0x94, 0x0b, 0x4d, + 0x95, 0x6f, 0x07, 0x4c, 0xc7, 0x96, 0x43, 0x6a, 0xa6, 0x41, 0x89, 0x83, 0x4d, 0xd7, 0x27, 0x2d, + 0xcf, 0xeb, 0x96, 0xa5, 0x9b, 0xa4, 0xe6, 0x8d, 0x8e, 0xce, 0x4e, 0x6a, 0xda, 0x99, 0x83, 0xa9, + 0x61, 0x75, 0xf9, 0xfa, 0x42, 0x7c, 0x9d, 0x1a, 0x1d, 0xe2, 0x52, 0xdc, 0xb1, 0x7d, 0x02, 0xe5, + 0x25, 0x4c, 0xaf, 0x39, 0x04, 0x53, 0xd2, 0xc0, 0x14, 0xbb, 0x84, 0xaa, 0xe4, 0xed, 0x19, 0x71, + 0x29, 0xaa, 0x42, 0x56, 0xf3, 0x67, 0x4a, 0x52, 0x45, 0x5a, 0xca, 0x2d, 0x4f, 0x57, 0xc3, 0x82, + 0x0a, 0x6a, 0x41, 0xa4, 0xdc, 0x84, 0x99, 0x18, 0x8e, 0x6b, 0x5b, 0x5d, 0x97, 0x28, 0x4d, 0x98, + 0x5a, 0x27, 0x34, 0x86, 0xfe, 0x28, 0x8e, 0x3e, 0x9b, 0x84, 0xde, 0x6a, 0xf4, 0xf1, 0x1b, 0x80, + 0xc2, 0x30, 0x3e, 0xf8, 0x07, 0x4b, 0xf9, 0x9b, 0xe4, 0xc1, 0xd4, 0x1d, 0x6a, 0x9c, 0xe0, 0xe3, + 0xab, 0x8b, 0x83, 0xee, 0x42, 0x0e, 0x73, 0x90, 0xb6, 0xa1, 0x95, 0x52, 0x15, 0x69, 0x49, 0xde, + 0x18, 0x53, 0x41, 0x4c, 0xb6, 0x34, 0x74, 0x0b, 0x26, 0x28, 0xd6, 0xdb, 0x5d, 0xdc, 0x21, 0xa5, + 0x34, 0x5f, 0xcf, 0x52, 0xac, 0x6f, 0xe3, 0x0e, 0x59, 0x2d, 0xc0, 0xe4, 0xdb, 0x33, 0xe2, 0xf4, + 0xda, 0x6f, 0x70, 0x57, 0x33, 0x89, 0xb2, 0x01, 0x37, 0x22, 0x72, 0x71, 0xfd, 0xfe, 0x0b, 0x13, + 0x02, 0x91, 0x4b, 0x36, 0x13, 0x91, 0x2c, 0x60, 0x08, 0xc8, 0x94, 0x2f, 0x84, 0x23, 0xe2, 0x4a, + 0x5e, 0x01, 0xab, 0x04, 0xb3, 0x71, 0x2c, 0xee, 0xd5, 0x15, 0xc8, 0xd7, 0x35, 0x6d, 0x1f, 0xeb, + 0x02, 0x5d, 0x81, 0x34, 0xc5, 0x3a, 0x07, 0x2e, 0x46, 0x80, 0x19, 0x15, 0x5b, 0x54, 0x8a, 0x50, + 0x10, 0x4c, 0x1c, 0xe6, 0x0f, 0x09, 0xa6, 0x5f, 0x19, 0x6e, 0xa0, 0xb8, 0x7b, 0x75, 0x8f, 0x3c, + 0x81, 0xcc, 0x89, 0x61, 0x52, 0xe2, 0x78, 0xce, 0xc8, 0x2d, 0xdf, 0x89, 0x30, 0xbc, 0xf4, 0x96, + 0x9a, 0xe7, 0xb6, 0x43, 0x5c, 0xd7, 0xb0, 0xba, 0x2a, 0x27, 0x46, 0x9f, 0x02, 0xd8, 0x58, 0x37, + 0xba, 0x5e, 0xd0, 0x78, 0x7e, 0xca, 0x2d, 0xcf, 0x47, 0x58, 0x77, 0x83, 0xe5, 0x1d, 0x9b, 0x7d, + 0x5d, 0x35, 0xc4, 0xa1, 0x9c, 0xc2, 0x4c, 0x4c, 0x01, 0xee, 0xba, 0x15, 0x90, 0x85, 0x1d, 0xdd, + 0x92, 0x54, 0x49, 0x0f, 0xb7, 0x77, 0x9f, 0x0e, 0xdd, 0x01, 0xe8, 0x92, 0x73, 0xda, 0xa6, 0xd6, + 0x29, 0xe9, 0xfa, 0xa7, 0x4a, 0x95, 0xd9, 0xcc, 0x3e, 0x9b, 0x50, 0x7e, 0x91, 0xe0, 0x06, 0xdb, + 0x8d, 0xab, 0x1f, 0x58, 0xab, 0xaf, 0xbb, 0x74, 0x75, 0xdd, 0x53, 0x1f, 0xac, 0xbb, 0xee, 0x3b, + 0xaf, 0x2f, 0x0d, 0x57, 0xfd, 0x11, 0x4c, 0x70, 0xaf, 0x08, 0xcd, 0x93, 0xc3, 0x32, 0xa0, 0xba, + 0x4c, 0xef, 0x3f, 0x25, 0x98, 0x39, 0xb0, 0xb5, 0x84, 0x43, 0xfd, 0xd1, 0x23, 0x17, 0x3d, 0x84, + 0x71, 0x06, 0x55, 0x1a, 0xf7, 0x14, 0x9b, 0x4b, 0x74, 0x29, 0xdb, 0x56, 0xf5, 0xc8, 0x06, 0x02, + 0xfd, 0x19, 0xcc, 0xc6, 0x35, 0xe1, 0x56, 0x5b, 0x88, 0x0a, 0x26, 0x79, 0x46, 0x08, 0x89, 0xa5, + 0x60, 0xc8, 0xab, 0xc4, 0x25, 0xce, 0x3b, 0xcf, 0xfa, 0xad, 0x06, 0x7a, 0x02, 0xc0, 0xb5, 0x12, + 0x0c, 0xc3, 0xf5, 0x97, 0x39, 0x65, 0x4b, 0x43, 0x73, 0x21, 0xf5, 0x7c, 0x53, 0x0b, 0xe5, 0x94, + 0xf7, 0x12, 0xdc, 0x59, 0x27, 0x74, 0xc7, 0x69, 0x9e, 0x53, 0xd2, 0xd5, 0x42, 0xdb, 0x09, 0x83, + 0xd7, 0xa1, 0xe0, 0xf4, 0x67, 0xfb, 0xfb, 0x96, 0x23, 0xfb, 0x46, 0xe4, 0x54, 0xf3, 0x21, 0x0e, + 0x7f, 0x7f, 0xeb, 0xbb, 0x2e, 0x71, 0x02, 0xf3, 0xab, 0x59, 0x6f, 0xdc, 0xd2, 0xd0, 0x06, 0xa0, + 0x37, 0x04, 0x3b, 0xf4, 0x88, 0x60, 0xda, 0x36, 0xba, 0x94, 0x71, 0x99, 0x3c, 0x2a, 0xe7, 0xaa, + 0x7e, 0x2e, 0xab, 0x8a, 0x5c, 0x56, 0x6d, 0xf0, 0x5c, 0xa7, 0x4e, 0x05, 0x4c, 0x2d, 0xce, 0xa3, + 0xfc, 0x9e, 0x82, 0x5c, 0x48, 0x8a, 0x7f, 0x8a, 0xdc, 0xe8, 0x19, 0x00, 0x39, 0xb7, 0x0d, 0x87, + 0xb8, 0x6d, 0x4c, 0x4b, 0xe3, 0x5c, 0xc6, 0x38, 0xc2, 0xbe, 0xc8, 0xe2, 0xaa, 0xcc, 0xa9, 0xeb, + 0xde, 0x05, 0xdf, 0x21, 0x14, 0x7b, 0xa7, 0x33, 0x93, 0x70, 0xc1, 0x6f, 0xf1, 0x45, 0x35, 0x20, + 0x53, 0xbe, 0x81, 0xf9, 0x61, 0xee, 0xe6, 0xa7, 0xf2, 0x39, 0xe4, 0x42, 0x56, 0xe0, 0x46, 0x2b, + 0x0d, 0x33, 0x9a, 0x1a, 0x26, 0x56, 0x7a, 0x30, 0xa7, 0x12, 0x93, 0x60, 0x97, 0x7c, 0xec, 0x83, + 0xa4, 0xdc, 0x86, 0x72, 0xd2, 0xd6, 0x3c, 0xed, 0xfc, 0x24, 0x41, 0x96, 0x87, 0x06, 0x5a, 0x84, + 0xd4, 0xa5, 0xc1, 0x93, 0x32, 0xb4, 0x88, 0x75, 0x53, 0x23, 0x59, 0x17, 0xdd, 0x87, 0xbc, 0xcd, + 0xe2, 0x97, 0xed, 0xbd, 0x49, 0x7a, 0x6e, 0x29, 0x5d, 0x49, 0x2f, 0xc9, 0x6a, 0x74, 0x52, 0x59, + 0x01, 0x79, 0x57, 0x4c, 0xa0, 0x22, 0xa4, 0x4f, 0x49, 0x8f, 0x07, 0x3f, 0xfb, 0x45, 0xd3, 0x70, + 0xed, 0x1d, 0x36, 0xcf, 0x44, 0xa8, 0xfa, 0x03, 0xe5, 0x7b, 0x90, 0x03, 0xf1, 0x50, 0x09, 0xb2, + 0xb6, 0x63, 0x7d, 0x4b, 0x78, 0x62, 0x97, 0x55, 0x31, 0x44, 0x08, 0xc6, 0x43, 0x61, 0xee, 0xfd, + 0xa3, 0x59, 0xc8, 0x68, 0x56, 0x07, 0x1b, 0x7e, 0xb6, 0x93, 0x55, 0x3e, 0x62, 0x28, 0xef, 0x88, + 0xc3, 0x12, 0x84, 0x77, 0xec, 0x64, 0x55, 0x0c, 0x19, 0xca, 0xc1, 0x41, 0xab, 0x51, 0xba, 0xe6, + 0xa3, 0xb0, 0x7f, 0xe5, 0x7d, 0x0a, 0x26, 0xc4, 0x15, 0x86, 0x0a, 0x81, 0x0d, 0x65, 0xcf, 0x56, + 0xa1, 0x5b, 0x39, 0x35, 0xda, 0xad, 0x2c, 0x6e, 0xd5, 0xf4, 0x48, 0xb7, 0x6a, 0xc4, 0x19, 0xe3, + 0xa3, 0x39, 0xe3, 0x29, 0x4b, 0x76, 0xdc, 0xcc, 0x6e, 0xe9, 0x9a, 0xb7, 0xcf, 0x6c, 0x2c, 0xd9, + 0xf1, 0x65, 0x35, 0x44, 0x89, 0xee, 0xc3, 0x38, 0xc5, 0xba, 0x5b, 0xca, 0x78, 0x1c, 0x83, 0x95, + 0x8d, 0xb7, 0xca, 0xc2, 0xf6, 0xd8, 0xab, 0x94, 0x34, 0x16, 0xb6, 0xd9, 0xcb, 0xc3, 0x96, 0x53, + 0xd7, 0xa9, 0xb2, 0x0b, 0x93, 0x61, 0x0d, 0x03, 0x9f, 0x49, 0x21, 0x9f, 0xfd, 0x27, 0x7c, 0x08, + 0x98, 0xdc, 0xa2, 0x29, 0xa8, 0xb2, 0xa6, 0xa0, 0xfa, 0xca, 0x6f, 0x0a, 0xc4, 0xe1, 0x30, 0x21, + 0xbd, 0x8f, 0xf5, 0x44, 0xa0, 0x85, 0x84, 0xec, 0x17, 0xc9, 0x7d, 0x21, 0xd7, 0xa5, 0x47, 0xab, + 0xcc, 0x7f, 0x90, 0x60, 0x42, 0xd8, 0x1b, 0x3d, 0x87, 0xec, 0x29, 0xe9, 0xb5, 0x3b, 0xd8, 0xe6, + 0x99, 0xff, 0x6e, 0xa2, 0x5f, 0xaa, 0x9b, 0xa4, 0xb7, 0x85, 0xed, 0x66, 0x97, 0x3a, 0x3d, 0x35, + 0x73, 0xea, 0x0d, 0xca, 0xcf, 0x20, 0x17, 0x9a, 0x1e, 0x35, 0x14, 0x9e, 0xa7, 0xfe, 0x27, 0x29, + 0x3b, 0x50, 0x8c, 0x57, 0x39, 0xe8, 0x05, 0x64, 0xfd, 0x3a, 0xc7, 0x4d, 0x14, 0x65, 0xcf, 0xe8, + 0xea, 0x26, 0xd9, 0x75, 0x2c, 0x9b, 0x38, 0xb4, 0xe7, 0x73, 0xab, 0x82, 0x43, 0xf9, 0x2b, 0x0d, + 0xd3, 0x49, 0x14, 0xe8, 0x33, 0x00, 0x96, 0x3c, 0x23, 0xe5, 0xd6, 0x7c, 0xfc, 0x50, 0x44, 0x79, + 0x36, 0xc6, 0x54, 0x99, 0x62, 0x9d, 0x03, 0xbc, 0x86, 0x62, 0x70, 0xba, 0xda, 0x91, 0x8a, 0xf5, + 0x7e, 0xf2, 0x69, 0x1c, 0x00, 0xbb, 0x1e, 0xf0, 0x73, 0xc8, 0x6d, 0xb8, 0x1e, 0x38, 0x95, 0x23, + 0xfa, 0xbe, 0xbb, 0x97, 0x18, 0x47, 0x03, 0x80, 0x05, 0xc1, 0xcd, 0xf1, 0x36, 0xa1, 0x20, 0xea, + 0x0a, 0x0e, 0xe7, 0xc7, 0x98, 0x92, 0x74, 0x14, 0x06, 0xd0, 0xf2, 0x9c, 0x97, 0x83, 0xed, 0xc2, + 0x04, 0x23, 0xc0, 0xd4, 0x72, 0x4a, 0x50, 0x91, 0x96, 0x0a, 0xcb, 0x8f, 0x2f, 0xf5, 0x43, 0x75, + 0xcd, 0xea, 0xd8, 0xd8, 0x31, 0x5c, 0x56, 0x77, 0xfa, 0xbc, 0x6a, 0x80, 0xa2, 0x54, 0x00, 0x0d, + 0xae, 0x23, 0x80, 0x4c, 0xf3, 0xf5, 0x41, 0xfd, 0xd5, 0x5e, 0x71, 0x6c, 0x75, 0x0a, 0xae, 0xdb, + 0x1c, 0x90, 0x6b, 0xa0, 0xac, 0xc3, 0x6c, 0xb2, 0xfe, 0xf1, 0x82, 0x50, 0x1a, 0x2c, 0x08, 0x57, + 0x01, 0x26, 0x04, 0x9e, 0xf2, 0x7f, 0x98, 0x1a, 0xf0, 0x70, 0xa4, 0x62, 0x94, 0xe2, 0xbd, 0x5e, + 0x98, 0xfb, 0x6b, 0xb8, 0x39, 0xc4, 0xb1, 0xe8, 0xb1, 0x1f, 0x3a, 0xac, 0x70, 0x90, 0x78, 0xe1, + 0x10, 0xb6, 0xd3, 0x26, 0xe9, 0x1d, 0xb2, 0xf3, 0xbe, 0x8b, 0x0d, 0x66, 0x65, 0x16, 0x34, 0x87, + 0xd8, 0x8c, 0x80, 0x3f, 0x85, 0xc9, 0x30, 0xd5, 0xc8, 0xc9, 0xe4, 0x67, 0x09, 0x66, 0x12, 0xbd, + 0x89, 0xca, 0xb1, 0xcc, 0xc2, 0xd4, 0x12, 0xb9, 0x65, 0x3a, 0x9c, 0x5b, 0x36, 0xc6, 0xf8, 0x05, + 0x53, 0x8a, 0x66, 0x17, 0x26, 0x29, 0xcf, 0x2f, 0xe5, 0x58, 0x7e, 0x61, 0x58, 0x7c, 0x22, 0xa2, + 0xc5, 0xaf, 0x29, 0x98, 0x1a, 0xe8, 0x3b, 0x98, 0xe4, 0xa6, 0xd1, 0x31, 0x7c, 0x39, 0xf2, 0xaa, + 0x3f, 0x60, 0xb3, 0xe1, 0x96, 0xc1, 0x1f, 0xa0, 0xcf, 0x21, 0xeb, 0x5a, 0x0e, 0xdd, 0x24, 0x3d, + 0x4f, 0x88, 0xc2, 0xf2, 0xe2, 0xc5, 0x4d, 0x4d, 0x75, 0xcf, 0xa7, 0x56, 0x05, 0x1b, 0x7a, 0x09, + 0x32, 0xfb, 0xdd, 0x71, 0x34, 0x7e, 0xf8, 0x0b, 0xcb, 0x4b, 0x23, 0x60, 0x78, 0xf4, 0x6a, 0x9f, + 0x55, 0x79, 0x00, 0x72, 0x30, 0x8f, 0x0a, 0x00, 0x8d, 0xe6, 0xde, 0x5a, 0x73, 0xbb, 0xd1, 0xda, + 0x5e, 0x2f, 0x8e, 0xa1, 0x3c, 0xc8, 0xf5, 0x60, 0x28, 0x29, 0xb7, 0x21, 0xcb, 0xe5, 0x40, 0x53, + 0x90, 0x5f, 0x53, 0x9b, 0xf5, 0xfd, 0xd6, 0xce, 0x76, 0x7b, 0xbf, 0xb5, 0xd5, 0x2c, 0x8e, 0x2d, + 0xff, 0x98, 0x85, 0x1c, 0xf3, 0xd1, 0x9a, 0x2f, 0x00, 0x3a, 0x84, 0x7c, 0xe4, 0xbd, 0x05, 0x45, + 0x6f, 0xb7, 0xa4, 0x37, 0x9d, 0xb2, 0x72, 0x11, 0x09, 0xaf, 0xf7, 0xb6, 0x00, 0xfa, 0xef, 0x2c, + 0x28, 0x7a, 0xb3, 0x0d, 0xbc, 0xe3, 0x94, 0x17, 0x86, 0xae, 0x73, 0xb8, 0x2f, 0xa1, 0x10, 0x7d, + 0x41, 0x40, 0x49, 0x42, 0xc4, 0xba, 0xba, 0xf2, 0xbd, 0x0b, 0x69, 0x38, 0xf4, 0x2e, 0xe4, 0x42, + 0x4f, 0x26, 0x68, 0x40, 0x94, 0x38, 0x68, 0x65, 0x38, 0x01, 0x47, 0xac, 0x43, 0xc6, 0x7f, 0x9f, + 0x40, 0xd1, 0x22, 0x34, 0xf2, 0xd2, 0x51, 0xbe, 0x95, 0xb8, 0xc6, 0x21, 0x0e, 0x21, 0x1f, 0x79, + 0x0e, 0x88, 0xb9, 0x25, 0xe9, 0xad, 0x23, 0xe6, 0x96, 0xe4, 0xd7, 0x84, 0x3d, 0x98, 0x0c, 0xb7, + 0xda, 0xa8, 0x32, 0xc0, 0x13, 0x7b, 0x13, 0x28, 0xdf, 0xbd, 0x80, 0xa2, 0xef, 0x9c, 0x68, 0x2f, + 0x1a, 0x73, 0x4e, 0x62, 0xcb, 0x1d, 0x73, 0xce, 0x90, 0x66, 0xf6, 0x2d, 0xcc, 0x26, 0x37, 0x16, + 0xe8, 0x41, 0xdc, 0x0d, 0xc3, 0x9b, 0xcd, 0xf2, 0xbf, 0x47, 0xa2, 0xe5, 0x5b, 0x12, 0x40, 0x83, + 0x25, 0x3f, 0x5a, 0x8c, 0xb5, 0x13, 0x43, 0xda, 0x91, 0xf2, 0xbf, 0x2e, 0xa5, 0xf3, 0xb7, 0x59, + 0xfd, 0xe4, 0xab, 0x17, 0xba, 0x41, 0xdf, 0x9c, 0x1d, 0x55, 0x8f, 0xad, 0x4e, 0xcd, 0xab, 0xc3, + 0x2c, 0x47, 0xaf, 0x05, 0xaf, 0xb4, 0x3a, 0xe9, 0xd6, 0xec, 0xa3, 0x87, 0xba, 0x55, 0x4b, 0x7a, + 0xed, 0x3d, 0xca, 0x78, 0xc5, 0xe0, 0xca, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x74, 0x70, + 0xf4, 0x0c, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2223,6 +2374,8 @@ type DataCatalogClient interface { ListArtifacts(ctx context.Context, in *ListArtifactsRequest, opts ...grpc.CallOption) (*ListArtifactsResponse, error) // Return a paginated list of datasets ListDatasets(ctx context.Context, in *ListDatasetsRequest, opts ...grpc.CallOption) (*ListDatasetsResponse, error) + // Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + UpdateArtifact(ctx context.Context, in *UpdateArtifactRequest, opts ...grpc.CallOption) (*UpdateArtifactResponse, error) // Attempts to get or extend a reservation for the corresponding artifact. If one already exists // (ie. another entity owns the reservation) then that reservation is retrieved. // Once you acquire a reservation, you need to periodically extend the reservation with an @@ -2311,6 +2464,15 @@ func (c *dataCatalogClient) ListDatasets(ctx context.Context, in *ListDatasetsRe return out, nil } +func (c *dataCatalogClient) UpdateArtifact(ctx context.Context, in *UpdateArtifactRequest, opts ...grpc.CallOption) (*UpdateArtifactResponse, error) { + out := new(UpdateArtifactResponse) + err := c.cc.Invoke(ctx, "/datacatalog.DataCatalog/UpdateArtifact", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *dataCatalogClient) GetOrExtendReservation(ctx context.Context, in *GetOrExtendReservationRequest, opts ...grpc.CallOption) (*GetOrExtendReservationResponse, error) { out := new(GetOrExtendReservationResponse) err := c.cc.Invoke(ctx, "/datacatalog.DataCatalog/GetOrExtendReservation", in, out, opts...) @@ -2347,6 +2509,8 @@ type DataCatalogServer interface { ListArtifacts(context.Context, *ListArtifactsRequest) (*ListArtifactsResponse, error) // Return a paginated list of datasets ListDatasets(context.Context, *ListDatasetsRequest) (*ListDatasetsResponse, error) + // Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + UpdateArtifact(context.Context, *UpdateArtifactRequest) (*UpdateArtifactResponse, error) // Attempts to get or extend a reservation for the corresponding artifact. If one already exists // (ie. another entity owns the reservation) then that reservation is retrieved. // Once you acquire a reservation, you need to periodically extend the reservation with an @@ -2389,6 +2553,9 @@ func (*UnimplementedDataCatalogServer) ListArtifacts(ctx context.Context, req *L func (*UnimplementedDataCatalogServer) ListDatasets(ctx context.Context, req *ListDatasetsRequest) (*ListDatasetsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListDatasets not implemented") } +func (*UnimplementedDataCatalogServer) UpdateArtifact(ctx context.Context, req *UpdateArtifactRequest) (*UpdateArtifactResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateArtifact not implemented") +} func (*UnimplementedDataCatalogServer) GetOrExtendReservation(ctx context.Context, req *GetOrExtendReservationRequest) (*GetOrExtendReservationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOrExtendReservation not implemented") } @@ -2526,6 +2693,24 @@ func _DataCatalog_ListDatasets_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _DataCatalog_UpdateArtifact_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateArtifactRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DataCatalogServer).UpdateArtifact(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datacatalog.DataCatalog/UpdateArtifact", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DataCatalogServer).UpdateArtifact(ctx, req.(*UpdateArtifactRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _DataCatalog_GetOrExtendReservation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetOrExtendReservationRequest) if err := dec(in); err != nil { @@ -2594,6 +2779,10 @@ var _DataCatalog_serviceDesc = grpc.ServiceDesc{ MethodName: "ListDatasets", Handler: _DataCatalog_ListDatasets_Handler, }, + { + MethodName: "UpdateArtifact", + Handler: _DataCatalog_UpdateArtifact_Handler, + }, { MethodName: "GetOrExtendReservation", Handler: _DataCatalog_GetOrExtendReservation_Handler, diff --git a/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.validate.go b/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.validate.go index 906ec758f..0f1f5dd9e 100644 --- a/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.validate.go +++ b/gen/pb-go/flyteidl/datacatalog/datacatalog.pb.validate.go @@ -1134,6 +1134,177 @@ var _ interface { ErrorName() string } = ListDatasetsResponseValidationError{} +// Validate checks the field values on UpdateArtifactRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *UpdateArtifactRequest) Validate() error { + if m == nil { + return nil + } + + if v, ok := interface{}(m.GetDataset()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateArtifactRequestValidationError{ + field: "Dataset", + reason: "embedded message failed validation", + cause: err, + } + } + } + + for idx, item := range m.GetData() { + _, _ = idx, item + + if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateArtifactRequestValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + switch m.QueryHandle.(type) { + + case *UpdateArtifactRequest_ArtifactId: + // no validation rules for ArtifactId + + case *UpdateArtifactRequest_TagName: + // no validation rules for TagName + + } + + return nil +} + +// UpdateArtifactRequestValidationError is the validation error returned by +// UpdateArtifactRequest.Validate if the designated constraints aren't met. +type UpdateArtifactRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateArtifactRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateArtifactRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateArtifactRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateArtifactRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateArtifactRequestValidationError) ErrorName() string { + return "UpdateArtifactRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateArtifactRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateArtifactRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateArtifactRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateArtifactRequestValidationError{} + +// Validate checks the field values on UpdateArtifactResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, an error is returned. +func (m *UpdateArtifactResponse) Validate() error { + if m == nil { + return nil + } + + // no validation rules for ArtifactId + + return nil +} + +// UpdateArtifactResponseValidationError is the validation error returned by +// UpdateArtifactResponse.Validate if the designated constraints aren't met. +type UpdateArtifactResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateArtifactResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateArtifactResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateArtifactResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateArtifactResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateArtifactResponseValidationError) ErrorName() string { + return "UpdateArtifactResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateArtifactResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdateArtifactResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateArtifactResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateArtifactResponseValidationError{} + // Validate checks the field values on ReservationID with the rules defined in // the proto definition for this message. If any rules are violated, an error // is returned. diff --git a/gen/pb-go/flyteidl/service/admin.swagger.json b/gen/pb-go/flyteidl/service/admin.swagger.json index 0ec47c884..62c9807fc 100644 --- a/gen/pb-go/flyteidl/service/admin.swagger.json +++ b/gen/pb-go/flyteidl/service/admin.swagger.json @@ -3628,6 +3628,11 @@ "name": { "type": "string", "title": "User provided value for the relaunched execution.\nIf none is provided the system will generate a unique string.\n+optional" + }, + "overwrite_cache": { + "type": "boolean", + "format": "boolean", + "description": "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.\nIf enabled, all calculations are performed even if cached results would be available, overwriting the stored\ndata once execution finishes successfully." } }, "description": "Request to relaunch the referenced execution." @@ -3693,6 +3698,11 @@ "type": "boolean", "format": "boolean", "description": "Allows for the interruptible flag of a workflow to be overwritten for a single execution.\nOmitting this field uses the workflow's value as a default.\nAs we need to distinguish between the field not being provided and its default value false, we have to use a wrapper\naround the bool field." + }, + "overwrite_cache": { + "type": "boolean", + "format": "boolean", + "description": "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.\nIf enabled, all calculations are performed even if cached results would be available, overwriting the stored\ndata once execution finishes successfully." } }, "description": "An ExecutionSpec encompasses all data used to launch this execution. The Spec does not change over the lifetime\nof an execution as it progresses across phase changes." @@ -3958,6 +3968,11 @@ "type": "boolean", "format": "boolean", "description": "Allows for the interruptible flag of a workflow to be overwritten for a single execution.\nOmitting this field uses the workflow's value as a default.\nAs we need to distinguish between the field not being provided and its default value false, we have to use a wrapper\naround the bool field." + }, + "overwrite_cache": { + "type": "boolean", + "format": "boolean", + "description": "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.\nIf enabled, all calculations are performed even if cached results would be available, overwriting the stored\ndata once execution finishes successfully." } }, "description": "User-provided launch plan definition and configuration values." @@ -5062,6 +5077,11 @@ "type": "boolean", "format": "boolean", "description": "Allows for the interruptible flag of a workflow to be overwritten for a single execution.\nOmitting this field uses the workflow's value as a default.\nAs we need to distinguish between the field not being provided and its default value false, we have to use a wrapper\naround the bool field." + }, + "overwrite_cache": { + "type": "boolean", + "format": "boolean", + "description": "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.\nIf enabled, all calculations are performed even if cached results would be available, overwriting the stored\ndata once execution finishes successfully." } }, "description": "Adds defaults for customizable workflow-execution specifications and overrides." @@ -5315,10 +5335,11 @@ "CACHE_HIT", "CACHE_POPULATED", "CACHE_LOOKUP_FAILURE", - "CACHE_PUT_FAILURE" + "CACHE_PUT_FAILURE", + "CACHE_SKIPPED" ], "default": "CACHE_DISABLED", - "description": "- CACHE_DISABLED: Used to indicate that caching was disabled\n - CACHE_MISS: Used to indicate that the cache lookup resulted in no matches\n - CACHE_HIT: used to indicate that the associated artifact was a result of a previous execution\n - CACHE_POPULATED: used to indicate that the resultant artifact was added to the cache\n - CACHE_LOOKUP_FAILURE: Used to indicate that cache lookup failed because of an error\n - CACHE_PUT_FAILURE: Used to indicate that cache lookup failed because of an error", + "description": "- CACHE_DISABLED: Used to indicate that caching was disabled\n - CACHE_MISS: Used to indicate that the cache lookup resulted in no matches\n - CACHE_HIT: used to indicate that the associated artifact was a result of a previous execution\n - CACHE_POPULATED: used to indicate that the resultant artifact was added to the cache\n - CACHE_LOOKUP_FAILURE: Used to indicate that cache lookup failed because of an error\n - CACHE_PUT_FAILURE: Used to indicate that cache lookup failed because of an error\n - CACHE_SKIPPED: Used to indicate the cache lookup was skipped", "title": "Indicates the status of CatalogCaching. The reason why this is not embedded in TaskNodeMetadata is, that we may use for other types of nodes as well in the future" }, "coreCatalogMetadata": { diff --git a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml index e62a0cb8c..663f7e921 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml +++ b/gen/pb-go/flyteidl/service/flyteadmin/api/swagger.yaml @@ -3230,6 +3230,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" cluster_assignment: @@ -3603,6 +3604,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" cluster_assignment: @@ -3792,6 +3794,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" cluster_assignment: @@ -3967,6 +3970,13 @@ definitions: type: "string" title: "User provided value for the relaunched execution.\nIf none is provided\ \ the system will generate a unique string.\n+optional" + overwrite_cache: + type: "boolean" + format: "boolean" + description: "Allows for all cached values of a workflow and its tasks to\ + \ be overwritten for a single execution.\nIf enabled, all calculations are\ + \ performed even if cached results would be available, overwriting the stored\n\ + data once execution finishes successfully." description: "Request to relaunch the referenced execution." adminExecutionSpec: type: "object" @@ -4030,6 +4040,13 @@ definitions: \ as a default.\nAs we need to distinguish between the field not being provided\ \ and its default value false, we have to use a wrapper\naround the bool\ \ field." + overwrite_cache: + type: "boolean" + format: "boolean" + description: "Allows for all cached values of a workflow and its tasks to\ + \ be overwritten for a single execution.\nIf enabled, all calculations are\ + \ performed even if cached results would be available, overwriting the stored\n\ + data once execution finishes successfully." description: "An ExecutionSpec encompasses all data used to launch this execution.\ \ The Spec does not change over the lifetime\nof an execution as it progresses\ \ across phase changes." @@ -4072,6 +4089,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" cluster_assignment: @@ -4575,6 +4593,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" default_inputs: @@ -5373,6 +5392,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" default_inputs: @@ -5886,6 +5906,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" default_inputs: @@ -6214,6 +6235,13 @@ definitions: \ as a default.\nAs we need to distinguish between the field not being provided\ \ and its default value false, we have to use a wrapper\naround the bool\ \ field." + overwrite_cache: + type: "boolean" + format: "boolean" + description: "Allows for all cached values of a workflow and its tasks to\ + \ be overwritten for a single execution.\nIf enabled, all calculations are\ + \ performed even if cached results would be available, overwriting the stored\n\ + data once execution finishes successfully." description: "User-provided launch plan definition and configuration values." example: workflow_id: @@ -6281,6 +6309,7 @@ definitions: tier: {} spec: queueing_budget: "queueing_budget" + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" default_inputs: @@ -6544,6 +6573,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -6643,6 +6673,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -6775,6 +6806,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -6914,6 +6946,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -14177,6 +14210,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -14296,6 +14330,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -14418,6 +14453,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -14541,6 +14577,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -22893,6 +22930,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -23019,6 +23057,7 @@ definitions: spec: queueing_budget: "queueing_budget" workflow_execution_config: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -29707,9 +29746,17 @@ definitions: \ as a default.\nAs we need to distinguish between the field not being provided\ \ and its default value false, we have to use a wrapper\naround the bool\ \ field." + overwrite_cache: + type: "boolean" + format: "boolean" + description: "Allows for all cached values of a workflow and its tasks to\ + \ be overwritten for a single execution.\nIf enabled, all calculations are\ + \ performed even if cached results would be available, overwriting the stored\n\ + data once execution finishes successfully." description: "Adds defaults for customizable workflow-execution specifications\ \ and overrides." example: + overwrite_cache: true raw_output_data_config: output_location_prefix: "output_location_prefix" max_parallelism: 0 @@ -43525,7 +43572,8 @@ definitions: \ a previous execution\n - CACHE_POPULATED: used to indicate that the resultant\ \ artifact was added to the cache\n - CACHE_LOOKUP_FAILURE: Used to indicate\ \ that cache lookup failed because of an error\n - CACHE_PUT_FAILURE: Used to\ - \ indicate that cache lookup failed because of an error" + \ indicate that cache lookup failed because of an error\n - CACHE_SKIPPED: Used\ + \ to indicate the cache lookup was skipped" enum: - "CACHE_DISABLED" - "CACHE_MISS" @@ -43533,6 +43581,7 @@ definitions: - "CACHE_POPULATED" - "CACHE_LOOKUP_FAILURE" - "CACHE_PUT_FAILURE" + - "CACHE_SKIPPED" default: "CACHE_DISABLED" coreCatalogMetadata: type: "object" diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_relaunch_request.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_relaunch_request.go index 3cf2c53aa..0f8ccc51c 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_relaunch_request.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_relaunch_request.go @@ -13,4 +13,6 @@ package flyteadmin type AdminExecutionRelaunchRequest struct { Id *CoreWorkflowExecutionIdentifier `json:"id,omitempty"` Name string `json:"name,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. + OverwriteCache bool `json:"overwrite_cache,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go index 974069584..0bd125d56 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_spec.go @@ -35,4 +35,6 @@ type AdminExecutionSpec struct { ClusterAssignment *AdminClusterAssignment `json:"cluster_assignment,omitempty"` // Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field. Interruptible bool `json:"interruptible,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. + OverwriteCache bool `json:"overwrite_cache,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go index f1828b7cd..637f3139c 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_launch_plan_spec.go @@ -34,4 +34,6 @@ type AdminLaunchPlanSpec struct { MaxParallelism int32 `json:"max_parallelism,omitempty"` // Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field. Interruptible bool `json:"interruptible,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. + OverwriteCache bool `json:"overwrite_cache,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_config.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_config.go index 4ea5333a0..e8d441723 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_config.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_workflow_execution_config.go @@ -23,4 +23,6 @@ type AdminWorkflowExecutionConfig struct { Annotations *AdminAnnotations `json:"annotations,omitempty"` // Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field. Interruptible bool `json:"interruptible,omitempty"` + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. + OverwriteCache bool `json:"overwrite_cache,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_core_catalog_cache_status.go b/gen/pb-go/flyteidl/service/flyteadmin/model_core_catalog_cache_status.go index 95d546512..6e50baf22 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_core_catalog_cache_status.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_core_catalog_cache_status.go @@ -8,7 +8,7 @@ */ package flyteadmin -// CoreCatalogCacheStatus : - CACHE_DISABLED: Used to indicate that caching was disabled - CACHE_MISS: Used to indicate that the cache lookup resulted in no matches - CACHE_HIT: used to indicate that the associated artifact was a result of a previous execution - CACHE_POPULATED: used to indicate that the resultant artifact was added to the cache - CACHE_LOOKUP_FAILURE: Used to indicate that cache lookup failed because of an error - CACHE_PUT_FAILURE: Used to indicate that cache lookup failed because of an error +// CoreCatalogCacheStatus : - CACHE_DISABLED: Used to indicate that caching was disabled - CACHE_MISS: Used to indicate that the cache lookup resulted in no matches - CACHE_HIT: used to indicate that the associated artifact was a result of a previous execution - CACHE_POPULATED: used to indicate that the resultant artifact was added to the cache - CACHE_LOOKUP_FAILURE: Used to indicate that cache lookup failed because of an error - CACHE_PUT_FAILURE: Used to indicate that cache lookup failed because of an error - CACHE_SKIPPED: Used to indicate the cache lookup was skipped type CoreCatalogCacheStatus string // List of coreCatalogCacheStatus @@ -19,4 +19,5 @@ const ( CoreCatalogCacheStatusPOPULATED CoreCatalogCacheStatus = "CACHE_POPULATED" CoreCatalogCacheStatusLOOKUP_FAILURE CoreCatalogCacheStatus = "CACHE_LOOKUP_FAILURE" CoreCatalogCacheStatusPUT_FAILURE CoreCatalogCacheStatus = "CACHE_PUT_FAILURE" + CoreCatalogCacheStatusSKIPPED CoreCatalogCacheStatus = "CACHE_SKIPPED" ) diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 160bdd225..0867b65ea 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -78,7 +78,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x24\xb7\x95\x2f\x0c\xff\x3f\x9f\x02\xb7\x7d\x23\x5a\xb2\xb9\x48\xf2\x8c\x5f\x0f\x27\x6e\xbc\x4f\x89\xac\x6e\xf1\x8a\x4d\xd2\x5c\xa4\xd1\x33\xe5\x28\xa1\x32\x51\x55\x30\x33\x81\x34\x80\x24\xbb\xec\xf0\x77\x7f\x02\x07\x4b\x22\xb7\xaa\xac\x85\x64\xb1\x95\x33\x11\x16\xbb\x32\x13\xeb\xc1\xc1\x59\x7f\xe7\x9f\xff\x86\xd0\x3b\xf9\x84\x67\x33\x22\xde\x9d\xa0\x77\xdf\x1d\x7d\xf3\xee\x40\xff\x46\xd9\x94\xbf\x3b\x41\xfa\x39\x42\xef\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x47\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xee\x91\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\xde\xfd\x1b\x42\xff\x82\xe6\x65\x34\x27\x29\x91\xef\x4e\xd0\xff\x98\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x15\xde\x8d\x38\x93\x79\xe9\x65\x9c\x65\x09\x8d\xb0\xa2\x9c\x1d\xff\x4d\x72\x56\xbc\x9b\x09\x1e\xe7\x51\xc7\x77\xb1\x9a\xcb\x62\x8e\xc7\x38\xa3\xc7\x8f\xdf\x1e\xe3\x48\xd1\x47\x32\x4e\x70\xce\xa2\xf9\x38\x4b\x30\x93\xc7\xff\xa4\xb1\x9e\xe3\xdf\x48\xa4\xfe\x05\xff\x88\x79\x8a\x29\x33\x7f\x33\x9c\x92\x7f\xf9\x76\x10\x7a\x37\x23\x2a\xf8\xa7\x9e\x6d\x9e\xa6\x58\x2c\xf4\x8a\x7c\x20\x2a\x9a\x23\x35\x27\xc8\xf4\x83\xdc\x12\xf1\x29\xc2\xe8\x44\x90\xe9\xc9\xaf\x82\x4c\xc7\x6e\xa1\x8f\xcc\x02\x5f\xc0\x68\xae\x13\xcc\x7e\x3d\xb2\xcb\x04\x2d\xc7\x44\x46\x82\x66\xca\xae\xf7\x0d\x51\x82\x92\x47\x12\x76\x60\x26\x82\xf4\x44\x7c\x67\x32\x23\x11\x9d\x52\x12\xa3\xc9\x02\x51\x96\xe5\x0a\x09\xf2\xf7\x9c\x48\x85\xa6\x34\x51\x44\xc8\x52\x2f\x3c\x23\x02\x56\xf0\x3c\xd6\xbd\x7c\x24\x6a\x00\x6d\x17\xa3\x0a\xdf\x16\x44\x66\x9c\x49\x22\x4b\x8b\x80\xd0\xbb\xef\xbe\xf9\xa6\xf2\x53\x7d\x06\x03\x24\xf3\x28\x22\x52\x4e\xf3\x04\xb9\x96\xc2\xc1\x98\x05\xd5\xe4\x83\x6b\x8d\x21\xf4\xee\x7f\x0b\x32\xd5\xed\xfc\xee\x38\x26\x53\xca\xa8\x6e\x57\x1a\x2a\x0d\x46\x5b\xfa\xea\x5f\xff\xd6\xf4\xf7\xbf\x82\x19\x65\x58\xe0\x94\xe8\x65\xf1\x74\x65\xfe\xaf\x32\x17\x4d\x09\xba\xf3\x82\x5a\xaa\x03\xaf\xcc\xf6\x12\xa7\x44\xef\xbc\xde\x2e\xfb\x05\xfc\x2d\x88\xe4\xb9\x88\x08\x9a\x90\x84\xb3\x99\x44\x8a\xd7\xd6\x80\x42\x0b\x9a\x88\xab\x4f\xf4\x56\x52\x41\xf4\x5e\x29\x91\x93\xca\x53\xb5\xc8\x60\x90\x52\x09\xca\x66\xe1\x52\xfc\xeb\xa0\xd3\xd4\x0c\xed\xaf\x31\x33\xf3\x41\xeb\xc4\x46\x6c\xe0\x5e\x89\x30\x43\x13\x82\xf4\x89\xa7\x31\x11\x24\x46\x58\x22\x8c\x64\x3e\x91\x44\xa1\x27\xaa\xe6\x94\xe9\x7f\x1b\xf2\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x5e\x12\xa1\x07\xfe\x48\x63\x12\xa3\x47\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcd\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x07\xb7\x5c\x7f\x40\xba\x3f\x94\x33\xfa\xf7\x9c\x24\x0b\x44\x63\xc2\x94\x3e\xd7\xb2\xda\xda\x1f\x38\xf4\x8f\x13\x74\x88\xf4\x3a\x13\xa1\x60\xbd\x39\x53\xe4\xb3\x92\xe8\x10\x25\xf4\x81\xa0\xf7\x17\x54\x2a\x34\xb8\x3e\x7f\x7f\x80\xde\x5f\x14\x8c\x43\xbe\x7f\x81\x15\xf6\x7f\xff\x35\x38\x7a\x0a\xcf\xaa\x87\xee\xdd\x40\x9f\xe6\x5b\x73\x01\x15\x2d\xfc\xf5\xdf\xc2\x76\xec\x7e\x2d\xe7\xea\x05\x4b\xb7\xfc\xbc\x2b\x17\x87\x65\x2a\x33\x70\xa9\x77\x68\x5b\xfe\x5d\xbb\x1d\x1a\x98\xb7\xdc\x92\x7b\xeb\xb1\x57\xd9\xb7\x7c\x5b\xfc\x5b\x4f\xe1\xb9\x79\xf8\x36\x0c\x1c\x2b\x38\x59\x98\x32\x73\x10\xfd\xb9\x14\x52\x9f\x45\x77\x42\xf6\x84\x6d\x6d\xc3\xcf\x83\x99\x05\x2c\xdd\x71\xea\x60\x55\xf6\x70\xde\x09\x4d\xe9\xaa\xfd\x3d\x67\xb1\x16\x1e\x2d\x43\x65\x79\x3a\x21\x42\x2f\x83\x63\xad\x30\xdb\x89\x66\xb5\x2a\x17\x8c\xc4\x1d\xa6\xf9\xf7\x9c\x88\xc5\x92\x79\x4e\x71\x22\xdb\x26\x4a\x99\x22\x5a\x52\xaf\x3c\x9e\x72\x91\x62\x65\x5f\xf8\xd3\xbf\xaf\xbb\x10\x8a\x3f\x90\x55\xfb\x7f\x6e\x76\x33\xc2\x12\xc8\x20\xcd\x13\x45\xb3\x84\xa0\x0c\xcf\x88\xb4\x2b\x92\x27\x4a\x1e\xc0\x6b\x5a\x3b\x20\xe2\xd0\xdf\x72\xd0\x83\xbb\xdd\x73\x09\xbf\xa0\xa9\x67\x76\x8c\x7c\x56\xd0\xd2\x88\xc1\xfd\x0e\x4b\x14\xde\x5a\xcf\xb0\x94\x9b\xd1\x8c\xe4\x42\x8d\x27\x8b\xa3\x07\x52\xeb\xb7\x95\x72\x30\x43\x58\x29\x41\x27\xb9\x22\x7a\xde\xba\x0d\x77\x3f\x03\x7b\x34\x42\x40\x17\xd6\xf0\x7a\x13\x8e\xa9\x20\x11\xcc\x6d\x9d\x03\xe3\xbf\xd2\xf3\xd6\x9a\xd8\xc2\xcc\xfe\x81\x2c\x40\xe6\x69\x58\x01\xbf\xe5\x23\x36\x62\xe8\x10\x9d\x0d\x6f\x4f\x87\x97\x67\xe7\x97\x1f\x4f\xd0\xf7\x0b\x14\x93\x29\xce\x13\x75\x80\xa6\x94\x24\xb1\x44\x58\x10\x68\x92\xc4\x5a\xae\xd1\x83\x21\x2c\xa6\x6c\x86\xb8\x88\x89\x78\xbe\x65\xac\x3c\x25\x2c\x4f\x2b\xf7\x0a\xfc\x5e\x8c\xbe\xf2\x85\x16\x63\xfc\xa3\xd2\x93\xbf\xd6\x16\x18\x66\xac\xfb\x0e\x5a\x7b\x31\xc1\x29\x9a\xd3\x24\x16\x84\x1d\x2b\x2c\x1f\xc6\xe4\x33\x89\x72\x73\x27\xff\xb3\xfc\xc3\x58\x4b\xbf\x3c\x26\xe5\x5f\x4a\xff\x28\xc4\xad\xb5\x3f\xf5\xfa\xf6\xda\x5f\x82\x76\xde\xed\x3b\xf8\x85\xc6\x8d\x6f\xc3\x2f\x2b\xe6\xe0\xde\x59\x32\x58\xf7\x4a\xeb\xa8\xdc\x0b\x56\xd8\x6b\x7c\x47\x10\x25\x16\x63\xac\x14\x49\x33\xb5\xa6\xe5\x01\xa3\x44\xcb\xae\xcb\x64\xd5\x4b\x1e\x93\xa1\xeb\xef\x57\x2b\x82\x1a\x61\xd3\x70\xad\x29\x11\x84\x45\xa4\xbd\x85\x3b\x2c\x1f\x8a\x16\x56\x0b\xbc\x40\x63\x48\x2f\x3f\x2a\x08\xac\xd6\x71\x21\xf6\xea\x25\x29\xde\x5c\x25\xec\x96\xe6\x23\x3f\x70\xa1\x87\xf7\x16\x04\xde\xd2\xc0\x5f\x42\xe6\xdd\xf4\x44\x7f\x71\x56\x8e\x0d\xf9\x53\x6f\x13\xd9\x7e\x25\xbb\x5a\x50\xb8\x40\x72\x21\x15\x49\x57\xda\x52\xde\xce\x42\xd8\x0b\x68\x5f\x07\x5c\xb9\x03\x7f\x03\xa7\xbe\x7c\xa3\xf7\xc7\x7b\x8d\x25\xdb\x95\x25\x74\xdf\xe7\xe9\xbc\x5d\xcb\xa7\x7a\xeb\xb6\x2f\x70\xf7\xbc\x89\x69\x96\x64\xcd\x5d\x0f\xf2\x99\xcc\x19\xad\x7b\xe5\x56\x7b\x0c\x03\x58\xa1\xc8\x96\x6d\xe9\xfe\xfc\xe9\x4f\x43\x0b\x90\x31\xf7\xa9\x39\x95\x81\x31\x0c\x45\x5c\x18\x59\x30\xb6\xe7\xdd\xe8\xb2\x83\xbb\xc1\xed\xf0\xee\x04\x0d\x50\x8c\x15\xd6\x07\x5c\x90\x4c\x10\x49\x98\x02\x3b\x81\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf6\x83\x96\xac\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\xef\x47\xf0\xc6\x1b\xca\x62\xfa\x48\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf8\xf0\x91\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\xe2\x9b\xd1\x5e\xd9\xb6\xd0\xdd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x81\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xfe\x1c\xc1\xb8\x4f\x2f\xce\xc1\x5e\x10\x29\xc4\x0d\x0f\x75\x9d\x5b\xfb\x90\xeb\x31\xc5\x8c\x11\xe8\x98\xab\x39\x11\xb6\x7b\xfb\xf2\x6b\xab\xfe\xf7\x97\xb7\xd7\xc3\xd3\xf3\x0f\xe7\xc3\xb3\xba\xee\x7f\x37\xb8\xfd\xb1\xfe\xeb\xcf\x57\x37\x3f\x7e\xb8\xb8\xfa\xb9\xfe\xe4\x62\x70\x7f\x79\xfa\xc3\xf8\xfa\x62\x70\x59\x7f\x68\xc9\xaa\xb3\x19\x21\x1c\xd9\x9a\x67\xab\xb7\x99\x3e\x97\xcd\xf4\xe0\xcb\x35\x9a\x5a\xa7\x54\x77\x83\xa9\xb7\x51\xd8\x2f\x51\x86\xa5\x34\x92\x91\x19\xc1\xd1\x88\x7d\xe2\x42\x33\xb0\x29\xd7\x3c\x42\x4b\x4f\x4a\xe4\x91\xa2\x6c\xe6\x3f\x3a\x41\xa3\xfc\x9b\x6f\xfe\x18\x5d\x50\xf6\x00\x7f\x91\x7d\x5c\x9c\xde\xa2\xdc\x5b\x94\x7f\x5b\x16\x65\x2d\xfa\x1c\x87\x86\xe4\xdd\x06\x57\x69\xe1\x02\x7c\xe2\x5a\x94\xe0\xb9\xd2\x7f\xea\x2e\x81\x3c\x96\x84\x58\x75\x33\x58\xfa\x08\xab\x96\x3e\x04\x4f\x41\x90\xfb\x4c\x25\x30\xa3\x27\x2e\x1e\xa6\x09\x7f\xea\x66\xae\xfc\x48\x94\x1f\x86\x16\x9c\xde\x82\x95\xf2\x67\x3b\x43\x3f\xf0\x8f\x44\xe9\xb1\xdf\xd8\x5e\xfa\x60\xab\x3e\xd8\xea\x75\x83\xad\xf6\xca\x54\xf8\xfc\xac\xb5\x6c\x57\x34\xfc\xb5\xc5\x0f\xd7\xea\x66\x6b\xf1\xa2\x05\x4e\xb2\x17\xe1\xc9\x65\x57\xd4\x2e\xf9\x72\xd9\xd9\xb4\x82\x27\x97\x86\xf1\x56\xf8\x72\x69\xd0\x2f\xcf\x93\x7f\x13\x7e\xa2\xde\x0d\xb4\xe1\x42\xbd\x49\xd6\xdd\xf1\x56\x7a\x31\x27\xce\xf3\x5f\x25\xb5\x98\x8f\x75\x82\x3c\xd6\x88\xea\xe8\x1c\xc6\xb1\x22\x6e\xa3\x31\x50\xa3\x29\x32\xa3\x1e\x8a\xd1\x18\x7b\xb1\x5d\xb0\xc5\xa6\xb7\x5e\xf7\xf0\x89\x75\x6f\xbd\xee\x81\x13\x1f\x89\x2a\x0d\xe3\xad\xdc\x7a\xa5\x41\xbf\xfc\xad\xf7\x1b\x8d\x97\xe8\x03\x24\x9e\x71\xe9\xbe\xf4\xbb\x72\x7f\x43\x20\x7e\x03\x31\x0f\x7d\x90\xc3\x5a\x6b\xf4\x65\x45\x35\x7c\xa9\x61\x0c\x6f\x33\x6e\xa1\x0f\x54\xe8\x03\x15\x5e\xc3\xa3\xf4\xf6\x02\x15\x9e\x55\xf1\x25\x9a\xac\x24\x58\x51\x43\xe5\xe6\x5d\xc6\x65\xbb\xbe\x17\x3a\xaf\x1b\xf4\x3a\x68\xb3\x6c\xcd\x04\xea\xfd\x15\xcd\xb1\x44\x3c\x8a\x72\x51\x71\xd1\x56\x4f\xf9\xa9\x20\x58\xe9\x23\x52\x36\x5c\x22\x68\x19\x09\x12\x71\x01\x4e\x4a\x8c\xb2\x39\x96\x04\x29\x81\x99\xa4\xab\xb4\x3c\xd3\x2a\x8c\x4b\xb7\xf3\x16\x14\xbc\xfa\x22\xbe\x94\x7a\x37\xe1\x71\xed\x40\x9a\xb3\xda\xf4\x64\xf9\x4d\xb2\xb3\xa9\x43\xda\x6f\x97\x99\x3f\xe3\x51\xd1\xb7\xd6\x8e\x8f\x4a\x49\x8d\xdf\xf4\xa8\x94\xad\x1d\x3b\x39\x2a\x30\xae\xb7\x72\x54\xea\x8b\xf8\x9b\x39\x2a\x4d\x53\xdf\x87\xa3\xe2\xc2\x01\x76\x7c\x5c\x6a\x3e\xf8\x4d\x8f\x4c\x3d\x5c\x61\x27\xc7\xc6\x8f\xef\xad\x1c\x9d\xe6\x05\xfd\xcd\x1c\x9f\xb6\xe9\xbf\xee\x11\xf2\x7e\x88\xce\x87\xe7\x4e\xd0\xd9\x8c\x08\xa3\x19\x45\x9a\x14\x57\x43\x2d\x15\x96\xf7\xcd\x0e\xcc\xea\xd3\xe0\x7b\x78\x0b\x27\xc1\x0f\xd6\x8c\xfd\x37\x73\x04\x6a\xf3\xde\x13\xda\x3f\xd6\x9c\xf8\x11\xd0\xda\xba\x9d\x81\x1b\x02\x84\x0f\x17\x48\x26\xc8\x23\xe5\xb9\x4c\x16\x87\x22\x67\x4d\xdc\x1e\x8c\x04\x4f\x34\x49\x10\x67\xc9\x02\x49\x85\x85\x72\x8f\xd9\xcc\x78\x94\xf4\x61\x4a\xb0\x54\xe8\x81\xf1\x27\x86\xa6\x98\x26\xb9\x20\x28\xe3\x94\xa9\xa3\x11\x3b\x67\xe8\xc6\x8c\x11\x34\xef\x03\x94\x4b\x7d\x04\x23\xcc\x18\x57\x28\x9a\x63\x36\x23\x08\x33\x07\x5d\x53\x50\x06\xe2\x02\xe5\x59\xac\x0f\x96\xee\xa2\x62\x63\x2a\x0e\xd8\x88\xdd\x81\x15\x43\x22\xf2\x59\x09\x92\x92\x64\xa1\xfb\xd0\xb4\xaf\x38\xb2\xeb\x63\x86\x6a\x0d\xe2\x44\x08\x2e\x24\xe8\xec\x93\xc5\x3f\x30\x53\x94\x11\x04\x6a\xa6\x34\xc0\x47\x87\xe8\x82\x4b\x88\xc9\xfe\xf1\xcf\x12\x45\x49\x2e\x15\x11\x07\x68\x92\xcf\x24\xa2\x0c\x65\x09\x56\x53\x2e\x52\x3d\x42\xca\xa4\xc2\x13\x9a\x50\xb5\x38\x40\x29\x8e\xe6\xa6\x2d\x58\x03\x79\x30\x62\x31\x7f\x62\x52\x09\x82\x7d\xef\xee\x21\xfa\x2a\x7c\x66\x08\x40\x7e\x7d\x00\x86\x7b\x9a\x66\xc9\x22\x1c\x7e\x90\x08\x0d\x7b\xa2\x1b\x21\x31\x9a\x90\x08\xe7\xd2\x1a\x76\x94\x58\x20\xf2\x79\x8e\x73\x09\x7b\xa7\xa7\x67\xad\x1e\x11\x4f\xb3\x84\x28\x82\xe8\x14\x29\x41\x49\x8c\xf0\x0c\x53\xbd\x74\xb7\x64\x49\xe2\xb6\x27\x7a\xbb\x81\x96\xea\x7f\x05\xcb\x47\xca\x05\x41\x31\x51\x98\x26\x72\xb9\x53\xf2\x45\x09\x0e\x3d\x3b\xbd\xa1\xfd\x25\x37\xb4\xd7\xd4\xb6\xe4\x26\xb4\x3b\xd6\x5f\x85\x6f\xe9\x2a\x2c\x73\x85\xbd\xb8\x0b\x0d\x48\xc4\x0e\x04\x42\x66\xad\xe2\x11\x4e\xb6\x94\x0d\x6f\xec\xa0\xd6\x96\x0e\xdd\x87\xfd\xa1\x78\x5b\x87\xc2\xec\xda\xfe\x9c\x8a\xb6\x84\x8a\x9d\x23\xc5\xac\x83\xf1\xb2\x24\x23\x42\xa2\x14\x2b\x7d\xb1\xcd\xec\x15\xdd\x11\xc5\xb0\x00\x75\x79\x53\x07\xe5\x25\x90\x5c\xbe\xec\x88\x85\x3e\x52\xe1\x37\x88\x40\xbb\x37\x09\x8c\x7d\x0e\xf4\x33\xe5\x40\x53\xd9\xe7\x40\xf7\x39\xd0\x5d\x17\xa8\xcf\x81\xee\x73\xa0\xdf\x6c\x0e\xf4\xb3\xa6\x3f\xef\x2e\xc9\x79\x37\x99\xcc\x6f\x4a\x3a\xef\x25\xf3\x5e\x32\xef\xd3\x95\xfd\xd4\x76\xc5\x05\xdd\xd7\xef\x62\x92\x10\x45\xda\x0d\x74\x44\xa4\x5a\xe1\x30\x37\x3c\x65\x5a\x14\x9c\x09\x22\xe5\xb6\x3c\xcd\x37\x1c\x96\x57\x68\xf0\x47\x14\x28\xb3\x9e\x2c\xc1\xae\xb3\x8c\xd9\xf9\xb6\xdf\x26\xcb\xf3\xc3\xef\x21\x1b\x7a\x1e\xd8\xf3\xc0\x4d\xa6\xb6\x3f\xe6\xe8\xe0\x30\xbf\x94\x3d\xda\xf3\xf6\x2c\x6f\x17\x4e\xef\x8d\xa3\xb5\x60\xb4\x86\xc2\x21\x2b\x95\xfb\xc3\x6d\xe9\x7c\x4b\x5e\xbf\x4e\x5f\xcb\xf8\xba\x69\xe7\x6d\x32\x75\x33\xf6\x9e\xa3\xf7\x1c\xbd\xe7\xe8\x6f\x9b\xa3\xbb\x93\xfc\xaa\xee\xc5\xa0\x70\xda\x98\xc6\xdb\xd4\x4e\xeb\x5e\x87\x02\xa7\x24\x1e\x42\x96\x98\xcf\x71\x13\xbf\xea\x4f\xc2\xaa\x68\x2e\x1f\xac\xbb\x03\x32\xfc\xba\x58\xf5\x52\x29\xab\xcd\xfc\x91\x45\x81\xb2\xf3\xf8\x4d\xb8\x24\x1b\x57\xf8\x0b\x29\xae\xb6\x1f\x5c\xe4\xc5\x6b\xab\xed\xc7\xb4\x7b\x17\x59\x5f\x5a\xad\x77\x02\x75\x9c\x70\xef\x04\xda\x5f\x27\x50\x87\x6d\x7c\x16\xcf\xee\x0b\x1f\xcf\x97\x12\x1d\xbb\x67\xee\xb8\x04\x1b\x16\xa3\x3c\x4b\x38\x8e\x3b\x56\x47\x0f\x24\xba\x0e\xe9\x3b\x2c\x46\x82\xcc\xa8\x54\x44\xe8\x7d\x69\x14\x0c\x57\xe7\xf3\xbc\xd5\x32\xe8\x9d\x23\x36\xc3\x6e\xdf\xfd\x7b\x87\xe1\xdf\xd8\x3b\x1b\x38\xd1\x04\xc7\xbe\x3e\x31\x88\x6f\x29\x5e\xa0\x39\x7e\x24\x2e\xca\xfc\x11\x27\x34\xc6\xd5\xb5\xae\xcc\x70\xd9\x80\xfe\x73\xbd\x01\xe1\xf2\x70\x7c\x41\x3b\x59\x8e\x02\xb6\x00\x15\xf0\xce\x5c\x6b\xe5\x89\x20\x38\x5e\xa0\x09\x21\xcc\x93\x4d\xc3\x7d\xd2\x32\xe6\x9d\x08\xce\xaf\xae\x95\xd6\xa9\x67\x5f\xd4\xd2\x17\x8c\x7b\x6d\xe6\x37\xdb\xeb\xa0\xdb\x2b\x9e\xf2\xbb\xb7\xc5\x82\xfa\x58\xd8\xde\x36\xf9\xfa\xb6\xc9\x3e\x16\xb6\x57\xf4\xf7\x4c\xd1\xef\x63\x61\xfb\x58\xd8\xde\x0c\xb2\x7c\xda\xbd\x19\xe4\x8b\x88\x85\xed\x24\xc3\x6f\x18\x0d\xfb\xc6\xa5\xf9\x5e\x98\x77\xef\xf5\xc2\x7c\x2f\xcc\x7f\xa1\xc2\xfc\x7e\xac\x70\x2f\xc9\xf7\x92\x7c\x2f\xc9\xf7\x92\x7c\x2f\xc9\xef\x7c\x19\x7b\x49\xbe\x59\x92\x87\xbf\x5c\xb1\x9d\x75\xc5\xfa\x35\xc5\xf9\xb5\xd3\xdd\xd6\x77\x06\x7e\x24\xea\xad\x7a\x02\x7b\xa9\xbd\x97\xda\xf7\x5b\x6a\xdf\x9b\x09\x7d\x79\x85\x32\xfa\x52\x13\x7d\xa9\x89\xbe\xd4\xc4\x33\x97\x9a\x70\x5f\x77\xc8\x91\xb2\x87\x4b\x61\x95\x4b\x83\x55\x5c\x04\x9b\x74\x12\x7b\x3a\xa4\x46\x55\x7a\x58\x2d\xf7\xa0\x81\x42\x29\xd7\xba\x1b\x23\xa5\x77\x1c\x83\x33\x81\x35\x33\xfa\x48\x18\x72\xc9\x01\x07\xf6\x1a\x3b\x00\x63\xca\xbf\xfc\xe1\x33\xc9\xb7\x58\x21\x8c\x14\x4d\xc9\x11\x3a\x9f\x1a\x6e\x11\xe9\xd3\x25\x89\x92\x95\x68\x2c\x43\xf9\xf0\x11\x8b\x8b\xb1\xba\xbe\x69\x11\x9c\x63\x5e\x3b\x70\xcc\x36\x4f\x94\x61\xbd\xae\x71\x40\x1a\x9d\x78\x0e\x05\x07\x2d\x25\x22\x71\x5f\x96\xba\x75\x2f\xa7\x38\xd6\x8c\x21\x18\x42\x91\x25\x1c\xbe\x0f\x77\x3a\x95\x3e\xbc\xa8\xf4\xbd\xf9\x1a\xe0\x4a\x01\x5e\x14\x60\xd5\x3b\x0d\x63\x0e\xd1\x6f\x5a\xc4\x8b\xf3\x84\x20\x2c\x25\x8f\x28\x06\x35\xc6\xc8\x00\x88\x2a\x67\x69\x70\x2f\xb9\xae\x63\x2a\xf1\x24\x21\xb1\x5d\x63\x52\x44\x3b\x2d\x1d\x39\x95\x68\x42\xf4\x12\x6b\x36\x55\x5e\xfd\xb9\x91\x40\x1a\x46\x13\x0c\x85\xd4\x47\x42\x98\x19\xc8\x12\x09\xda\x10\xe7\x5b\x15\xa2\xfb\x8c\x3b\xff\xb4\x17\xa9\x7b\x91\xfa\x37\x2a\x52\xef\x51\x84\xe6\x5e\x24\x0e\x82\x0f\x54\x73\xfe\xb1\x37\x6c\xca\xae\xb6\x9e\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x25\x9f\x4f\xae\x87\x81\xef\xe0\x94\xb3\x29\x9d\xe5\xe6\x6e\xf9\xd5\xca\x26\xfe\x44\x17\x6a\xca\x22\x23\xdd\x0c\x43\xde\x6e\xbd\xaa\xb3\xc6\x7c\xc4\x06\x27\x6f\x43\x3b\x6f\xe2\xb6\x6b\x1e\xfa\x4b\x5d\x7a\xeb\x28\xab\x85\x7d\xdc\x6a\x9a\x5a\xbf\x18\xdf\x0c\x6f\xaf\xee\x6f\x4e\x87\x27\x68\x90\x65\x09\x35\x2e\x2b\x43\x61\xf4\x1f\x7a\x52\xa6\x6a\x94\x27\x11\x2b\x10\x19\x30\x77\xf0\x91\x69\x7d\x10\x1d\xa2\xd3\x8b\xfb\xdb\xbb\xe1\x4d\x4b\x83\x96\x24\x00\x71\x80\xa4\x59\x02\xf2\xd1\x43\x3e\x21\x82\x11\x2d\xe1\x5b\xc8\xf7\xc2\x73\x66\x1a\x1d\xfe\xf7\xf0\xf4\xfe\xee\xfc\xea\x72\xfc\x97\xfb\xe1\xfd\xf0\x04\x39\xda\xd2\xcd\xea\x71\xe9\x51\xc4\x0b\x86\x53\xad\x75\x97\xcb\x5b\xfd\x3d\x27\x39\x88\x63\x74\xc6\x52\x02\x95\x18\x4a\x2d\xba\x01\x5f\x0c\xbe\x1f\x5e\x94\x5b\x9e\x93\x10\x87\x1e\x25\x78\x42\x12\xeb\xca\x03\xef\x94\x3e\x3f\x01\x62\xbf\xf1\xf1\xe5\x66\x55\xff\x72\x3f\xb8\x38\xbf\xfb\x65\x7c\xf5\x61\x7c\x3b\xbc\xf9\xe9\xfc\x74\x38\xb6\x9a\xd4\xe9\x40\xf7\x5b\xea\xc9\x2a\x5c\xe8\xef\x39\x4e\xb4\x46\xce\xa7\x0e\x99\x1e\x3d\xcd\x09\x43\x39\x03\x8a\x33\x6a\x3e\x68\x25\x21\x2c\x8f\x99\xd1\xf5\xc5\xfd\xc7\xf3\xcb\xf1\xd5\x4f\xc3\x9b\x9b\xf3\xb3\xe1\x09\xba\x25\x09\x28\xc2\x6e\xd1\x61\x17\xb3\x24\x9f\x51\x86\x68\x9a\x25\x44\xaf\x06\xb6\x38\x10\x73\xfc\x48\xb9\x28\x69\x2b\xb0\x8e\xc0\x0a\xa0\x7d\xa7\x70\x8e\x83\xa5\xbb\xba\xfc\x70\xfe\xf1\x04\x0d\xe2\xd8\xcf\x41\x42\x1b\x25\xca\x71\x68\x42\x87\x35\x34\xa1\x08\x9b\x80\x10\x28\xd0\xfe\x48\x84\xa0\x31\xa9\xd0\xd1\xe0\xf6\xf6\xfc\xe3\xe5\xa7\xe1\xe5\x1d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc0\x0b\x04\x33\x04\xe7\xd0\x23\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x34\xa7\xe0\x39\x84\x0a\x05\xbe\x67\x63\x93\x10\x79\x3d\xa9\xe2\xa5\xb5\xfe\xd2\xc1\xab\xab\xea\xd5\x93\x54\x7f\xa3\x72\x2c\x96\xbd\x50\xa2\xf2\xfa\x8b\xab\xa8\xb5\xfe\x45\x85\xdc\xda\x0d\x14\x35\x7a\x69\x9f\x69\xb1\xd7\x9d\xed\x13\xe5\x35\x7c\xb1\xdb\x5b\x33\xde\x78\xec\xec\x54\xc7\xff\x2c\x31\xe0\x7f\xed\x30\x5a\xcb\x24\xe8\x2c\xc5\x2e\x0c\xb2\xd5\x7f\xb5\xd7\x6c\xc7\xcb\x3b\xf8\xb2\xe9\xc3\xba\x1f\x27\xf8\xe0\x2d\xdc\xca\xe1\x70\xf7\xe8\x06\xbe\x09\xe5\x2c\x27\xae\xa7\x44\xe1\x18\x2b\xac\xf9\xda\x8c\xa8\x23\x74\xc5\xe0\xd9\x1d\x96\x0f\x07\xc8\x15\x1e\x43\x5c\xa0\x42\x90\x7d\x81\x04\xf7\x37\x62\xc0\x5c\x5f\xb9\xea\x8d\x04\xbd\x91\xa0\x79\x65\xfa\x68\xb9\x96\x15\xde\xd5\x8d\xba\x96\xcd\x7f\x77\x17\x5f\x60\xe2\x77\x81\x2f\x15\x1b\x6d\xe9\x46\x5c\x69\x8f\x7d\xbb\x97\xe1\xcb\x5a\x64\x77\x7a\x35\x9a\xba\x64\xfd\xbd\x67\xfe\xaf\xbf\xf7\xfa\x7b\xaf\xbf\xf7\xf6\x60\x85\x5f\xdd\xba\xdd\xc0\xdd\x5f\xd5\xbc\xbd\x4a\x41\xde\x18\x26\xaf\x50\x88\xd7\x01\xca\xfb\xb5\x0b\x1e\x5e\x83\x59\xbb\xae\x21\x4b\x24\xe7\x58\x98\x82\xdf\x11\x4f\x53\xce\xca\x76\xf3\x03\xe4\x9d\xfc\x60\x94\x5c\x09\xa6\xaa\x29\xbb\xe8\x86\xbe\x0d\x7b\x77\xb0\x2e\x2f\x91\xdd\xb4\x53\x11\xc2\xa4\x0d\xf4\xfa\xf5\x33\xca\x19\x3d\x8e\xe1\x4e\x71\x0c\xf7\x63\xae\xcf\x92\x09\xb5\x7b\x1b\xfc\xdb\xc8\x7e\xea\x01\x0b\xfb\xfc\x9e\x3e\xbf\x07\x7e\xef\x01\x0b\x77\x47\xad\xcf\x2b\xd3\xf3\x98\x8c\x2b\x15\xba\xfc\x3f\xc7\x55\x97\x57\xe9\x49\xe8\xff\x2a\x3d\x28\x12\x9e\xa0\x75\x1a\xef\xb2\xaa\xd7\x25\x8f\xc9\x16\x95\xbd\xf4\x88\x3a\x57\xf5\x2a\xf5\xb5\xe7\x22\xbc\x5b\x26\x23\xca\x97\x06\xfe\xcc\x82\x7c\x0b\xc5\x7c\x89\xd6\xa8\x06\xfa\xef\x4d\x53\x2b\x17\xea\x4b\x2d\x9b\x50\x30\xb8\x37\xe4\xa8\xe9\x76\x0b\xb8\xf0\x9e\x71\xcb\x5d\xd0\xfc\xdc\xdf\x08\xcd\x8f\x9f\x07\xd2\xa6\xfb\x85\x50\x41\xb2\x29\x5f\x05\x9b\x22\xd8\x94\xba\x7f\x1b\x76\x9e\x70\xc4\x2f\x61\xe9\x59\x4a\x4c\x5f\xdc\x35\xb1\xec\x68\xf4\x97\x45\xc7\xe5\xfa\x52\xaf\x8c\x1e\x79\x66\x99\xed\xa5\x87\x76\xe9\x4d\x3f\xfb\x33\xe1\xde\xf4\xf3\xa6\x4d\x3f\xc6\x51\x3d\xce\xb0\x20\x4c\x35\xc8\xe8\xd5\xeb\x04\x5e\x0f\x73\xf8\x9d\xd4\x01\x0d\x18\x69\xd1\x5e\xc8\xfe\xaa\xfa\xb2\x6c\x41\x56\x30\x08\x92\x97\x8e\xff\x59\xfc\xed\xa5\xff\x52\x5d\x8b\x25\xd1\x5e\x06\x34\x5f\xea\x3b\x3a\xb7\x81\x5f\xdb\xa7\x37\xd9\x14\x62\x27\x0a\x26\xe4\x91\x24\xdd\xe2\xc3\x5c\xfa\x02\x89\x0b\x81\xaa\x98\x5d\x43\xdc\x58\x5d\x40\x6d\x8e\x19\xbb\x36\xef\xbd\xad\xe4\xa6\xda\xa0\x5f\x36\x7e\xac\x4e\x56\xdd\x8e\xa7\xdb\x77\x6a\x12\x75\x82\x6c\x10\x2d\xeb\xf2\x69\xb8\xa3\x2e\x19\x1b\x43\xae\x52\xdb\xfd\xf2\x9b\x8b\x2a\x69\xdd\xf9\x57\x8d\x2d\x69\xe2\x3d\x4d\x0c\xa7\x8b\xf5\x78\x57\x49\x94\x8e\xd8\x5a\x62\x3e\xda\xcc\xcd\xcf\xc4\x6c\x3e\x12\xf5\x65\x70\x9a\x8f\x44\xbd\x14\x9b\xd9\x94\xb7\x2c\xe5\x2b\x45\x0d\x9d\xfd\x8b\x5d\x58\x27\xa8\xe6\x67\x33\x49\x1b\x51\xe3\x73\x97\xc3\xa9\x2a\x6e\xb5\xcc\x92\xa0\xde\xe7\x98\xf6\x39\xa6\x7d\x8e\x69\xf5\xa8\xf7\x39\xa6\x7d\x8e\x69\x63\x46\x4c\x4c\x12\xa2\x48\xab\xd4\x72\x06\x8f\x5f\x4b\x6a\x31\xbd\x3f\x97\xcc\x62\x5a\xff\x32\xc4\x16\x33\x97\x5e\x72\xf9\xcd\xe8\x45\x6e\xc3\xf7\x42\x2f\x32\x27\x79\x95\x69\xa6\xf4\x63\x43\x10\xfe\x8b\x9b\x6b\x36\x61\x49\x3b\xb0\xd9\x1c\x3a\xd7\x58\x91\xd3\xd2\xd5\x8c\x73\x06\x5f\xbe\x49\x5e\x55\x1d\x7a\x6f\xd2\x41\xc1\xd6\x3d\x1f\xeb\xaa\x9d\xb9\x6e\x13\xb7\x34\xfa\x76\xe7\xbd\x2f\x2c\xbb\x8d\xee\xf7\x95\x71\x6f\x9c\x27\xf5\x05\x18\xb8\xd6\xe3\xcc\x85\xcd\xeb\x0b\x62\xcb\xbd\xfd\xeb\x95\x73\x77\x6a\xfc\xf7\xcd\x4e\xb7\x37\xf7\xf5\xe6\xbe\xde\xdc\xd7\x9b\xfb\x7a\x73\x1f\xea\xcd\x7d\x2f\x64\xee\x5b\x4f\x82\x2b\x59\x00\xbf\x20\x21\xae\xb7\x06\xf6\x72\xdc\xee\xa6\xbb\xaf\x9a\xf4\x3e\x99\x40\x3b\x23\x69\x17\x49\x84\x2b\x73\x47\xec\xb4\x7f\x5d\x99\x34\x12\x54\x25\x71\xc3\x59\x95\x18\x72\xed\x86\xfd\x76\x98\x9c\x7c\x6e\x3e\xb6\x4d\xf8\xbb\x5b\xf7\x2f\x36\xfa\xbd\xaf\xbb\xda\xb8\x56\x7d\x70\xfe\x92\xc5\xe9\x83\xf3\xfb\xe0\xfc\xbd\x0b\xce\xdf\xb9\x4a\x95\x71\xb9\x0c\x3c\xcc\x5c\xcd\x4b\x51\x03\xdc\x45\x6f\x74\x19\x4d\x0a\xa6\x56\x5c\x4c\xb2\x84\x2f\xc0\xde\xb3\xd4\xf2\x6d\xba\x28\x94\xa0\x65\x97\xbf\x7b\xfb\xba\x1e\x1e\xb1\xe7\xf7\xbf\x1b\xf9\x4b\xa9\x35\xfb\x22\xf6\x16\xf3\xde\x0b\x41\xf7\xf8\x9f\x15\xc8\x8c\x4e\x98\xba\x01\xc8\xc5\xea\x63\x30\x62\xcd\x4f\x82\xf2\x8e\xf6\xd6\x9c\xe4\x2a\xc8\x47\x95\xfa\x00\x64\x44\xa8\x45\xf0\x26\x49\x33\xb5\xf8\xaf\x11\xa3\x45\x15\x38\x3a\x63\x5c\x18\x1e\xa8\x3f\x9e\x63\x16\x27\xfa\xfc\x48\xdf\x4e\x84\x19\xe3\x0a\x84\x13\x98\x41\x8c\x1e\x29\x36\xa2\xcc\xe0\xfa\xbc\x43\x7c\x40\xa7\xb3\x58\x72\xed\xbf\xa1\x93\xf8\xd2\xf5\xd5\x56\xdc\xa2\x1f\x13\x3e\x81\x8a\xa0\x79\xd9\xc4\xa0\x1b\xe8\x9d\xd1\xa5\x9d\x7b\x2d\xe6\xa1\xb0\x7c\xa8\x02\xf9\x94\x61\x1d\xc6\x4b\xa1\x7d\x56\xbc\x5b\x2a\x76\xb1\xfc\xd5\x0a\xfc\x4f\xf9\x99\x05\x04\x82\xc7\x30\xe4\xea\x38\xdc\x8f\x61\x87\xee\xb7\xa2\x65\xf7\x8b\xab\xa8\x0e\x3f\x0a\xa2\xc4\x62\x8c\x95\xd2\x0c\x69\x97\x98\x43\x77\x58\x3e\x6c\x81\x39\x54\xf6\x34\xad\xc0\x1c\x2a\xf5\xb5\xe7\x1c\xab\x84\x39\x54\x1e\xf8\xb3\x73\xac\x8e\xc4\xbd\x82\xb1\xbd\x3d\x78\x89\xae\x47\x75\x8d\x89\xff\x56\xa0\x26\xba\xb1\xae\x55\x46\xe7\xb7\x08\x3b\xb1\x8c\x17\xef\xcd\x08\x2b\xd7\xc1\x97\x78\x72\xcb\x97\x5b\x7f\x44\x97\xad\xd1\x17\x57\xfa\xb5\x22\xb3\xac\x98\xdb\x1b\x29\x01\x5b\x15\xbb\x76\x3d\xaa\xe7\xb1\xbf\x07\xbb\xb1\x4e\x08\xd5\x79\xb9\xe4\x81\x3f\x43\x2e\xa8\xaa\x00\x8d\x37\xa5\xce\xa9\x0c\xf1\x24\x22\x2e\x8c\xe4\x15\xdb\x33\x6b\xec\x89\x06\x9b\xfb\x04\x0d\x50\x8c\x15\xd6\x87\x54\x90\x4c\x10\x49\x98\x32\x5a\xbd\x41\xaa\x4f\x79\x4c\x12\xa3\x51\x1b\xd3\xd5\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x50\x1f\x5e\x72\x84\x1d\xe1\x90\xd8\x35\x81\x59\xec\xcb\xd2\xa3\x88\xa7\x19\x4d\x7c\xb9\x07\xef\x5e\xa0\x2c\xa6\x8f\x34\xce\x71\xe2\xe1\xf5\x47\x6c\xf8\x48\x98\xca\x41\x03\xc4\x49\x82\x6c\xb7\x01\x7a\xbe\x33\x05\xb8\x51\x4a\x9a\xd2\x04\x0b\xa4\xb8\x1d\xed\x95\x6d\x0b\xdd\xcd\x89\x1f\xab\x2b\x25\x80\x52\xfc\x40\x24\xa2\x0a\x65\x5c\x4a\x3a\x49\x8a\x63\x7c\x7f\x8e\x60\xdc\xa7\x17\xe7\xb6\x36\x3b\xe2\x86\x0f\xba\xce\xad\x03\xc3\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xb5\xcd\xaf\xaf\x0d\xf9\xde\x6e\xca\x0d\x47\xf6\x7a\x3a\x6b\x67\x85\xb5\xab\xb6\xda\x4d\x55\x6d\xd7\x53\x9f\xc1\xe7\xdc\x5d\x99\xac\xe0\x15\x96\xd5\xc8\x4d\xf1\x0a\x4b\xdd\xbf\x09\xe7\x74\x69\xc4\x2f\x81\x57\xf8\x1b\xd5\x2c\x7b\xb5\xf2\x59\xd6\xed\x4b\xd5\x29\xf7\x5c\xa1\xec\x91\x16\xfb\x2a\x17\x7d\xa8\xc9\x0e\x17\xa7\x0f\x35\xe9\x43\x4d\xbe\xd8\x50\x93\x76\xf5\x84\xc6\x5b\x67\x6c\xae\x59\xd7\xce\x5b\x19\xc4\xaf\x20\x4a\x69\xb1\xbf\x43\xa5\xbb\x26\x6d\xa1\x90\xa5\x4b\x95\xa9\x36\xd7\x1c\xce\xe3\x37\xa1\x32\x34\xae\xe6\x4b\xa8\x0e\x7d\x91\xb4\x9d\x16\x49\xdb\xbb\x69\xf7\x52\x65\x2f\x55\xf6\x82\x53\xc7\x09\xf7\x82\xd3\xfe\x0a\x4e\xaf\xa5\x0d\x7d\x49\x78\xd9\x5a\xc4\x2a\x65\x25\x2d\x8d\x53\x36\xf8\x4a\xe0\xcc\xc8\xb3\x84\xe3\x78\x55\xc4\xd1\xaf\x81\xf8\xb6\x44\xee\x0b\xda\x15\x45\x9c\x72\x45\xfc\x5b\x26\xdb\x99\x06\x74\x8f\x6f\x41\xb4\xd3\xe3\x34\x23\xee\x10\x1d\x19\x76\xf8\xee\xdf\x3b\x0c\xfc\xc6\xde\xc9\xc0\x69\x26\x38\x76\x00\x06\x46\x3c\x4b\xf1\x02\xcd\xf1\x23\x41\x53\x4c\x13\x63\x9f\xa3\x31\xae\xae\x6f\x65\x6e\xcb\x06\xf4\x9f\xeb\x0d\x08\x97\x87\x53\x64\x34\xea\xfb\xc2\x48\x55\x11\x4e\x9c\xbb\x0f\xde\x99\x63\x89\x70\x22\x08\x8e\x17\x68\x42\x08\x0b\x32\xd9\xba\x8e\x79\x27\x82\xf1\xab\x87\x67\x86\x74\xf3\xaa\x51\xde\xc0\x35\x20\x5e\xb1\x14\xf7\xf8\x5c\x8a\x65\x95\x93\x6c\xa1\x43\x6e\xa3\x38\xca\xef\xde\x0a\x73\x79\x09\x35\xf1\x0b\xf6\x22\xf5\x9e\xa2\xe5\x61\x78\x3b\x8a\x6a\x1a\xb1\x3b\xad\x5a\x15\x18\x0c\x41\x8a\x2c\xfa\x83\x5b\xae\x3f\x40\x84\xbe\x8d\xda\x4f\x16\x85\xe6\x2d\xab\xad\x79\xb9\x0c\x1d\x6a\xa1\x38\x22\x42\x19\x90\x07\xa6\xc8\x67\x25\xd1\x21\x4a\xe8\x03\x41\xef\xf5\xe9\x40\x83\xeb\xf3\xf7\x07\xe8\xbd\x29\xaa\x8f\xb2\x04\x33\xf9\x7e\x6f\xb4\x8f\x5e\x45\xef\x93\x8c\x7b\xcf\x4f\x6f\xc0\xe8\x0d\x18\x3b\x5f\xc6\x7d\x32\x60\xbc\xa2\x8c\x6e\x72\x9b\x9e\xa5\x98\xed\xbe\x48\xeb\xbd\xb0\xde\x0b\xeb\xbd\xb0\xfe\xc5\x0a\xeb\xfb\xb1\xc2\xbd\xa4\xde\x4b\xea\xbd\xa4\xde\x4b\xea\xbd\xa4\xbe\xf3\x65\xec\x25\xf5\x8a\xa4\x0e\x7f\x39\xb4\x80\x75\xc5\xf6\xce\xe2\xfa\x66\xd0\x00\xdd\xdc\x74\x16\x1b\xe0\xad\x48\xe6\xbd\x54\xde\x4b\xe5\xfb\x2d\x95\xef\xcd\x84\xbe\xbc\x84\xe0\x3e\xa5\xb6\x4f\xa9\xed\x53\x6a\x5f\x23\xa5\xd6\xf1\x92\x65\x12\xce\xb2\xba\x3e\x3f\x59\xe6\xf2\x15\x65\x51\x92\x83\xa8\xaa\x7f\xfe\x3e\xa7\x49\x8c\x40\x45\xd2\x9a\x2e\xe5\xec\x6b\xa0\x27\x20\x05\x18\xa7\xab\x44\xb1\x5c\x82\xf9\xa9\xc6\xea\xf6\x56\x88\x29\x46\xbb\x29\x0c\xdb\xae\xf6\xd4\x15\xc6\xd8\xa4\xfa\x5f\xe9\x37\xd7\xd0\x1e\xd5\x04\x3c\x70\x62\x89\xe6\x48\x6e\x7c\xcf\x5c\x1d\xb0\xb1\xcf\xb5\x6a\x05\xfe\x6c\x3f\x7a\x5b\xa5\x0c\xea\xa3\xee\x2b\x04\xa2\x60\xd7\xfa\x0a\x81\xcf\x38\x6f\x77\xce\x56\xcc\xdc\xd1\xa8\xb1\x85\xbf\xd1\x69\xbf\x7a\xb0\x63\xfb\x49\x7f\xd5\xd0\xc7\xc6\x8b\xac\x96\x5b\x77\xfc\xcf\xc6\x7b\xea\x15\x0a\x23\xae\x7d\x39\xed\xa4\x44\xe2\x36\xd7\xd3\x47\xa2\xbe\x94\xbb\xa9\x2f\x93\xd8\x97\xd7\xd9\xd1\x74\x37\xba\x7b\xde\xec\x6c\xfb\xa2\x90\x7d\x51\xc8\xbe\x28\x64\x5f\x14\xb2\x2f\x0a\x89\x7e\xe3\x45\x21\xd7\x96\x5f\x77\x50\x1e\x72\x1b\xe9\xd5\x74\xff\xa5\x08\xb0\x7d\x89\xc8\x5e\x86\xdd\xdd\x74\x7f\x5b\x32\xec\x1e\x5a\x50\xf6\xa2\x16\xa6\xb7\xa0\xbc\x3a\x2c\x91\x67\xed\x9d\xa1\x89\xc2\xb8\x17\xff\xf5\x4e\x11\x8a\xdc\xa6\xf5\x28\x45\xf6\xff\x7a\x94\xa2\x1e\xa5\xa8\x65\xd6\x7d\x60\x75\x8f\x52\x84\xfa\xd0\xe1\x3e\x74\x78\x9f\x43\x87\x3b\x6c\x63\x8f\x52\xd4\x51\x64\x7c\x26\xa4\x22\x27\x73\x6d\x85\x56\xd4\x20\x0e\xae\x46\x2c\xfa\xb9\xae\x11\xed\xad\xa8\xe7\xc6\xda\x23\x17\xf5\xc8\x45\xdb\xd2\xce\x5e\x28\xa0\x2f\x88\x60\xd4\xc4\x61\xd6\xc9\x8b\x6e\x60\x2e\xdb\x2a\x98\x6f\x03\xcd\xc8\x8d\xb6\x4f\x92\xee\xd3\x31\xf6\x3f\x1d\x63\xef\x92\xa4\xf7\x46\x53\xe9\xd5\xf9\x3e\x4f\xba\xcf\x93\xee\x8d\x1d\xbd\xb1\x63\xe7\xcb\xb8\x4f\xc6\x8e\x57\x96\xdb\x9f\x11\xd5\x68\x1f\x25\xf8\x5e\x80\x37\xef\xf5\x02\x7c\x2f\xc0\x7f\xa1\x02\xfc\x7e\xac\x70\x2f\xbd\xf7\xd2\x7b\x2f\xbd\xf7\xd2\x7b\x2f\xbd\xef\x7c\x19\x7b\xe9\xfd\xc5\x90\x8e\x9a\x44\xf8\xb5\xd1\x8e\xd6\x74\xf3\x05\xc9\x6c\x6f\x49\x5a\xef\x25\xf5\x5e\x52\xdf\x6f\x49\x7d\x6f\x26\xd4\x23\x1f\xf5\xc8\x47\x3d\xf2\x51\x8f\x7c\xb4\x91\x8c\xf4\x6f\xf6\x58\xbe\x0b\x6e\x62\x7f\x65\xbf\xfb\x3e\xe1\x93\xbb\x45\x46\xf4\x7f\xcf\x68\x4a\x98\x04\x89\x96\xaa\x45\x28\x13\xb5\xac\x7c\x7d\xcd\xdf\xdd\x9e\x5f\x7e\xbc\x08\x53\xd5\xde\x7d\xba\xbf\xb8\x3b\xbf\x1e\xdc\xf8\x75\xf1\xb3\x0a\xd7\xc2\x7e\x57\x12\xeb\x2c\xc9\xdf\x10\xad\xbf\xc2\xa9\xb9\x55\x58\xe5\x72\xb3\x91\xdd\x0c\x6f\x87\x37\x3f\x41\xaa\xdd\xf8\xec\xfc\x76\xf0\xfd\x45\x89\x20\x4a\xcf\x07\xa7\x7f\xb9\x3f\xbf\x69\x7f\x3e\xfc\xef\xf3\xdb\xbb\xdb\xb6\xa7\x37\xc3\x8b\xe1\xe0\xb6\xfd\xeb\x0f\x83\xf3\x8b\xfb\x9b\xe1\xd2\xf5\x58\x3a\xda\xe5\x8a\x8c\x84\x45\x82\x2c\x16\x14\x59\xae\x21\x8a\x35\x44\x5e\x7c\x74\xec\xb0\xa9\xaf\x13\x74\x6f\xed\x02\xd4\x36\xee\x42\x92\x7c\x43\x46\xa1\x89\xa9\xc4\x93\x84\xc4\xb5\x96\xdc\x1a\xb6\xb5\x84\x4b\x83\x7a\xd2\x1a\xb8\x17\x39\x35\xcf\x8b\x0c\x2f\x40\x90\x00\xac\x08\x8b\x1b\xfa\x30\xfb\xd0\xda\x03\xd3\xbc\x8b\x3e\x92\x52\x4f\x51\x2e\x04\x61\x2a\x59\x18\x81\x5b\xd6\x1a\x75\xdb\xd7\xd6\xac\xbd\x53\x7d\x83\x73\x2c\x4d\xe4\x55\x69\xfc\x82\x24\x04\xcb\x86\x31\xdb\xdd\xef\xb6\x2c\x7e\xaf\xac\x45\xc7\x5c\x46\x53\x4c\x93\x5c\x90\xca\x69\xe1\x69\x86\x05\x95\x9c\x0d\x3f\xeb\xbb\x4c\x1f\xe4\x2b\xf8\x9c\x8b\xcd\x4e\xcc\xf0\x2f\x21\x05\x5f\x96\xff\xf9\xf1\xae\xfc\xaf\xd2\x99\xbf\xb8\x2b\xff\x6b\x39\xad\x07\x0d\x57\x29\xfb\x10\x7d\xbc\x3b\x41\x1f\x21\xa4\x4b\xa0\xbb\x39\x36\x14\x7b\x71\x77\x82\x2e\x88\x94\xf0\x4b\xf1\xb1\xa2\x2a\x81\xb9\x7d\x4f\x19\x16\x0b\xe4\xa6\x6f\xb2\xc8\x31\xf8\x4a\xdc\xd2\x54\x17\x8f\xfd\x2d\x67\xa0\xfe\x17\xab\x77\xc1\x67\x34\xc2\xc9\x76\x8b\x38\xb8\x2c\xf1\x81\xab\x9b\xa5\x4b\x11\xbe\x5d\x5f\x8b\xc1\xe5\x19\x64\x68\xbb\xa1\x36\xcc\xfc\x92\x48\x4d\x24\x11\x67\xb1\xf5\x1f\xe9\xdb\x7f\x11\x08\xf5\x7f\xe3\x90\xe5\x9e\x4b\xad\x6a\x0e\x2e\xcf\xd0\x31\xba\xba\x19\xb1\x2b\x11\x1b\x63\x2a\xd1\xd2\xb0\xa1\x39\x2a\x11\xe3\x0a\xd1\x34\xe3\x42\x61\xa6\xb4\x22\x00\x62\x80\x5d\x11\xc3\x01\x4e\x79\x9a\xe6\x0a\xeb\x83\x56\x5b\x54\x66\x4c\x2a\xb7\x44\x9d\xc7\xe0\x9e\x69\x58\x43\x23\x27\x14\x73\xc9\x84\x6e\x5f\xcb\x28\x65\x3d\x9c\xc6\x35\x55\xd6\x35\x81\x85\xc0\x65\x69\xe2\x1d\x55\x24\xad\xbe\xdf\x31\xbc\xf8\x5f\x8d\x46\x86\x53\x93\xce\x43\xc4\x40\x44\x73\xaa\x48\xa4\xf4\x11\xdc\x88\x26\xee\x2f\x7f\xbc\xbc\xfa\x39\x94\x20\xde\x0d\x3e\x9d\xfd\xe9\xdf\x4b\x3f\xdc\x7c\xaa\xfd\x30\xfe\xe9\x4f\xb5\x5f\xfe\x7f\x4b\xe9\xa9\xda\x53\x4d\xcf\x0f\xe6\x72\x08\x22\x35\xd8\x95\xdd\x54\x11\x4d\xf1\x8c\x20\x99\x67\x9a\x02\xe4\x51\x79\x7f\xb5\x48\x79\xc1\x71\x4c\xd9\xcc\xa4\x57\x5f\x50\x45\x04\x4e\x3e\xe1\xec\x83\xb3\x81\x6f\xb0\x3a\xff\xf7\xb6\x94\x0c\xff\xee\x97\xc1\xa7\x30\x9d\xfe\xdd\xf5\xcd\xd5\xdd\xd5\xd2\x59\x97\x5a\xa8\x1f\x23\xfd\xf8\x04\xfe\x17\x1d\x23\xdd\xba\x97\x7c\x53\xa2\xb0\xd6\x08\xd0\x57\x26\x25\xd4\xa7\x70\x51\x96\xc0\xa9\xc9\x04\x4d\x29\x5c\x29\xc6\x0a\xf8\xb5\x11\xae\xbd\xf6\xe0\xcf\x8d\xf9\xc0\x24\x7d\xdb\x4b\x99\xc5\x58\xc4\xe8\x6f\xb2\x8a\xcd\x00\xc6\x67\xf3\x03\x89\xd1\x21\x9a\x2b\x95\xc9\x93\xe3\xe3\xa7\xa7\xa7\x23\xfd\xf6\x11\x17\xb3\x63\xfd\xc7\x21\x61\x47\x73\x95\x26\x06\x8b\x42\xaf\xc2\x09\xba\x16\x5c\x5f\x21\xa0\xa0\x13\x41\x71\x02\xa9\xe8\x13\xc3\xff\xf8\x14\xfd\x1a\x71\x41\x8e\x8a\x8d\xb1\x86\x29\x7b\x8f\x58\xe3\xd5\xb1\x7e\xa9\x81\x99\x54\xf7\x13\xc5\x24\xa2\xb1\x15\x33\x08\x8b\x38\x58\x2f\x8d\xbf\x43\xb7\xe7\xf2\x68\x89\x75\x36\xfb\xe5\x0c\x94\x15\x1c\x93\x00\x4a\x42\xf1\x32\xc1\x69\xc5\xe7\xdc\xa8\xad\xb9\x56\xd1\x21\xba\x19\x6e\x55\xf7\x6a\xa6\x27\x1c\xf1\x04\x4d\xf2\xe9\x94\x88\xd0\xd7\x7d\xa0\xb5\x19\x2a\x91\x20\x11\x4f\x53\x90\x18\xf4\x57\xb9\x34\x54\x0d\x2b\x66\x47\x7b\x34\x62\xb0\xff\x5a\xcd\x01\x0a\x88\x39\xb0\x3a\x46\x48\x8c\x30\x5b\x98\x6e\x26\xf9\xb4\xe4\x4b\x07\x8c\x17\x1c\x23\xaa\x46\x6c\x90\x24\x48\x90\x94\x2b\x12\x86\x69\x83\xe3\xad\xb4\xe0\xc0\x22\x05\xc9\x12\x1c\x39\x10\x80\x84\x47\x38\x41\x53\x9a\x10\xb9\x90\x8a\xa4\x61\x03\x5f\x81\xad\x46\xaf\x19\x95\x28\xe6\x4f\x2c\xe1\xd8\xce\xa3\xfa\xd9\xd7\xe5\xd3\x38\x74\xf8\x1b\x43\x21\xb8\x80\xff\xf9\x91\xb2\x78\x67\x1c\xea\xfe\x76\x78\x13\xfe\xfb\xf6\x97\xdb\xbb\xe1\xa7\xf5\xb8\x8f\xa7\x2c\x18\x1e\xe8\xf0\x27\xe8\xd6\x2c\x02\x17\x5a\x22\x12\x2d\x93\xfa\x64\x49\xa9\xf8\x81\xc7\x1b\x72\xdf\x4f\x83\xcb\xfb\x41\x89\xa3\xdc\x9e\xfe\x30\x3c\xbb\xaf\xe8\x03\x76\x7e\x25\x19\xde\xa8\x7f\xe1\x6f\xa7\x3f\x9c\x5f\x9c\x8d\x1b\x14\xc6\x77\x37\xc3\xd3\xab\x9f\x86\x37\x85\x6e\xd7\xb8\x44\x95\xc1\x54\x99\xd5\x9d\x61\x4a\x73\x1e\xa3\xc9\xa2\x19\x6d\x45\x4b\xce\x09\xf8\x73\x0b\xbc\x21\xd3\xea\x09\xf0\x26\x07\x7c\x53\x7c\x91\xf2\x98\x1c\xd8\x77\x00\xa6\xc6\x18\x57\x8c\xc4\xdc\xdc\xb0\xee\x1d\xb3\xc0\x50\x61\x10\x64\xfc\xc2\x9d\xa0\x01\x92\xfa\xc5\x5c\x1f\x6a\x41\x67\x33\x30\x1c\x56\x86\x6a\x5a\xb3\x9f\xc2\xf2\xc2\x77\x66\xff\x33\xc1\xe1\x9c\xeb\x6e\xad\xc5\xd9\x5b\x25\xcc\x87\x06\x65\xb7\xd4\xa2\xc0\x60\x70\x68\x18\x9a\xdb\x2c\xbd\x08\xad\xeb\x65\xce\x63\x91\x58\x01\x6c\x4b\x1a\x7b\x67\x26\xc8\x23\xe5\x79\xf0\xa9\x45\xcd\x29\xed\x78\x63\xf3\xc5\x02\xc0\xb2\x19\xa3\x48\xa5\x19\x4f\x1e\x8d\x2d\x68\x16\xf6\x08\x2d\x4c\x05\x4f\x1b\xda\x28\x1f\x93\xf3\xab\x5b\x25\xb0\x22\xb3\xc5\x99\x65\x19\x9b\x1f\x8f\xb3\xab\x9f\x2f\x2f\xae\x06\x67\xe3\xe1\xe0\x63\xf9\xc4\xfb\x27\xb7\x77\x37\xc3\xc1\xa7\xf2\xa3\xf1\xe5\xd5\xdd\xd8\xbd\xb1\x94\xe4\x5b\x3a\xa8\xdf\xd3\xe5\x17\x4f\x90\x66\xb9\xc0\x1a\x1d\x9c\x65\xc0\x1f\x27\x64\xca\x85\xe1\xf3\xa9\x0b\x7f\xb0\x22\x8c\x5b\x5b\xab\x8b\x55\x66\x71\x02\x96\xb1\xa6\x26\x8d\xd5\x5b\x09\x82\x53\xb8\x27\x30\x43\x43\x16\x1f\x5e\x4d\x0f\x6f\xcd\x8f\x29\x16\x0f\x44\xf8\x4f\x9f\x04\x55\x8a\xb0\x92\x4a\x87\xdd\x90\xbd\x92\x58\x74\x70\x84\x6e\x34\xdf\xd7\xef\xfb\x4b\x4d\x13\x7b\x4c\x14\xa6\x89\xb4\x83\x2d\xad\xeb\x09\xba\xc0\x62\x56\xd8\xe1\xbe\xe2\xd3\xa9\x69\xec\x6b\x33\x0c\x7d\x87\x95\x66\xd1\xc0\x7b\x35\x69\xb8\x7b\x11\xfa\xb3\x2f\x7b\x79\xb8\x4e\x55\xf7\xd9\x76\x34\x75\x7f\x0d\x2b\x6e\x34\xf6\x92\x6e\x68\x9f\x34\xd0\x1a\x4c\xdc\x3c\x5e\x7e\xc9\x34\xb7\x5d\x27\xa7\xf2\x8b\x0d\xe4\x64\xb2\xf8\xf4\xce\x4f\xb5\xb6\xd9\x40\x4b\xe4\x33\xb5\x06\x83\x70\xdc\x15\x12\x2a\x9a\x01\xf3\x2a\xce\x32\x82\x85\x6c\xda\xed\xb2\x18\xd8\xb2\xf7\xa6\xa7\xb0\x0f\xbb\xc9\xae\x9f\x03\xc4\x19\x18\x1c\xbc\x10\x51\xa1\xc8\x0e\x34\x60\xda\xaa\x51\xc0\x35\x40\x99\x5d\x59\xd8\xb0\x4f\x54\x6a\xa5\xd1\xfc\xf8\xbd\xc5\x33\xdb\x8c\x20\x3e\x0c\xce\x2f\x2a\xc2\xc5\xf8\x6c\xf8\x61\x70\x7f\xb1\xdc\x4c\x58\xfa\xae\xba\xc5\xe8\x10\xe9\xe7\x65\xdf\x3b\x9d\x9a\x3b\xc3\xa1\xb2\x19\x95\x96\x30\x30\x5a\xd9\xa4\x3b\x63\xaf\x8e\x49\x96\xf0\x45\x4a\x18\x98\x78\x4a\x37\xa1\x5e\xcf\x29\xa6\xf6\x6a\x09\x06\x0b\x56\x1c\x6b\x76\x83\x6b\xec\xd0\x41\xc1\x91\xd8\xdf\xbc\x65\x24\xb8\x0a\xeb\xbe\x36\xde\x33\xfb\x9f\x5b\x85\xd5\x86\x67\x6c\x70\x7a\x77\xfe\xd3\xb0\xac\x1f\x9e\xfe\x70\xfe\x53\x93\x54\x33\xfe\x38\xbc\x1c\xde\x0c\xee\x56\x08\x27\x95\x26\x9b\x84\x13\xa9\x07\x5c\xf5\x9e\x52\xe9\xa3\x8a\x22\x83\x27\x87\xa8\x92\xe8\x91\x4a\x3a\xa1\x80\xbe\x67\x3d\x91\xf7\xe7\xc0\x59\x21\xcd\x92\xaa\x85\x13\x5f\x4c\xbf\xe5\x7d\xd4\x9c\xd4\xb6\x6f\xcc\x0e\xa1\x7f\x12\xac\x7c\x66\x73\xdc\xa4\x4f\x10\xe8\xb6\x8f\xa0\xb4\x05\x9f\x31\x2d\x48\xb3\x19\x11\x66\x38\xe0\x7d\x09\xc7\x12\x3c\xd7\xa3\x0a\x85\x95\x62\xd5\xbc\xd0\x3a\x23\x8c\x08\x80\xf7\xf2\x9d\x18\x41\x4a\x10\xf6\x5e\xcb\x5c\x59\x42\x23\xaa\x92\x05\x8a\xc0\x86\x05\xe6\xcc\x14\x33\x3c\xb3\xc2\x01\xa8\x39\x15\x92\xf8\x8b\x81\x28\xbc\x9a\x5a\xd3\xfe\x1d\x25\x1b\x1e\xb3\xfb\xcb\xb3\xe1\x87\xf3\xcb\x32\x09\xfc\x70\xfe\xb1\x24\xc2\x7e\x1a\x9e\x9d\xdf\x97\x6e\x73\x2d\xc9\x2e\x97\xeb\xab\xcd\x36\x1c\x45\xff\xd2\x09\x3a\x33\x9f\x9e\xe8\xc5\x6d\xc0\x5f\xf4\xca\x6f\x65\x1d\x6e\x5c\x58\x9f\xfb\x63\xc8\x94\x68\xf4\x4b\x74\x35\x21\x59\x1f\x64\xc9\x86\xd4\x1c\xaa\x50\xeb\xfb\xb2\xea\x54\xae\x87\x72\x58\x47\xa4\xee\xe4\xa8\xb0\x2c\x85\x31\x0c\x60\x34\x68\x33\x62\x35\xb8\xb5\x0a\x86\xfd\x13\xb8\xa8\xd3\x5c\x2a\xe3\x4a\x04\xe2\x44\x0f\x7f\x96\x7a\x41\xc1\xd5\x78\x84\x6e\x09\x19\x31\x67\x3d\x98\x51\x35\xcf\x27\x47\x11\x4f\x8f\x0b\xf0\xcf\x63\x9c\xd1\x14\x6b\x49\x9a\x88\xc5\xf1\x24\xe1\x93\xe3\x14\x4b\x45\xc4\x71\xf6\x30\x83\x28\x1a\xe7\x4e\x3d\xf6\xcd\xce\xf8\xef\x2e\xfe\xf8\xcd\xe1\xc5\x9f\xbf\x79\x57\xb7\x90\xb5\xed\xff\x90\x45\x38\x93\x79\x62\xa3\xee\x44\xb8\x36\xee\xc8\xe7\x64\xd5\x7e\x5f\x96\xb7\x6b\x3b\xfd\xf5\xf4\xfa\xbe\x64\xb1\x2e\xff\xf3\xd3\xf0\xd3\xd5\xcd\x2f\x25\x4e\x79\x77\x75\x33\xf8\x58\x62\xa8\xc3\xeb\x1f\x86\x9f\x86\x37\x83\x8b\xb1\x7b\xb8\x8d\xed\xed\x47\xc6\x9f\x58\x79\x69\xa4\xe3\x80\xb5\x9e\x4e\xd0\x07\x2e\xd0\x8f\x7e\x27\x0f\x27\x58\xc2\x15\xe3\xee\x2c\x79\x80\x32\x1e\x03\xe3\x45\x24\x9b\x93\x94\x08\x9c\x58\x9b\x81\x54\x5c\xe0\x99\xb9\xe9\x65\x24\xb0\x8a\xe6\x48\x66\x38\x22\x07\x28\x02\x6a\x98\x1d\xc0\xa6\x80\xaa\xc5\x67\x55\x3b\xdf\x4d\xce\x14\x4d\x89\x53\xc1\xed\x3f\xef\xcc\x66\x6c\xb0\x39\x57\x77\x3f\x94\x85\xbd\x0f\x17\xbf\xdc\x0d\xc7\xb7\x67\x3f\x2e\x5d\x4f\xf3\x59\x69\x64\xb7\x10\x80\x74\xca\x93\x3c\x65\xe1\xdf\x9b\x8f\xed\xfc\xf2\x6e\xf8\xb1\x3a\xba\xab\xc1\x5d\x99\x32\x6e\xca\x41\x72\xef\xbe\xbf\xba\xba\x18\x96\x5c\xc2\xef\xce\x06\x77\xc3\xbb\xf3\x4f\x25\xfa\x39\xbb\xbf\x31\x50\x9f\xcb\xa6\xe9\x46\xd0\x30\x51\x3d\xad\x70\x9a\xbb\x66\x85\x9d\x38\xd1\xc0\x06\xa5\x9b\xb3\x7c\x18\x00\x3d\x99\x70\x30\xb0\xea\x1c\x7a\x93\x6a\x64\x46\xda\xc8\x0e\x55\x79\x9b\x50\x3b\x3b\x5e\xba\xd1\xcb\xb8\xf2\x9d\x1f\x82\xc1\xd9\x35\xca\x36\x4e\x12\xfe\x64\xc2\x81\x53\xaa\x6f\x65\x0b\xfb\xa7\x5f\x91\x85\x87\xf0\xa8\x81\xe3\x95\xb7\x85\x44\x82\xa8\x4f\x3c\x67\x6a\x73\x92\x1b\x5c\x96\xf8\xce\xf0\xf2\xa7\xf1\x4f\x83\x32\x05\x9e\x5f\x2c\x67\x35\x61\x13\x0d\x57\xf1\xe0\xf2\x17\x7f\x09\x43\xd0\xf8\x81\xd7\x50\x8d\xec\x1a\x25\x54\x8b\xbd\x11\xd6\xda\x6b\x02\x12\x0d\x22\x14\x4c\x0e\xa9\x9e\x1c\x04\xa9\x66\xc6\x9f\x64\xf8\x93\x19\xe4\x89\xfb\xa3\xd2\x9e\x84\x75\x01\x6b\xaa\x8b\xc9\x87\x76\xac\x56\xcd\x10\x61\x8f\x54\x70\x00\x8b\x46\x8f\x58\x50\x2d\x8d\x9b\x96\xf5\x5c\x4f\xe0\x7f\xd7\x6b\x13\x0c\xa3\x15\xc6\x75\xcb\x85\x3a\xf3\xc1\xc0\x9b\x59\x43\x9a\x82\x62\xeb\xe1\xb0\xcd\x86\x8e\xfa\xb7\x0d\x9b\xb3\x65\xd0\x70\x79\xc2\x7f\x4f\xce\x28\x4e\x34\x03\xd8\x9d\xbc\x38\xb8\xbc\x3d\x2f\xcb\x8f\x65\x35\x23\xe0\xcb\x1b\xcb\x8b\x60\xa8\x34\x23\x77\xca\xc4\xed\x5f\x2e\x8c\x76\x01\x88\xe2\xe6\xdc\x06\x8a\x85\x85\x66\x31\xd2\x44\x86\x85\xac\x7c\x21\x11\x40\xf0\x15\x01\x57\xfa\xce\x82\x70\xa6\x47\x4e\xe3\x11\x23\x9f\x33\xc2\x24\x04\x07\x98\xfb\xac\xf0\xb5\xcb\x23\x74\x3e\x05\x96\xa0\x5f\x67\x28\x67\xd6\x01\xa6\x2f\x5c\x33\xc8\x03\x2d\xca\x16\xe8\x30\x81\xf9\x88\x11\x17\x2c\x55\x0c\x7e\xc4\x7e\xf6\x4e\x34\x78\x34\xe5\x9a\x01\xe9\x5d\xb4\xed\x9d\x20\xcc\x24\x3d\x40\x5a\x61\xa9\xee\x29\xa4\x1f\x68\x85\xd2\x86\x70\x69\x4e\x63\xff\x7c\xf9\x6b\xa0\x16\x27\x1c\x5e\x06\xcd\x77\x41\xe5\x2a\x68\x11\x8d\x13\xe3\x31\x19\x77\xbf\x13\x22\x2e\x88\xf5\xb3\xac\x7d\x0d\xac\x62\xec\x77\x58\x3e\xd4\x7c\x0f\xe7\x4c\x2a\xcc\x22\x72\x9a\x60\xb9\x61\x10\x92\xb3\x71\x1c\x94\x25\x8e\x9b\x9b\xfb\xeb\xbb\xf3\xef\x57\x70\xf9\xea\xc7\xf5\x30\xa0\x28\xc9\x9d\x7b\x6e\x22\x38\x8e\x91\x66\x9f\x33\x6e\x5c\x81\x56\xf0\x2f\x70\xf5\x4d\x6e\x90\x0f\xa8\x2c\x61\xfa\x17\x29\x0d\xd6\xce\x11\xba\x12\xa8\x5d\x08\x14\xe9\x95\x40\x81\xc9\xc3\x6d\x35\x78\x16\x4d\xb9\x21\x6b\xdd\xca\x12\xac\xa6\x5c\xa4\x86\xcb\x97\x26\x6d\x1a\x5f\xde\x28\x65\x8a\x08\x91\x67\x8a\xba\x42\x09\x55\x29\x55\x6f\xd9\x05\x9f\x7d\x22\x52\xe2\x19\xd9\xc6\x01\xdd\xa4\x3c\xdc\xfe\x14\xfe\x13\x1c\xcc\x5d\x64\xff\xd2\x08\x5d\xe4\xbb\xa3\xa7\x2b\xf6\xc1\x04\xf2\x5c\xf3\x84\x46\x1b\x06\xdc\x7d\x18\x9c\x5f\x8c\xcf\x3f\x69\x25\x7e\x70\x37\xbc\x28\x89\x12\xf0\x6c\xf0\xe1\x6e\x78\x63\x11\xe2\x07\xdf\x5f\x0c\xc7\x97\x57\x67\xc3\xdb\xf1\xe9\xd5\xa7\xeb\x8b\xe1\x8a\xc8\x9c\xd6\xc6\xeb\xd6\xd5\xea\xab\x27\xb5\x5f\x60\x87\x35\x2f\x0b\xed\x65\x90\x79\x86\x69\x02\x4e\x70\x6e\x9c\xe1\x18\x31\x1e\x1b\x0c\x2e\xe9\xac\x33\x1e\x96\x1d\x9d\xab\xf7\x49\x82\x70\xae\x78\x8a\xc1\x6b\x93\x2c\x46\x0c\x4f\x34\x6b\xc5\x49\x12\x84\x77\x89\x9c\x31\xcd\x62\x75\x63\xa6\xfe\x41\x94\x10\xcd\xce\xb3\x20\x61\xd0\xfa\x0d\xa6\x94\x41\xa4\x6d\x8a\xc5\x83\x2b\xe6\xe8\xd3\x30\xfc\xa1\x90\x08\xcb\x11\x33\xd8\x60\x56\x5a\xe9\xb0\xc2\x27\x9d\xde\x6a\x5d\x9d\x14\x3f\x10\xbd\x2a\x69\x1e\xcd\x51\x26\xf8\x4c\x10\x29\xad\x6d\x39\xc2\xcc\x04\x20\xd8\xd7\xf5\x35\x34\x62\x8c\xeb\xa5\x70\x26\xec\x98\x64\x84\xc5\x84\x45\xd4\xa4\x06\x82\xef\xde\x9b\x36\x67\x02\x67\x73\x24\x39\x38\xbd\x61\xd9\xc1\x7e\x65\x3e\x72\x37\x99\x45\x43\x83\xc7\xa1\x05\x5a\xe4\x9a\x4f\x5c\x81\x9c\x68\x56\x19\x3e\x76\x97\xa1\x73\xbb\x18\x3b\x60\x9a\x25\x44\x99\x4a\x18\xb0\xe4\xb0\x19\x7a\xad\x4b\xfb\xa1\xb7\xa9\x69\x13\xf4\x85\xed\xc6\x8c\xa5\x1d\xd1\x51\x83\x65\xdb\x1e\x29\xf4\x03\x66\x71\xa2\x5b\x71\x3e\x8c\xf2\x59\x84\x54\x94\x81\xa6\x1a\x77\x1a\xb7\xb9\x45\x23\x9c\xcb\x6d\xae\xd1\x4a\x3e\xa7\xb1\x0a\x1e\x16\x41\x21\x40\xde\x36\x99\x13\x56\x37\xd3\x2c\x12\x27\xdc\xae\x92\x79\x3d\x37\xd5\xdd\x10\x8c\xa6\xe5\x9a\xcd\x04\x65\x11\xcd\x70\xb2\x91\xee\x57\x09\xc6\xb7\x31\xee\x5f\xd1\xa9\x26\x9f\xaf\x6b\x6e\x5b\x45\x44\x0a\x49\xce\x76\x98\x7e\x0b\xd7\xb0\x24\xd9\xac\x06\x22\x8b\x68\x12\x2c\x78\x6e\xfc\x71\xb0\x2e\x24\x6e\x38\xaa\x47\x4d\xdb\xad\x4f\x06\x2e\x07\x40\x6f\xb0\xd9\x26\xf2\xa7\x6d\xfd\x2a\xad\xd8\xde\x4d\x30\x1e\x4e\xae\x9b\xdb\x6c\xda\x81\xe0\xe1\xbf\x96\xd1\xce\x27\x9c\x69\x9a\xb1\x35\x31\x70\x31\x47\xab\x24\xd9\x9a\x7f\x2e\x7e\x26\xf0\x9d\xfb\xbc\x90\xee\xbb\x51\x2c\xa1\x0d\x80\xaa\x77\x52\x8a\x21\x08\xf2\xd4\x2d\x8d\x4f\x73\x2d\xcb\x22\x0c\x51\x08\xe8\x2b\x72\x34\x3b\x42\xae\xc2\xc9\x01\x1a\x5c\x5f\x0f\x2f\xcf\x0e\x10\x51\xd1\xd7\x2e\x66\xd1\x06\x2c\x8d\x98\xe2\x56\x5a\x59\xb8\xea\x34\x29\x11\x33\x52\x9a\xb3\x8b\x6e\x82\x50\xe5\x19\x95\xca\x86\xcf\x6a\xbe\x12\xd4\x11\xa2\x69\x55\xcc\x36\x14\x92\xab\xf9\x36\xa4\x81\xa5\xcc\x53\xad\xcb\x8e\x29\x4e\xc7\x82\x27\xdb\x30\x85\x33\x98\x0a\xa8\xcb\x3e\xc5\x9f\xe2\x14\xe9\x66\x6d\x28\x88\x77\x39\x7a\x91\x4e\x0b\x46\x9a\x2f\xeb\x7b\x33\xb8\xb7\x9c\xf7\xc1\xc6\xa3\x51\x17\x02\x01\x10\x00\x2d\xac\xa2\x30\x1b\x8f\xad\xa5\x7e\x8c\xa3\x48\xab\xdc\x3b\x9e\x54\x50\x9c\xca\xb9\x04\x6c\x47\xcf\x36\xcd\x55\x74\xee\x86\x99\x69\x0e\x06\xc1\xc0\xf5\x5a\x2e\x0d\xfd\x4e\x16\xb5\x5e\x5d\xf9\xa8\x7b\xe9\x4d\x2a\xe6\x12\x96\x04\x76\x52\x9a\xf2\x53\x6a\x4e\x2c\xf4\x68\xd8\xa5\x4b\x88\xd1\x0d\x2f\x78\x2e\x9a\x18\xdd\x88\x9d\x91\x4c\x10\x2d\xe9\x57\x1d\x28\x9e\xa6\x6f\xca\x94\xd8\xd3\x75\x4f\xd7\x6f\x9e\xae\x4f\x4d\x15\xb2\x81\xaf\x3a\xb7\x95\x00\x67\x1a\x1b\x67\x9c\x27\xe3\x0e\x36\x91\xee\x2b\x5e\xf2\x84\x55\x6a\xb2\x01\xac\x00\xcf\x41\x3e\x2a\x5d\x9b\x5c\xdf\x75\x41\x8a\xad\x1d\xde\x92\x65\x70\x2e\xb3\xa0\x1a\xd4\x36\xe7\xbd\xa9\x95\x65\x2d\xa1\x67\x17\x73\x4e\x8d\x7c\xd3\x54\x64\xab\x7c\x98\x9c\x28\x42\x59\xad\xd4\xa1\xa1\x67\xa8\xdb\x0f\x72\xc7\xdf\x73\xae\xb0\xfc\xfa\x68\xc4\xb4\x10\xf5\x40\x16\xc6\xdc\xaa\xc5\x94\xdf\x6b\x59\xfc\x50\x12\x26\x21\xdc\xfb\xf7\xc6\x3d\xa7\x49\xdc\x99\xab\x8d\x6a\x6a\x2a\x2c\x96\xeb\x7f\x41\x88\xae\x6d\xd4\x4a\x49\x45\x00\x74\x51\x34\xcc\x3d\x33\xc3\x9f\x11\x05\x29\xd6\x8a\x2a\xd0\x99\x62\x53\xc2\xb1\x36\xf4\x95\xa6\x2b\x43\x15\x82\x83\x9f\x24\xce\xb7\x63\xfc\xb2\xde\xc6\x4a\xce\xe8\xb5\x85\x5b\x1b\xf3\x7e\xec\xec\x46\x91\xe0\xb5\xba\x88\x58\x22\xb3\xd3\x13\xc3\x0e\x9c\xff\x9a\xb0\xa3\x27\xfa\x40\x33\x12\x53\x0c\x11\xf0\xfa\x5f\xc7\x7a\x5e\xbf\x3b\xbd\xb9\xba\x1c\x17\x99\x3c\xff\x35\x62\x83\x44\x72\x9f\xa5\x80\x18\x67\x3e\xdc\x3e\x13\xc4\x89\x84\x76\x2e\x60\x75\x2d\xcc\x88\x23\xd6\x36\x82\x98\x47\xf2\x08\x3f\xc9\x23\x9c\xe2\x7f\x70\x06\xae\xf4\x01\xfc\x79\x9a\xf0\x3c\xfe\x19\xab\x68\x7e\x0c\xe7\x5a\x1d\x93\x47\xc2\x94\x71\x53\xe9\xe5\x8a\x21\x79\x57\x42\xb4\xfe\xef\xf4\x98\x8b\xa4\x22\xa9\x35\xd9\x88\x64\x0a\xfd\x3f\x82\x4c\x38\x57\xcd\x97\x14\x9f\x4e\x25\x59\xeb\x42\x2a\x94\xb4\xdb\x2b\xf4\xe7\x3f\x7d\xf3\xad\x26\xa1\x4d\xd6\xf8\xfc\xf6\x6a\xac\xbf\xff\xdd\x99\xfd\x5e\xae\xc1\xee\xae\xb2\x82\xb5\x39\xe2\x31\x81\xf3\x39\x83\xdb\x4f\x80\xf3\x02\xd8\x1b\x90\x43\xb1\x8f\x4d\xdc\xed\xcc\xc0\x1c\x6c\x95\x35\xb4\xc5\xad\xfe\x31\xe1\x13\xb0\x0b\xe5\xa5\x02\x69\x4b\x22\x3c\xb6\xb4\xa7\x9f\x51\x99\x25\x78\x51\xeb\x61\xd5\xb2\x5f\x6a\xee\x94\xe1\x88\x14\xf8\x0c\x2e\x18\x2b\xe2\x69\x0a\x01\x82\xce\x73\x12\xd3\x29\x44\x0a\x2a\x7d\xe7\xa3\x09\x51\x4f\x10\x97\xea\x7e\xf5\xb2\x8a\x33\xc8\x6a\x56\x06\xec\x72\xa4\x17\x39\xce\xc1\x9b\x36\x7a\x77\x80\x46\xef\x62\xf2\x48\x12\x9e\xe9\xd3\xac\x7f\x20\x2a\x6a\xda\xc4\x61\x8a\x69\x72\xc9\x95\xbf\xf9\xb6\xd9\x4f\x41\x22\x9a\x51\x7d\xba\xc6\x44\xb7\xfb\xac\x29\x61\xcd\x07\xec\x6e\x4e\x3c\x8e\x14\x8c\x01\xe1\x38\xd6\x44\x0c\xd5\xe2\xdc\xf0\x0a\x13\x3b\x0b\xa6\x5e\xaa\x82\xb4\xbe\xdc\xa6\xa5\x04\xe8\x31\x6c\xb3\x2c\x56\x34\xee\x80\x37\xbc\xec\xf4\x24\xb5\xfb\x65\x9c\xa9\xdb\x77\x5c\x54\xee\x5a\x4a\xff\xb6\x10\x61\x80\xe0\x60\x2d\x96\xad\x16\x9e\xea\x01\xd4\x6b\xd1\x6d\x9c\xe5\x95\xb9\xd5\xdf\x2d\x1d\x9a\x0c\x21\xd4\xa2\xb0\x9e\x28\x58\x17\x6c\xee\x40\x35\x5d\x81\xac\x1c\x71\x94\x70\x59\x4e\x25\xec\x3c\xe8\x53\xfb\xe9\xb2\x71\x0f\x43\x63\x4c\x9e\xf8\x2c\xbe\x4e\x74\x37\x68\x58\xf8\x0a\x56\x86\x61\x13\xca\x2a\x10\xf6\xed\x03\x44\xc1\x19\x05\x92\x6d\x52\x24\x56\xb0\x18\x15\x52\xe2\x88\x15\x26\x3d\x89\x9e\x48\x02\x5e\x80\x88\xa7\x19\x48\x40\x76\xb8\xb6\x25\x7d\x81\x2b\xac\xc8\x01\xe2\xb9\xd2\x8d\x99\x90\x25\x77\xc7\xd9\x78\xa8\x42\x2a\x34\xaa\x89\x8d\x0d\xf0\xd8\x5d\x86\xd6\x0d\x2b\xa4\x0c\x7d\x24\x0a\x5a\x01\x6c\xc4\x70\x82\xa6\xf2\xf6\xd2\xa3\x74\x5a\xdb\xb6\xb5\x4f\x94\x9d\xc9\x1a\x3b\x5f\xe4\x95\x7d\x9f\xf0\xc9\xd2\x7d\xbf\x82\xc6\xd1\xfd\xcd\xb9\xf3\xa1\x14\xe6\xe5\x00\xdc\xa9\xa4\x70\x0d\xaf\x6f\x86\xa7\x83\xbb\xe1\xd9\x11\xd2\x7a\xdd\x47\xa2\xfc\x74\x21\xfc\xdc\xc3\x04\x9a\x91\xdb\x44\x35\x26\x15\xc1\x71\x0b\x75\x13\x21\x4a\x41\xe2\x2b\x18\x47\x39\x8b\x6d\x39\x61\x43\x0e\x19\x65\x26\xa3\x0f\xf2\x2e\xab\xf3\xb4\x8e\x8b\x55\x27\x10\xcc\xc8\xe3\xb7\x63\xc4\x37\xe3\x4d\xeb\x8e\x8b\x55\xe4\x53\x76\x78\x3c\xf7\x64\xe0\x68\xa9\x39\xa1\x02\x75\x9a\x96\x21\xaa\x71\xf7\x39\x05\x11\x00\x9f\x70\xb6\x3c\x3a\x17\x3f\x95\x88\xd6\x48\x32\x81\x69\xe3\xb9\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\x21\xef\x1b\xde\xea\xf9\xa6\x09\x88\x91\xb5\xea\xf9\x47\x23\x56\x19\x84\x75\xf3\x49\x04\x67\x07\x7e\xa1\x0c\x95\xae\xc4\x03\x34\xa5\x9f\x6d\xa3\x85\xfb\xdf\xbd\x1a\xd8\x83\x5a\xdc\x4d\x73\x5c\x3f\x53\x6b\x88\x0d\xd7\xf0\xfd\x52\xf7\x07\x97\x4a\x4b\x5d\x5a\x72\x15\x44\xeb\x17\x24\x46\xd0\xad\x0f\x46\x58\x29\x32\x28\x2c\xf4\xa2\xe0\xb5\xf4\xad\x02\xe6\x35\xc6\x8a\x1c\x2a\xba\x32\x3e\xdc\x86\x10\x41\xb0\x11\x56\x41\xb6\x74\x71\xf3\x4c\xc8\x0c\x33\xe7\xb9\x6e\x19\xae\xbb\xf2\xb6\x60\x55\x5a\x82\xc5\x10\x3d\x07\xf2\x15\x44\x46\x95\xc6\x21\x33\x58\xcf\xa5\xe3\xb0\xc6\xc1\x7d\x58\xb6\x27\xec\x6d\x95\x2d\x83\xcd\xb3\x78\x9f\x06\x9b\x60\xa9\x90\x1d\x53\x9b\x26\x19\x48\xf8\x3b\x00\xbe\x58\x56\x60\x37\x54\xcd\xba\xda\xe3\x34\x09\x95\x95\x10\xa2\x14\xb5\xd5\x5f\x73\x49\x6c\x12\x5d\x4a\xc4\xcc\x09\xc2\xa6\x32\x97\x3f\xdb\xb6\x44\x97\xbb\x25\x42\x66\x02\x31\x0c\xf5\xa6\x8f\xd0\x80\xd5\xd2\x89\x9d\xd9\xba\xb4\x5e\xe6\x4e\xc2\xc9\x13\x5e\x48\x94\x09\x93\x79\x67\x02\x1b\xdc\xe4\xc1\x9f\x58\xfe\xc8\x5b\x8a\x94\x8b\x2c\x41\xa0\x4a\xaf\xf6\x29\x04\x05\xa7\xbb\x73\xbb\x8e\x3a\x51\xc5\xe9\xde\x54\x13\xda\xab\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x6d\xb2\xe1\x46\xda\x92\x6e\xe7\x14\x9a\x39\xb3\xad\x34\x5f\x4e\xd7\x46\x61\xb2\x10\xbb\xe6\x55\xa7\xd3\xc1\x21\x90\x0a\xcf\x08\x32\x23\x5a\xa6\x98\x14\xd0\x01\xa1\x41\xdd\x62\x31\x81\x9e\x60\x5b\x1d\x96\x83\x0c\xda\x84\x77\xb0\x0c\x5f\xe0\x09\x49\xb6\x8e\x05\xd8\xc8\x4a\x07\x5d\x5b\xe4\x49\xc5\xf5\xd2\x40\xb0\x04\x41\x4f\x73\x22\xaa\xec\xd8\xd9\xb6\x45\xde\x14\x3a\xb1\x6c\x9e\xa5\x62\x78\x5b\x4c\xd4\x41\xa9\x6e\x32\xd5\x36\x80\xd5\xf0\xda\x0b\x80\x48\x9b\xec\x23\xe1\xf5\x57\x35\x09\x6e\x36\x90\x00\x0f\xb5\x65\x1c\x5b\x03\xa2\xae\x9c\xca\xc6\x39\x18\x1d\x0b\x0d\x9c\x4f\x11\xe3\x8c\x20\x2a\x8b\x97\x55\x39\x5a\xcc\x67\x30\x6a\x11\xdf\x18\x5f\xea\xe5\x5d\x9f\xdb\xd2\x52\xe4\x96\x78\xdb\x80\x0b\x7f\x67\x44\x2b\xaa\x58\x2c\x00\x01\xc5\xf0\xe1\xb2\x4c\xb7\x72\x9c\x3b\x17\xb8\xef\x1c\xc0\x4d\xe0\xc8\x54\x1c\x81\x18\x59\x19\x1c\x32\x30\x31\xf6\x25\xfb\x91\xcd\xe2\x1b\x31\x6f\xd9\x00\x42\xa4\x12\xa5\x38\x83\xd8\x73\xc6\x55\xf1\x95\xc9\x4a\x55\x7e\x0b\x0f\x9c\x20\x2e\x0d\x4c\x79\xcb\x0a\xac\x32\xed\xb8\xeb\xb7\x58\xd7\x32\xfa\x87\x43\x2e\x9a\xd1\x47\xc2\x1c\x4d\x1f\xb8\x33\xa1\x07\xe5\x3a\x4d\x16\x87\x18\xbc\xb0\x24\x0e\x0d\xd7\xcb\x39\x92\x2d\xed\xba\x07\xf6\xc8\xee\x4b\xa6\x37\x3e\xaf\x59\x28\x4d\x0e\x79\x09\xfc\xcf\xf9\xcd\x43\x2a\xb5\xb0\x46\x26\x50\x1e\x4b\xf4\x7b\xc6\xd5\xef\x03\xe0\x27\x67\xbc\x30\x95\x7f\xad\x09\xea\xa0\x86\x68\x0b\x87\xd6\x12\x0e\xc2\x41\x02\xf2\xca\x95\xdf\x16\x7f\xad\x88\x0b\x78\x56\x69\x74\x58\x0f\x12\x6c\x83\x04\x37\xa5\x32\x76\x66\xb1\x79\x89\x9a\xf6\xc8\x90\x81\x20\x2e\x19\x3d\xe5\x82\x54\xca\x75\x18\x7e\xee\xa3\x68\xd3\x4c\x35\x66\xa2\xd5\x45\xa3\x06\x83\xa7\xa9\x5c\x50\x9c\xf4\x92\xa1\x53\x1e\x8d\xd8\x2d\x21\xed\x70\xf6\x7e\x2f\x7e\x85\x86\x60\xac\x4e\x6a\x5c\x42\x69\xbb\x08\xa9\x4d\xcb\x60\x23\x4b\xa8\x66\x05\x46\x54\xb3\x5d\x62\x93\x30\xd8\x36\xb9\xdc\x3b\x29\xc2\xba\xcc\x6d\x20\x48\x47\x23\xf6\x81\x0b\x7b\x05\x4b\x0b\xc3\x38\xc1\xd1\xc3\x21\x61\x31\xc2\xb9\x9a\x1b\x30\x22\xeb\x57\x58\x58\x6a\xd0\x92\x06\x90\x8d\xcf\x34\xa2\x32\xc2\x22\x76\x80\xa0\x8f\xdc\x8d\x62\xc4\x82\x46\x00\xe8\x11\x70\xb0\xa1\x1a\x50\x9b\xaa\x49\xa0\xf0\x40\xdb\x5a\x34\xd5\xb9\xa9\x55\xb9\x59\x7e\xce\x4a\x75\x7b\x00\xa2\x92\x11\x69\x45\xf6\xca\xea\x9c\x3b\x6b\xa3\xd3\xef\x64\x58\xf9\xdc\xbf\x79\x60\x35\x0a\x63\x92\xb2\x33\xd0\x92\xce\x37\x8e\xd7\x96\x40\x95\xa6\xb9\x80\x18\xa5\xa6\x36\xbf\x8a\xe6\x34\x29\x7c\x17\x5f\x1f\xf8\x61\xea\x26\x13\xf2\x48\x12\x03\xe9\x17\x09\x08\x5c\x30\x56\xc3\x6f\xd0\xff\x31\xb5\x5f\xd0\xb7\x23\xf6\x11\xd8\x70\x92\x2c\x00\x70\xc4\xb7\x8c\x55\xa5\x99\x87\xc6\x01\x28\x1b\x29\x85\xca\x03\x31\x7b\x3d\xc7\x8f\x64\xc4\x5c\x33\xff\x07\x3d\xa0\x3f\xa0\x6f\xdb\xd4\x3b\x17\x7f\xf0\xcc\x76\x8e\x0f\x81\x77\x3f\xb8\xe5\x2c\xa3\xb4\xfc\xc6\x99\x41\x4a\x46\xc8\x86\xc4\x23\x8f\x1b\x46\xd9\x23\x8f\x6a\x41\x2e\xe1\xa9\xc5\x82\x30\x35\x66\x3c\x26\x63\xd2\xe0\xd2\x5c\xc2\x24\xb4\x10\x70\xc9\x63\xb2\xd2\x21\xe9\x99\xe9\xcf\x60\xba\x91\xf9\xc4\x6f\x07\xe4\x3f\xf8\x60\x77\x6f\x7d\x28\x53\x5a\xf3\xc8\x3d\x38\xcf\x26\xe3\xde\xd4\x99\x7a\x65\xe5\xb3\x03\xb8\x10\xec\x00\x9a\x1d\x7a\x09\x56\x2e\x44\xbc\x7a\x1c\xab\x8e\x00\xfd\xb2\x9e\xb9\xbd\xac\x02\xd8\x21\x80\x86\x15\x74\x46\xb5\xfc\xde\xdd\x61\x0b\x9c\x70\x13\x6f\x86\xc1\x60\xe9\xe4\xce\x28\x96\xc2\xe5\xa1\x1d\x7a\xfa\x2b\x9c\x90\x13\x9e\x57\x05\x78\xbb\x00\x54\x86\xc1\xeb\x56\x56\x5f\x68\x3e\x3c\x33\x01\x92\x64\x4e\x4d\x4a\xc2\xe0\xf4\x02\xe9\xd3\xc1\x53\x93\xb7\x0b\x8b\x96\xab\x39\x17\xf4\x1f\xad\x01\x5c\xed\x32\x7a\xe1\x69\x2d\xe2\xdd\xcc\x38\xcb\xd2\x3a\x10\xab\x11\x29\x54\x49\x2b\x69\xd2\x99\xd0\x24\x07\x88\x1a\xcd\x66\xa7\x79\x62\x70\x2d\x23\x2e\x62\x53\x9c\x4e\x96\xa2\xeb\xf4\x7b\x5e\xbc\xc7\xca\x37\x48\x2d\x92\x87\x45\xce\x34\x16\x9c\xa5\x02\xe8\x5f\x72\x92\xef\x28\x40\xd1\xa2\xe1\xbf\x50\xe4\x47\x55\x0d\xc0\x33\x59\xc4\xec\x9a\xb5\xd1\xbc\xb9\x58\xdf\xbf\xeb\x99\xca\x20\xa4\xd7\x59\x16\x7d\x86\xac\x51\xc9\x4d\xdd\x94\xb5\x2c\x3a\x37\x06\x19\x70\x07\x26\x9d\x97\x88\xe7\xa8\xcb\x48\x0d\xec\xc7\x92\xdf\xa3\x0f\x70\xad\xb2\x88\x67\xb2\x93\x38\x88\xc5\x8a\xf4\xf1\x8c\x26\x93\x0d\x98\x5c\x5d\xa8\x5e\xb6\xde\x81\x01\xc5\xb3\xb5\x86\x58\x73\xc5\x91\x9e\xfb\x93\xa0\x90\x40\xbf\x28\x5e\xf6\x25\x82\xdc\x75\x11\xf2\x18\x2d\xa5\x18\xb1\x16\xe2\x3a\xdc\x12\x2e\x9a\x79\xfc\x1a\x06\x08\xdb\x50\xb9\xeb\xba\xdf\xbe\xed\x44\x18\x96\xb4\xaf\x47\xa2\x9e\x3d\xb7\xf2\x30\x78\xa0\xd4\xd7\x31\x20\x7a\xd1\xe6\x99\x4f\xc6\x5a\x14\x12\x5c\x64\x6b\x93\xc8\x6d\xd9\x54\xb9\x36\x5d\x98\xbe\xc7\xe0\xe7\xde\xda\xbd\x13\xb8\x00\x8a\x6c\x0a\x93\x46\xe7\x32\x66\x5f\xc8\x90\x09\x91\x03\xe5\x44\xbe\x20\x70\xa0\x2d\x63\xf3\x59\xf9\x59\x81\x50\xe9\x38\x52\xc7\xa1\x2c\x75\x97\x76\x74\x7e\x82\x85\x6c\x19\x7b\xbd\xb0\x51\x9f\x65\xb7\xa1\x09\x3d\xe3\x41\xe4\x84\xab\xc1\xa2\x04\x86\x04\x02\x08\xfb\xfe\xd9\x68\x79\x54\x1a\x2b\x8c\x43\xa2\x4c\x33\xb5\xb0\xc0\xe5\xc0\x9b\x2d\xa4\xb1\x9a\x63\x66\x93\xb2\x9b\x5c\x94\x55\x3e\x1d\x97\x9c\x94\x4d\x9d\x41\x47\x56\xb5\x6d\x6c\xd2\x2d\x74\x98\xe4\x53\x49\xaa\x68\x8b\x48\x30\x35\x60\xc6\x38\x69\xb5\xa7\x4c\x38\x4f\x08\x66\x6d\x6a\x67\xe3\xe3\x9a\xf5\x95\x86\x89\x14\x16\x9f\x45\x89\x9c\x68\x9d\x1b\x27\x49\x65\x5e\x18\xca\xb8\x2a\x8f\x03\x3f\x29\x8a\xd5\x74\x77\x98\x26\x78\x42\xd6\x72\x91\x5e\x98\x0f\x96\x52\x11\xbc\x52\x94\x19\xed\x94\x99\x1b\x86\x7f\x35\xe6\x31\xaf\x1a\x58\x98\xfd\xbc\x54\x84\x28\x67\x10\x6f\x36\x44\x49\xa2\x5c\x50\xb5\x18\x5b\xc3\x53\x77\xa6\x75\x6b\xbf\x3c\xb5\x1f\x76\xd1\xea\x4e\x90\xeb\xcf\x19\xba\x40\xbc\x11\xd4\x80\xdc\xda\x29\x74\xd9\x6e\xad\xa9\x35\xe6\x37\x2e\x5b\x58\x97\x60\xd9\x6d\xa8\xba\x8b\x4d\x87\x67\xc1\x33\xc7\x7c\xea\x52\x17\xbb\x2f\x6c\x15\x55\x74\x0d\x8b\x9d\x43\x48\xca\x04\xe5\xc2\x82\x77\x76\x09\xac\x4a\xf1\xe7\x71\x86\x05\x4e\x12\x92\x50\x99\x6e\x6e\x5f\xfc\xe3\x77\x4b\x47\x7b\x6a\x40\x66\xa5\x85\x6c\xfe\x4c\xd3\x3c\x0d\xca\x83\x03\xb2\x4d\x80\x4f\x61\x4d\xf6\x36\xcd\xd2\x0d\xb0\xb8\x68\x98\xa2\x22\x40\x1c\xd1\x3a\xb1\xc7\x9e\xb2\xea\x32\x8e\xe6\x50\xb6\x75\x8a\xa9\x60\x44\xca\x23\x74\xc9\x15\x39\x41\x9f\x70\x76\x07\x0a\x9f\xa9\xfa\x30\x33\x16\x5a\x2c\x91\x96\x9c\x72\x46\xd5\xc1\x88\x59\xc0\x2a\xb7\x2a\xc7\x11\x67\x06\xb4\x24\x82\x85\xf5\x4d\x80\xc9\xd1\xa1\x77\x28\x03\x04\xaf\xa9\xa4\x65\xb1\x05\x7e\x1a\x07\x11\x94\x63\x13\xa1\xbe\x06\x1d\xdf\xe0\x27\x13\x33\x0c\x55\x0e\xcd\xd7\x4b\xa4\x47\x1b\x94\x63\x41\x7e\x0d\x56\x8f\x0b\x5e\xe0\x00\x39\x49\x90\x87\x27\x37\x11\x92\x5f\xd1\x23\x72\x84\xbe\x4f\xf8\x44\x1e\x20\xe9\x71\xad\x5c\x11\x46\x79\x60\x9c\x24\xf0\x6f\x93\x4d\xf2\xb5\x5b\xfd\x82\xef\x03\x32\xff\x94\x7e\x36\x65\xed\xe5\x1f\x4f\x8e\x8f\xd3\xc5\xe1\x24\x8f\x1e\x88\xd2\x7f\x81\x4c\xd1\xb8\x42\x2e\xc9\x13\x37\xa5\x8c\xae\x5a\x9d\x7a\xba\x69\x27\x8a\xb4\x40\x05\x92\x00\xb4\x99\xbe\xd2\x7d\xed\x13\x97\x9d\xc8\x59\x73\x61\x07\x3b\x65\x91\xb7\x1d\xaf\x12\x26\xd2\x33\x5e\xbc\x03\x83\x96\xe8\xce\x47\x19\x8a\x69\x9a\xe0\x99\x31\x0c\x16\xe6\x6c\xb8\x6b\x9d\x82\xa9\x08\x73\x2e\x52\xca\x66\x49\xd9\xb8\x76\x95\x52\x4b\x45\x7a\xee\xe0\xf3\xd7\xa7\xac\x1c\xe9\xf4\xde\xb9\xc4\xc0\xb5\x65\x4d\xfe\x47\x23\x36\x90\xe8\x89\x98\x92\x2d\x90\xd6\x04\x16\xf2\x9c\xca\xb9\x4f\x6a\x02\x9b\x1d\x34\x6a\x10\x6b\x74\x4f\x5e\x79\x81\xa4\x0d\x08\x82\x35\x3e\x04\xab\x05\x41\xe1\x49\xdd\x30\x64\x2d\xbb\x60\x36\xf4\x24\x70\x96\x11\x31\x62\x16\x7d\x04\x30\xb6\x38\xb7\x81\x0a\xeb\x61\x68\x94\x43\x6c\xa1\x92\x4e\x0a\x82\xb7\x2c\x0a\x06\x38\x3d\xdd\xab\x3d\xa5\xeb\x01\x40\x7f\xe0\xe3\x98\x13\x19\x18\xe0\x90\xd7\xa3\x13\x3a\x25\x9a\x6b\x8f\x98\xde\x9d\xd0\x58\x68\xb0\x83\x1c\x94\x90\xee\x34\x12\x5c\x4a\x1b\x35\x6b\xda\x59\x9e\xfb\xb0\x05\x4c\xb9\x01\x40\x32\x05\x02\xab\x80\xe5\xc1\x33\x07\x5d\x6e\x1f\x36\xd7\x8d\x6b\x6b\x6a\x25\x50\x79\xb1\x16\x6b\x40\x95\x1f\x9f\x5e\x9c\x7b\x7c\xde\x4a\xd7\x75\xac\xf2\x10\x34\xaa\x1d\xad\xbc\x3e\xe3\x00\xb7\xbc\xd2\xc4\x12\xe4\xf2\xd5\x9b\x55\x8e\xd5\xdb\x26\x23\xb8\xb2\xf5\xab\xf8\x66\x85\x66\x56\x85\x94\xee\x68\x9b\x5a\x12\x0c\x22\xb8\x68\x9f\xdb\x3b\x06\x17\x96\x7e\x4b\x2a\x9c\x66\x61\xba\x94\x83\x44\xb0\xd3\x34\x47\xad\x4d\xab\x7a\x51\xa8\xa6\x08\x1b\x4f\x74\x75\x70\xb5\xad\x58\xcf\x5a\x7d\x67\x11\xa0\x76\x11\x82\xf8\x72\xf9\x87\xc9\xa2\x88\xb8\x91\xf6\xce\xf3\x15\x9a\x9b\x6d\x76\x13\xe2\xd1\xae\x5a\x37\x74\xdb\x04\x23\xa7\x43\x20\x41\xb0\xb4\xae\x54\xc8\xc3\xa9\xc4\xe8\xaf\x61\x56\xf3\x63\x36\x99\x7c\x87\x1e\x5f\x2e\xb8\x6a\x2c\x64\x72\xe4\x0e\x22\x15\x82\x40\x9d\x6b\x83\xd9\x7b\x5e\xb9\x5d\x00\x5e\x59\x10\x1c\x2f\x82\x15\xf1\xce\x42\xd3\x33\x98\x15\x24\x4d\xb5\xe2\x03\x22\x1d\xe3\x87\x3c\x73\xb2\x5e\xe9\x2d\x00\x07\xa4\x53\x7d\x63\x05\xae\x46\xfd\x05\x3b\x84\x02\xae\x5a\x36\x6e\x88\xb3\x72\x8d\x40\x5c\x16\x40\x06\xcf\x89\xbd\xe1\x46\xef\x06\xdf\x5f\xdd\xdc\x0d\xcf\x46\xef\x8a\xc8\x5a\x97\x3a\xe2\xa4\x1c\x8f\x5d\xc6\xd9\x88\xf9\x60\x38\x8f\xed\x02\x7b\x89\x70\x1c\x17\xc8\x5a\x56\xf8\x36\xb1\x3c\x4b\x39\x72\x70\x2a\x56\x86\xc1\x2d\x69\xe6\x1e\xf2\x07\xf6\xf5\x64\x2d\x31\x7b\x97\x4e\x8e\xc9\x82\x58\x12\xae\xbe\xa3\xcb\x26\x84\xa5\x50\x46\x47\x21\xbe\xa2\x29\x23\x4f\x4e\xc6\x84\xdb\xf9\x18\x9b\x4b\x78\x3d\x6e\xe7\x36\x64\x83\x4d\xfd\x40\x3f\x93\xf8\xa6\x45\xaa\xda\x49\x34\x7a\xa7\x28\x9e\xc6\x5d\xd0\x7a\xeb\x1a\x9b\xe0\xa7\x72\xaf\xbf\xeb\xce\x96\x0c\x7b\xab\x20\x47\x00\x6c\x84\x42\x18\x45\x44\x28\x4c\x19\x9a\xc2\xc1\xd6\xba\x32\x60\x12\x10\xf0\x3f\x7d\x87\x52\xca\x20\xeb\x77\xd9\xd2\xde\x97\xe7\xb1\x4e\xc9\xc0\xf3\xcb\xfb\x72\x85\xe3\x1f\xae\xee\xcb\xf5\xaa\x06\xbf\x2c\x95\x55\x2b\x2d\x2c\x73\xf4\x07\x53\x2c\x32\x88\x2c\x80\x86\x5f\x99\xa6\x89\x7e\x24\xea\x27\xcd\x97\x39\xdb\x45\x78\xad\x95\xb3\xc0\xe9\x41\xc6\x8f\xa6\xe1\x35\xc8\xc0\x0e\x65\x49\x0c\xb5\x93\xe4\xa0\x07\x64\x7b\x08\x13\x7a\x8f\x4c\x65\x26\x28\x73\x0f\xea\x9a\x0b\x54\xd1\xfa\x12\x67\x7a\xb9\x46\xf0\x36\x52\xb5\xe6\xf8\xd4\x7c\xdc\x29\x70\xf2\x26\x0c\x97\xd4\x6d\x15\x4b\x89\x06\xd7\xe7\x0d\x6b\x7d\x51\xb5\x0b\x7f\x59\x30\x92\x89\x37\x51\xef\x1a\x41\x32\xc8\x7b\xd9\x0b\xf0\x48\x3b\xd3\xed\x70\x23\x8d\x27\xef\xba\xec\x1e\x7c\xd6\x6b\x78\x0b\x79\xb6\x94\xcf\x66\x15\x83\xdd\x80\x69\x14\xcb\xb0\x26\x9a\x46\x38\x20\x1b\x5f\x1c\x22\x48\xd4\x83\xd7\x0e\x42\x44\x09\x53\x1b\xd3\xf9\x22\x77\x86\xb2\x51\xcc\xa6\x0b\xcc\xc6\x4f\x86\xa2\x7d\x16\x36\xe4\x95\x3b\x20\x74\x17\x74\x66\x93\x22\xc3\xe9\x86\xd4\xb6\x1e\x32\x47\x31\x3e\x67\xd3\xb2\xc5\x3c\x70\x86\xad\x52\x0c\x12\xbe\x43\x28\x6b\x02\xb4\x3e\x1a\xb1\xc0\x0b\x2d\x8d\x4c\xae\xcf\x88\x03\x05\x84\x4a\x13\x9a\x9d\xda\xe8\x6f\x7f\x33\x97\x76\xa0\x9a\x7b\xa9\xe6\x65\x58\xbf\x5a\x3f\xf6\x74\xca\x39\x76\x19\x2e\x4e\xbd\xb7\x01\x26\xa1\xf1\x03\xda\x0b\x80\xbc\x6c\xc7\xe4\x91\xd8\xa0\x14\x1c\xc0\x44\x07\x59\x91\x31\x27\x92\xbd\x57\x3e\x87\x88\x26\x16\x8a\x10\x57\x6d\x7e\x5a\xe4\xc0\xd4\xb6\xbc\xfc\x80\xef\x00\xf6\x63\x5d\xa9\x36\x38\x56\x2b\x6d\x28\xce\x71\x03\x94\x10\x06\x18\x40\xa7\x6d\x18\x1d\x9f\x33\x12\x6d\x82\x4d\x70\x8d\x05\x4e\x89\x22\x62\x59\x8c\x41\xb9\x88\x0b\xf8\xcf\xdd\x0e\xda\x7e\xcd\x2e\x1a\x84\xbb\x2a\x14\xa2\x57\xbd\x2e\x56\x61\x0d\xf8\x59\xac\x05\xab\xa2\xa7\xf1\x93\x85\xf4\x5b\x73\x16\xb6\x9f\x62\x1a\x36\x84\x22\x80\x96\xd8\x76\x4e\x2f\x93\x63\x7f\x57\xcb\x56\x2f\xc5\x00\xec\x49\x72\xfd\xea\x51\xb6\x65\xd5\xaf\xe2\xa5\x3b\xe1\xdd\x2e\x74\xd6\xe5\x66\x55\x0e\x55\x29\x28\x17\xa8\x04\xe4\x7d\x93\x60\xde\x9c\x19\x0f\x42\x4b\x53\xd8\x53\x90\x60\x60\x71\x93\x0a\x6b\xa3\x95\xac\xaa\xa0\xae\x95\xe5\x5a\xc1\xe3\x76\x95\x35\xdc\x4b\x34\xbb\x96\x68\xd6\xb0\xed\x19\xea\x24\xa2\x02\x60\x60\x8b\xad\xd8\xcc\xd3\xf2\x04\x21\xa8\xdd\x5e\x91\xb6\x62\x03\x5c\xfd\x94\xf9\x7f\x95\x39\xb8\x23\xea\x90\x54\x9b\xb2\x75\x8e\x02\xff\x08\xb8\x47\x92\x50\x1a\xb0\xce\x72\x18\xad\x89\x6d\x32\x26\xe8\xf3\x4b\xe3\x5d\x81\xac\xb9\x05\xcf\xd1\x13\x95\x5a\x17\x1e\x31\x08\xfe\xf1\xa6\x6a\xc5\x6d\xc9\xd8\x03\x78\x0b\xf2\x6b\x65\x3e\x49\xa9\x42\x38\x98\x61\xc9\x5e\x76\x60\xcf\xb3\xfe\x00\x66\xdc\x98\xc0\xd9\x84\xfd\xb0\xe2\xd0\x6c\x60\xfc\x29\x1a\xd9\x36\x47\x33\x08\x54\x7c\xde\x2c\xcd\x40\xe3\x09\x35\xcc\xc6\x33\xd7\xa7\x69\xa2\x66\x6b\x83\x45\xa3\x03\xc8\x40\x2a\x55\xe5\x6e\xb1\x18\x74\x2b\x52\x34\x8b\x8d\xe8\x94\xa3\x59\xbc\xbe\x8b\x24\xcd\x36\x78\xe0\x65\x49\x3b\xee\x93\x16\xe3\xac\x4b\x06\x53\xdc\x45\xc3\x86\x92\xd2\x75\xab\xa4\xb4\x6f\x70\x39\x45\x94\xef\xe6\x31\xa3\xeb\xa8\x83\x45\xe0\x7f\x48\x45\x41\x1e\x4f\x19\x6c\x80\x54\x39\x3f\xe3\x0a\x82\xb5\x23\x28\x9d\x54\x4b\x20\x1a\xb1\x66\x09\x64\x39\x4f\xdc\x36\xee\x7a\xa7\xb0\x3a\xc1\xf9\x73\xb3\xb0\x16\xad\x9f\x7d\xe4\x8a\x51\x96\x6d\x11\xa4\xaa\x88\x59\xf8\x9f\x5a\x14\x10\x10\x3c\x36\xc9\x64\x6b\x38\x95\x1d\xa3\xa2\x57\x9e\x0b\x7b\xe9\xee\x50\xb5\xab\x71\xe7\xce\x41\xe4\x5e\x46\xb6\xdc\xd8\x45\x41\x3a\x35\xbe\xe2\x46\xdc\xa4\xb8\x03\xa0\xd5\xed\x0c\x63\xaf\x9a\xf6\xaa\x1b\x3f\x00\xd7\xa3\x1d\x3a\x36\x61\x18\x1e\xf9\xb5\xb2\x25\xa5\x09\xdb\xa2\x59\xcf\x30\xe9\x75\x0b\x72\x04\xae\x30\x61\x43\xf8\x68\x68\x37\x80\x4a\x1c\x36\xf2\xa9\xc2\x87\xbd\x68\x97\xb3\x98\x08\x46\xb0\x9a\xbf\x5c\xe0\xf4\xe9\xb6\xc6\xe9\x17\x0b\xa2\x3e\xdd\x49\x35\xa6\x4a\x60\xf2\x9a\x31\xc9\x6b\x04\xf8\x16\xb5\x39\x6a\x8a\x63\x53\x15\xbc\x02\xdb\x60\x1d\x2a\xdd\x2a\xb6\xba\x59\x99\x7b\x9e\x28\xf3\x06\xab\x4f\x2d\xbe\x5c\x1f\xf6\xb0\xa2\xc9\x8a\x25\xf9\x22\xc2\xb9\x9f\x3f\xc2\x78\x59\xed\x94\x3c\x08\x3a\x86\x02\x36\x0a\x53\x66\xb9\xd7\xb2\x38\x63\x53\x2e\xbc\x29\xb4\x78\xef\x83\xd6\xbf\xf8\x98\xf5\x3e\x82\xf9\x4d\x46\x30\x2f\x33\x75\x79\xef\x0b\x14\x5c\x2d\xa1\xe4\x1b\x19\x71\x85\xc6\xb0\x79\x64\xb1\xb3\x16\x85\x61\x19\xf6\x17\xfb\x43\x63\x64\x46\xed\xb3\xea\x6c\x43\xcb\x15\x5b\x54\x0d\xc0\x58\xc4\x89\x85\xb2\xb1\x71\x93\x65\x4b\xc3\x32\xa3\xd8\x88\xfd\xc0\x9f\xc8\x23\x11\x07\x08\x2b\x94\x72\xad\x28\x06\x91\x10\x40\x93\x25\x54\x54\xe3\xf1\xc6\xe8\x12\xa7\x24\x1e\x82\xba\x11\x44\x57\x59\xd3\x9c\x75\xaa\x35\x21\xb6\x01\xf8\x98\xd9\x06\xe7\x21\x1f\x31\x13\xf1\x64\xa2\x6c\xe0\x5e\xa0\x6e\x62\x20\xb4\xfc\xde\xbb\xfc\x7e\x7f\x84\xee\x34\x2f\xa2\xb2\x3c\xde\x00\xc0\xa5\x6d\x6c\x23\x36\x13\x3c\xcf\xbc\xb5\x84\x4f\xc0\x4c\x63\x48\xb8\xc1\xe5\x07\x83\x71\xfe\xbe\x08\xc7\x5a\xeb\x5a\x4e\x38\xaf\x12\x0c\xb7\x11\x0a\x42\x48\x40\x9a\xad\xf8\x08\x1f\x1b\x71\x6b\x3c\x75\x41\xee\xf7\x32\x2c\xd7\x67\x72\x23\x9e\x11\x09\xfa\xbf\xb7\xaf\x96\xd2\x00\xcb\xa9\xa6\x8d\xe3\x5c\x66\xfd\xf2\x16\x6a\x67\xc5\x6d\xce\x62\x2d\x3a\xb7\xd1\x3d\xae\x1e\x38\x10\xf0\xb3\xd9\xc5\x3a\x07\xf1\xb5\xf1\x8b\xeb\x5c\x64\x1c\x6e\xdd\x64\xe1\xb2\x6e\x2d\x58\x4c\xc6\xb3\xdc\x44\x30\xd1\x30\xa0\xa5\x91\xb2\xa9\x54\x9f\xb0\x8a\xe6\x5a\xc5\x2c\x40\x53\x76\x14\xd9\x55\x70\xe5\xe7\xb5\x95\x35\xcc\xe0\x34\xec\xbd\xc5\x78\xdc\xc1\x76\x6a\x2e\x64\x17\xe5\x0b\xff\x4a\x12\x94\xea\xfe\x4a\x75\xd3\x02\x0b\x98\xfb\xc4\x3e\xd1\x13\x5d\x45\x45\xab\xc6\xdf\x8d\xb6\xca\x45\x3b\x76\x1e\x33\xb6\x05\x02\xc0\x99\xc5\xfc\x28\x5e\x44\x56\xb2\x6a\x64\x39\xb9\xa0\x9b\x25\x23\x58\xa0\xdd\x47\x2d\x14\x7a\xdb\x5a\x8a\x33\x2d\x30\x2a\xae\x6f\x49\x31\x33\x32\x8b\x20\x2a\x17\xfa\x1e\xc9\x05\x75\x67\xbf\x92\xd2\xd7\x4e\x1d\x60\x8b\x3a\x0e\x8b\x32\x44\x38\xa8\x57\x63\x5c\xbb\x38\x52\x39\xf6\x21\x68\x40\x13\x09\x65\x0f\xba\x33\x93\xbe\xe8\x5c\xa8\x82\x98\x34\xc6\xb8\x61\x4f\x57\x12\xf6\x16\xbb\xdc\x5e\x7d\x71\xd5\x49\xa3\x6c\x16\xe0\x2b\x35\xdb\x03\xbb\xc0\x27\x37\x7e\xd9\x0d\x02\xba\xf1\x53\x27\xfb\x6c\xf2\xed\x12\xec\x8d\x8d\x8b\x72\x96\xc2\x6d\x6d\xc8\xa3\x95\x9e\x42\xe4\x2b\x6b\xab\x01\x00\x3b\x53\xe2\x14\x5b\x69\xea\xbf\xfc\x5f\xa6\xdc\x86\x59\x9a\xff\x42\x5c\x8c\x98\xf9\xfd\xc0\x43\x5d\xeb\x17\x0a\x0c\x39\x9c\x92\x02\x65\x4b\x94\xf1\x78\x20\x23\xdc\xe2\xa9\x18\xbc\x40\x8f\xf4\xab\xc7\x10\xd4\x93\xad\x55\xb6\x4c\x31\xc3\x33\x40\x27\x3c\x80\x18\x28\x10\x57\x0b\xeb\x92\x21\x69\x53\x32\x09\xb8\x95\x66\x96\x36\xed\xaf\xa8\xfc\x06\x7d\x1a\x51\xd6\x82\xa3\x15\x8e\xf4\x66\xea\x77\x65\x47\x37\x93\xd8\xef\x06\xb7\x3f\x8e\x6f\x86\xb7\x57\xf7\x37\xa7\x25\xb1\xfd\xf4\xe2\xfe\xf6\x6e\x78\xd3\xf8\xac\x48\x99\xfb\xcb\xfd\xf0\xbe\xe5\x91\x6b\xe0\x62\xf0\xfd\xf0\x22\x7c\xe5\x2f\xf7\x83\x8b\xf3\xbb\x5f\xc6\x57\x1f\xc6\xb7\xc3\x9b\x9f\xce\x4f\x87\xe3\xdb\xeb\xe1\xe9\xf9\x87\xf3\xd3\x81\xfe\x32\x7c\xf7\xfa\xe2\xfe\xe3\xf9\xe5\xd8\x05\x98\x86\x8f\x7e\xbe\xba\xf9\xf1\xc3\xc5\xd5\xcf\xe3\xa0\xcb\xab\xcb\x0f\xe7\x1f\x9b\x66\x31\xb8\xbd\x3d\xff\x78\xf9\x69\x78\x79\xb7\x54\x11\x69\x5e\x8d\xd6\x4a\x70\xc1\x45\x16\x18\x08\x02\x31\x69\xb2\xb0\xa4\x4d\xff\x01\x66\xea\x6b\x43\x8f\x87\x07\xee\x2f\x53\x5c\xf1\x50\xb3\x40\xe7\x01\x29\xb8\xc7\x88\x79\x17\x95\xbf\x54\x15\x9e\x49\x97\x01\x59\x1a\xed\x09\x1a\xc0\x59\x01\x85\xa1\xd4\x29\xe4\xde\xfb\x91\x3a\xa7\x26\xd0\x61\x42\x53\x0a\xfe\x4d\x74\x88\xaa\x1b\x5e\x6e\xd0\xce\x09\x86\x60\x3d\x34\xf1\xb2\xd3\x20\xab\xc9\x95\x40\x29\x27\xc8\x71\x68\xdd\xac\x1e\x17\xc0\xd7\x2d\x18\x4e\x69\x64\x7e\xa8\x20\xb8\xa1\x22\x53\xbc\xda\x62\x89\xc0\xca\x2d\xcf\x09\xfa\xf1\xcf\xc5\xa0\xc0\x5a\x6d\x2d\x0a\x79\xad\x28\x8f\x7d\x20\x72\xb3\xaa\xab\xc8\xb3\xd4\x93\x3b\xe6\xd6\x8c\x08\xe7\xd6\xd6\x6e\x04\xd7\x42\xce\x02\xb4\x98\x92\x9f\xc1\xd6\x6e\x46\x87\xa8\x42\xe3\x27\xe8\x16\x32\xd5\x65\xa1\xba\xeb\x5d\xcc\x92\x7c\x46\x6b\xa5\x5b\x27\x64\x8e\x1f\x29\x77\x08\xd8\x06\x28\x1c\xd6\xd1\x8a\x56\xe8\x10\xb5\x1e\x94\x13\x34\x88\x63\x59\x66\x70\x25\xca\x71\x2c\xf3\xb0\x3c\xec\x10\xe0\x85\xc5\x9e\x6d\x56\xe8\xa8\x38\x72\xb0\x62\xbb\xcf\xc5\xaf\xb3\xc3\xf2\xdd\xbb\x15\xb6\xa1\x7c\x18\x3b\x52\x1e\x6f\x24\x0c\xdc\x61\xf9\xd0\x50\x11\xba\xf1\x7e\x75\xa8\x08\xdb\xf5\xd8\x5e\x86\xba\xb1\x53\xbf\xb2\x63\x38\x68\x9b\xf5\xd9\x0a\x2c\xb9\xa2\x4b\x37\xe3\xa4\x52\xfd\xa3\x73\x7f\xa5\xea\x21\xcf\x6f\xd9\x6f\x96\xc6\xe0\x48\x8e\x3d\xfd\xaf\x31\x8f\x6b\xf8\xf4\xca\x7f\xb9\x54\x64\x1b\x07\xeb\xb6\xae\xbd\xbf\x96\x2b\x68\x6d\xfe\x4b\xe9\x70\x47\xe8\x1c\xdd\x85\x41\xc0\x6e\xa6\x11\xb8\x76\x30\x65\x16\xd1\x9f\x78\xdf\x83\xab\x61\xa9\xcf\xb1\xaf\x32\x83\x27\xfc\xb1\xa4\x5c\xa6\x44\x4a\xdc\x82\x9b\x10\x98\xc4\xb6\x61\x0c\xfe\x84\xda\x0f\x3b\xd2\x93\x3b\x93\x77\xfa\xab\x65\x46\x9f\x9b\x50\x33\x76\x13\xd5\x02\x6b\xec\x62\x2a\xd1\x95\xc9\xac\xd2\xfc\xe5\xa0\x08\x9b\xe0\x22\x88\x26\x69\x33\xf5\x77\x34\xab\x55\x17\xac\xb1\x50\x43\xe8\xae\x59\x3f\xda\x22\x68\x7d\x63\x50\x4d\x6b\x43\xc7\xe5\xf5\x59\x83\xea\x4a\xbe\xad\xb0\x88\xa5\xa9\xd7\x6c\x2a\x64\x07\x23\x3d\x40\xd8\x24\xb4\x15\xd2\x94\xcc\xa3\xb9\xf1\x28\xe8\x2b\xe3\x60\xc4\x9e\x82\x0d\x29\x85\x7c\x0e\xc2\x96\x00\x0c\xee\xb3\x3e\x6e\xf4\xb1\x14\x48\x0b\x22\x23\x85\xa8\xce\x80\x10\x8c\xf3\xa7\xa8\x40\xb1\x82\xc0\x83\xfd\xda\x82\xd4\x37\x28\x37\xd4\x50\x11\xbb\xa9\xe8\x90\x9f\x5b\x50\xeb\x67\x0b\x4d\xb9\xeb\x10\x82\x72\x43\x4d\x23\xd8\x41\xb5\xa1\x17\x45\x08\xf5\x89\x79\x26\x8f\x33\x9d\xd8\x54\x79\x3d\x5d\xb7\xda\x7f\x70\x33\xfa\x83\xf1\x3b\xe4\x2d\xd8\x0a\x41\x6b\x1e\x24\x14\x1d\x6a\x99\xd5\xe5\xfc\x5a\xa7\xbb\x44\x87\x06\xf4\xe9\x3d\xc4\xd4\x0d\xae\xcf\xdf\x1f\xa0\xf7\x61\x5e\xd1\xfb\x8d\x0e\xa0\x1d\xb7\xad\x38\x04\xda\x54\x29\xb8\xbc\x7c\xec\x60\xaf\x2a\x27\xd1\xee\x99\x3d\x88\xa8\xed\x1c\xea\x2f\x4b\xdf\x80\x23\x12\x2a\xe8\x18\x5f\x9d\x0f\x6d\xb5\x2e\x20\x23\xe3\x52\xd9\xb0\x76\xf1\x88\x4d\x16\x55\x27\xcf\x81\xf7\xf2\x74\x3e\xa5\x5b\x57\x85\xd1\xed\xd5\x13\x51\x77\x1c\x72\xb9\xfc\x3e\x58\x91\xda\x3a\xf0\xd5\xda\x0b\x2e\xd6\xe6\x91\xee\x63\x95\x9b\x66\x55\xb2\x97\xb9\xc5\x6c\xdc\x94\x55\xf2\xcf\x5b\x23\xb7\x0e\x01\xbe\x83\xa6\x15\xb1\xb1\xdd\x2d\xc2\x75\x4f\x65\xcf\x4b\x65\xbb\x88\x6d\x2f\x0f\x6e\xfd\x0b\xf4\xd4\xc8\x71\x41\x33\xce\xe0\xaa\x95\x09\xcf\xe0\x4b\xa5\x83\x56\xd7\xdc\x5b\xd3\xe7\x1b\xac\xc9\x6a\xa7\xef\xad\x09\x1c\x30\x6e\xd7\xfa\x58\xab\x43\x1d\x28\x5b\xc7\x80\x53\x93\xc7\xa6\x68\x4a\x0e\x10\x67\xc9\x22\x08\x76\xb0\xe7\x15\xc8\xcd\xc4\xa3\x98\x82\xe0\xa6\x13\x0b\x75\xb6\x56\xe2\xf3\x9a\xd2\x78\x1b\x8d\x6c\x11\x69\x72\x39\xf8\x34\x3c\x1b\x0f\x2f\xef\xce\xef\x7e\x69\x80\xb1\x2b\x3f\x76\x48\x76\xc1\x0b\xb7\xbf\xdc\xde\x0d\x3f\x8d\x3f\x0e\x2f\x87\x37\x83\xbb\x15\x28\x77\xcb\x3a\x6b\x43\x50\xcb\x65\x93\xfa\xb6\x0e\x8a\x9a\x33\xf3\x36\xf4\x5e\xc7\xba\x0b\x3a\xa1\xa4\x05\xef\xce\x24\x79\xb3\x98\x08\x14\x93\x47\x92\xf0\xac\x30\xab\x36\x2e\x58\x00\x84\xd7\xd0\xfe\x32\x30\x3c\x68\xb3\xba\xc6\x27\xc8\x94\x8b\x09\x2a\xe6\xf9\x06\x41\xe4\xc3\x82\xb0\xf7\x0a\x91\xcf\x59\x42\x23\xaa\x82\x24\x30\x2e\xac\x7b\xc5\xb8\x0f\x21\x12\x71\x05\x71\xed\x2c\x1a\x65\xe7\x3a\x7f\xe8\x49\xaf\x6b\xfb\xfe\x44\x79\x60\xa6\x95\x35\x08\x76\xa0\xd8\xb7\x38\x8d\x6b\xb8\x51\x1b\x8c\xee\x39\xcc\x03\xf5\x6c\x0c\x9b\xc8\xd5\x82\x29\xd5\x3c\xc8\xd5\xb7\xe1\xb2\x38\x99\xd2\xb9\x5e\x1e\x28\xd3\x8d\x52\x5f\x39\xdc\xa5\x54\x9b\x6b\x07\x18\x0b\x36\x4e\x79\xcd\x80\x85\x1a\xdc\x3f\x7b\x30\x20\xe8\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\x7f\x00\x1a\x91\x20\x47\x41\x04\x05\x24\x7b\xc5\x61\x70\xbf\x45\x0a\x38\x1a\xb1\xb3\xe1\xf5\xcd\xf0\x54\x33\xa4\x23\x74\x2f\x01\x68\xa8\x34\xf5\x33\x4b\xde\x46\x1c\x0b\x23\x19\x28\x93\x8a\xe0\xb6\x60\x30\x22\x04\x17\xdd\xf9\x83\xef\x6f\x08\xdf\x35\x93\x37\x3c\x2b\xd9\xa6\x9c\x01\xe0\xb2\xb5\xb0\x62\x10\x1f\xbe\xf3\xf4\x9b\x1b\xfc\x54\x5a\x91\x10\x68\x01\x24\x91\xf2\xaa\x3f\xe3\x6a\x03\x8e\x60\xf7\xf9\x95\xfa\xbc\x86\x6f\x97\xcd\xf3\xce\xd5\x46\xf7\xa0\x84\x06\xb7\xd0\x17\x2d\xa8\xcc\xb3\x55\x54\x14\xaf\x01\xca\x50\x21\xfd\x09\x99\x61\x86\x44\xce\x58\x05\xa5\x32\xb4\xb4\xd5\x83\x66\xd6\x3d\xaa\x7a\xcd\x70\xca\x73\x06\x4a\x03\x84\xb1\x36\x0c\x46\x66\x84\xa9\x15\x83\x79\x2d\xc8\x8d\xca\x50\xf7\x17\x75\xa3\x61\xa0\x6d\xc0\x1b\x4d\xfe\x24\xa8\xde\xb8\xde\xb5\xec\x82\xf2\x4a\x4e\x25\x7d\xa8\xfc\xfd\xdc\xac\x65\x63\xf9\xb0\x75\x77\x77\x58\x3e\xac\xee\x2a\x26\xd1\xc3\xba\x97\x4d\x35\x0b\x2f\xb1\xc5\x2f\x6b\xc6\xbe\x85\x7e\x6a\x91\xf5\xa1\xe6\x69\xf4\x80\x7e\xb8\xfb\x74\x81\xa6\x54\xcb\xbd\xfa\x5a\xb9\xc4\x5a\xc6\xbe\x17\x89\x2f\x28\x6d\x64\x90\x5c\x24\xfe\xee\x85\x8d\x77\xa2\x54\x20\x25\xe8\x1b\x0d\xcf\x88\x33\xf6\x0a\x8b\xab\x56\x41\xd6\x17\x98\xc5\x3c\x35\xf3\x38\x96\xf9\x74\x4a\x3f\x1f\x29\x2c\xbe\x5e\x43\xa2\x39\x2d\x39\xd8\x2a\x64\x64\xc3\x27\x2d\xcc\x1f\x58\x15\x56\xca\x09\xc3\x47\xc2\xd4\x4e\x84\x6c\x68\xa2\x21\xcb\xb8\x9b\xa9\xdc\x94\xba\x3a\x3f\x2b\x38\xb4\x2f\xb9\x1c\x84\xe6\x28\x81\xe1\xb2\xb2\x99\x1d\xd6\x2f\xdc\xe6\xad\x7e\xec\xec\x00\x85\x57\xeb\xeb\xb2\x22\xbe\xdb\xae\x76\x51\xf2\xb2\x88\xcd\x74\x30\xd9\x1b\xe2\x8e\x48\x62\x54\xf1\x20\xdf\xdd\x6a\x58\xd5\x3d\x37\x7d\xce\xb1\xac\x76\xb9\x72\xcb\x37\x00\xd9\x28\x35\xf3\x91\x40\x0e\xda\x4e\xca\xd0\xaf\x91\x6b\x0c\x03\xb9\x17\x09\xc4\x01\x2f\x35\xc5\x98\x72\x9b\xfa\xf8\x7a\xf1\x04\x77\x10\x34\xcd\x60\xb4\xe4\x43\x32\x41\xa0\x00\xf4\x09\xba\x4e\x88\x16\x1f\x72\x2d\x42\xe4\x49\xe2\x00\x89\x96\x8b\x38\x6b\x81\x68\x3d\xfb\xbc\x02\x01\x7a\xc9\xc4\x1c\x20\xd7\xf2\x99\x05\x6b\xb0\xfb\x0c\xf1\x60\x7d\xc1\x0e\x0a\xd6\xb0\xb2\x2a\x04\x0c\x78\x61\x82\x3f\xc1\x1e\x82\x4b\xdc\x98\xfe\x43\xb3\x79\x41\xe4\x9c\x27\x4b\xa7\xb0\x36\xcc\xd9\x3a\x73\x70\x4b\xf9\x8c\x93\xb0\x91\x77\xe3\xb6\xe0\xe0\x0e\x97\xf3\x99\x69\xa2\x51\x24\x58\x36\x45\x8f\xa4\xee\x43\x18\x2c\x3c\xa4\x0d\x65\xb3\x43\x03\xc7\x5c\x61\x2f\x0a\xa1\x9a\x0a\xfb\x7b\x21\x91\x2f\x8c\x03\xd1\x7f\x1e\x14\xf2\xf6\x71\xed\x54\xc9\xa2\xf2\x0d\x54\x74\x5f\x8f\xcb\xda\xec\x87\xa2\x09\x3d\xe0\x66\xd6\x66\x41\xd4\x41\x6e\xb3\xb1\x2d\xb2\x04\x32\x65\xb7\xd8\x4c\xb9\x51\xa7\x68\x67\xa0\xdb\xfa\x71\xca\x35\xbc\x9f\xcd\x9d\x53\xa2\x96\xd2\x04\x7a\xd8\xa2\xf5\x61\x8b\x2c\xa2\xbe\xa7\x3d\x00\x19\x53\x02\xb2\x8a\x0b\x8f\x4d\xf5\x92\xb7\x56\xd6\x55\xa9\x36\xa5\xdd\xe9\x94\x57\x53\xfa\x42\x9f\xfb\xb3\x2d\x5d\x3e\x7a\x32\x8b\x31\x64\x2a\x6e\x13\xf6\x51\x9a\xbf\x31\x57\x43\x9b\x24\x46\x26\x35\xda\x80\xaa\xda\xb5\xf3\xa6\x7a\x53\xdd\x7e\xc4\x6e\xf4\x28\xcc\x17\x85\xeb\xbf\xa8\x1c\x4d\x8a\x1a\x77\x53\x84\xed\x57\xb0\xe8\x6d\x91\x57\x72\x1c\x14\xce\x7f\xc6\x2c\xeb\xef\xcd\x3b\x26\xa1\xda\x02\x8a\xe8\xa9\xd2\x69\xa1\x37\x6a\x61\x2f\x9a\x53\xc8\x67\x8e\x89\xb4\x97\x07\x55\x36\x61\xdd\x8b\xca\x39\x71\xd0\xae\xf0\x99\xe7\x5f\x4d\xcc\xd5\x69\xa6\xcc\x59\x84\xe4\x88\x05\x7d\x2c\x41\x02\x34\xda\xe1\x86\x62\x3f\xec\x33\x8d\xbd\xa7\x05\xfe\x69\x76\xa8\x56\x05\xdf\x4e\x2f\xc5\x19\xd8\x13\xcd\x19\xe4\x53\x7f\xff\xdc\xd9\xb0\xf6\x23\x18\xf1\xff\xfc\xf7\x5f\x8f\x68\x9b\xb9\x5d\x8e\xed\x0a\xec\xc3\x4e\xae\xb7\x2d\xe1\xce\x07\x10\x05\x2d\xa9\xef\x32\x9f\x78\xfc\xe0\x52\xa8\x7e\xf1\xab\xbd\xdc\x34\xd1\x70\x35\x37\xfe\xc5\x32\xb9\x83\x31\x5e\xe4\xcb\x6f\xd9\x80\xc5\x15\x1e\xe8\xc2\xcd\x18\x44\x79\x3a\x00\x7a\x13\x9d\xa7\xdb\xaf\x5c\x28\x15\x06\x15\x20\x85\x6d\x13\x0d\x37\xc7\xf2\xf9\x42\x1e\x1a\xab\x7a\x18\x2b\x65\x78\x47\xae\x0a\x7e\x30\x83\x34\x59\x74\x7a\x57\x72\x49\x84\x39\xd0\x1e\x52\x06\xd5\x8b\xcf\x42\xec\xdb\x0a\x1f\x0e\x49\x31\x5d\x2b\x4e\x5b\xbf\xdf\x8c\xd2\x56\x32\xe2\xe2\x19\x11\xe3\x38\x2f\x05\xe5\xae\x6a\xfb\x5a\x7f\x74\x96\xab\xc5\xea\xf6\x65\x82\xa3\x87\x75\x90\xf1\xf4\xfb\x2d\xcd\xae\x16\x0c\x83\xd0\x89\xb2\x70\xd8\x82\x3b\x47\x2a\xb8\x73\x36\x96\xaf\xa4\xb5\xc3\x45\xc3\xa0\x7a\x70\x20\xdc\xdb\x9b\xc8\xa0\xe3\xc2\xc8\xd1\x24\x2f\xac\x1c\x1e\x6f\x3c\x3e\x1a\xb1\x0f\x06\xb0\x1f\x14\x0f\x33\x80\x08\x12\x29\xc8\xe7\x8c\x4b\x52\xca\xec\x69\xc0\x10\xb7\x99\x79\x76\x18\xcd\x32\x69\xa5\x7a\xf3\x56\x22\xe9\xab\x23\x08\xd6\x37\xbc\x3e\xe5\x66\x0a\xdc\x4a\xea\x89\x68\x46\x35\xed\x8c\x1b\x4f\xda\xfa\x53\xef\x5a\x82\xa2\x88\x95\x01\x2c\x19\x95\x2c\x0e\x90\x9f\x5e\x85\x20\x12\xf2\x48\xc0\x4c\x09\x63\x0c\x91\xe2\xcb\xa6\xa6\x16\x76\xb2\xea\x00\x15\x69\x75\xc0\x16\x50\x5c\x1d\x41\x39\xf9\xa8\x89\x16\xcb\x69\x15\x5b\x67\x00\x35\x39\xfc\xd7\x90\x42\x07\x21\x62\xfe\x82\x28\x44\x3e\x2b\x62\x0b\xbe\xdd\xb9\x1c\xad\x7a\x58\x37\x6a\x4e\x33\x69\x17\x91\x76\x4f\x15\xb5\x89\xd8\xcc\x5c\x97\x84\x16\xbb\x7b\xdf\x26\x65\xcd\x31\x8b\x6d\xa6\xa1\x95\xa5\xb5\x4c\x01\xb3\x33\x76\x20\x1f\x83\x6d\xf3\xe5\x02\xa8\x61\xd3\xa6\xc1\x44\x86\x8b\xcc\xe9\x45\x5a\x32\x07\xb7\x35\x17\x5a\x40\xcd\x99\xa2\x89\x26\x0e\x3b\x06\xad\x35\xe7\xcc\x83\x7d\x41\xc4\x70\x1b\x9e\x14\x95\x92\xb2\xd9\xd8\xae\xa4\x4b\x9a\xeb\x76\x31\x94\x69\xea\x93\x69\xca\xfc\xf8\xbd\x6b\x68\xb9\x9d\xd7\x90\x35\x60\xfd\xb8\x74\x3d\x10\xac\x19\x77\x93\xb1\x20\x4d\x2e\xcb\x6f\x4c\xe3\x52\x81\x7a\x98\xe8\x3a\x46\x0a\x10\xeb\xea\xf9\xf1\xc5\x15\x22\x6d\x0a\x9e\x49\xac\x81\x08\x68\xd5\x92\x63\x28\x5b\x73\x0b\xcf\x99\x17\xd1\x6c\xe1\x18\x9f\x41\x5d\x49\x53\xc4\xae\x3b\x1b\xe6\x8d\x93\x64\x82\xa3\x07\xaf\x6c\x78\x95\x9b\x0b\x07\xbc\xad\x05\x54\xa8\x2c\x64\x88\x4b\x0f\x34\x02\xe9\x26\xf4\xc2\x18\x84\x14\x3b\xec\xa2\x73\x5b\xd6\x9f\x99\x42\xf3\xa0\x9c\x9b\xd1\x9b\x98\xf1\x98\x64\x09\x5f\xa4\x2d\xf7\x59\x35\x35\x6b\x9b\x08\x88\xb6\xcc\xb0\x9d\x5e\x65\x15\xa6\xb7\xf6\x65\x56\xcb\xf3\xd8\x01\x5e\xcf\x1a\x5c\xf2\x63\xc2\x27\x60\xe5\xb3\x5a\xb6\xcb\x5d\x08\x42\xe8\xab\xe7\x79\xdd\x8c\x8a\xea\x89\xa4\x32\x4b\xf0\x62\x59\x0f\x26\x96\xff\x79\xf7\xcd\xe4\x7e\xaf\x36\x82\x75\x8f\x82\x6d\xfc\xfc\x39\x50\x40\x2f\x9c\x24\x60\xde\x35\xfc\xab\x62\x4c\x32\x49\x54\x47\x99\xe0\x5a\x50\xe0\x23\xa6\xf0\xcc\x6d\xae\x15\x2e\xf9\x13\x23\x42\xce\x69\x56\xaa\x38\xb6\x75\xd8\xad\xa5\x68\xfb\x1f\x13\x64\xba\x06\xef\xe4\xd9\xa1\x41\x7e\xd0\xf4\x21\x33\x1c\x15\xc6\xbf\x28\xc1\x52\xd2\xe9\x22\x00\x6c\xf0\x11\x8c\x90\x16\x53\xd6\x96\x83\x22\x3f\x4d\x8c\xc6\x8c\x6f\x37\x19\xcb\xdb\x67\x6b\xdd\x97\x8f\x1f\x8d\x43\x64\x2c\xa8\xff\x5e\x43\xe7\x70\x37\xb5\x45\xe9\x68\x45\x73\x34\xa9\xd9\x9b\x65\x18\x2f\x05\x55\x69\x37\x23\x14\xc2\xa4\x1d\xb6\x55\x64\x3c\x90\x42\x08\x32\xa2\x4a\x29\x6a\xb0\xf9\x5a\x71\x72\xe6\x4f\x4d\x9c\x1e\x84\x01\x72\xd5\x8b\x8f\x0f\x90\xdc\x0a\xbc\xa8\x0b\x5d\x9c\x91\x84\xec\x24\x92\x75\x03\x22\xa9\x7a\xd8\x03\xf2\x58\x4a\x1a\x05\x50\xf7\x6a\xe3\xc2\x06\x01\xb6\x2d\x10\x28\xcd\x43\xff\xd9\x0c\xd4\xc6\xd8\x36\xed\x22\xd8\xbf\x60\x95\xbb\xea\x2e\x4d\x58\x6a\xa6\x05\x4b\x72\x45\x37\x25\xba\x2a\x3a\xf5\xf2\xca\x3e\x92\xda\x2b\x87\xa2\xd6\xc6\xf5\x91\x74\x89\x38\x58\x79\x00\x36\xe2\x40\x75\x3e\xdd\x8d\x2e\xac\x9f\x50\x71\x34\x23\xca\x14\x77\xf6\x15\xac\xdf\x12\x4d\xec\x2c\x90\x7e\x47\xab\xdf\x7c\xc8\xd7\x3b\xb5\xb7\x44\x49\x77\x25\xd4\xe0\xe9\xec\xe6\xec\xe1\x16\xec\xc7\xb1\x34\x82\xeb\x17\x2f\xb7\x6c\x9d\x7c\x6e\x47\x66\x53\xb0\x7f\x43\x02\x95\x99\x63\x6c\xbf\xf0\xe9\xd6\x25\xa0\x21\x5c\x02\x67\x33\x6b\xf4\xfa\x5c\xaf\x4a\xda\x5f\xba\xe8\xb5\x3e\x8d\x57\x47\x55\x50\x77\x2f\x0f\xae\x27\x0f\x3a\xf0\xc2\x3d\xbc\xfc\xdb\x8e\xc1\x7e\xde\x3f\x7b\x20\x1c\xd6\xae\xc4\xdd\x89\x88\x6f\x88\x4c\xf6\x42\x52\xac\x6d\xc5\x4b\xc9\x8b\x87\x0e\x3d\xa6\xc0\x62\xd9\xdf\x2d\xda\x8f\x93\x7c\x63\xdd\x40\xcf\x77\xc1\xae\xa6\x97\x9d\xd0\x07\x00\x29\x62\xc8\x37\xcd\x6d\x65\x06\x38\xbc\x41\xc8\x58\xcd\xf7\xb0\x22\x18\xcf\x0e\xaf\x53\x18\x5e\x6d\x39\x9f\x63\x7b\x6d\x72\x51\xe7\xcd\x7d\x4e\x52\x5b\x77\x2c\xbb\xd0\x51\x9e\xd9\x8b\x63\xa9\x31\xf8\xa0\x8f\x89\xed\x76\x8b\x36\x40\x96\xb8\x2d\xdb\xe5\x21\x6b\x2a\x9d\xb4\x7d\x7a\xb4\x4b\x39\x1b\x67\x82\x4c\xe9\xe7\x8d\x44\xf1\x6b\xf8\xd4\xaa\x97\x7a\x99\x2b\xc5\x98\xc0\x3d\x03\xc5\x9b\x82\xb8\x3d\xbb\xd2\xb6\xba\xce\x88\x15\x19\x67\x36\xdd\xec\x81\x2c\x10\x17\xa5\x9f\x36\x05\xd7\xdb\x7d\xe1\x28\xb3\xaf\x73\xa5\x32\x79\x72\x7c\x3c\xa3\x6a\x9e\x4f\x8e\x22\x9e\x9a\x70\x73\x2e\x66\xe6\x8f\x63\x2a\x65\x4e\xe4\xf1\x77\xdf\x7e\x5b\x6c\xf1\x04\x47\x0f\x33\x03\x57\x52\xf7\x3b\x95\xb6\xfc\xb6\x5e\x5c\x75\xfd\x52\x0f\x82\xb3\x31\xf9\xac\x89\x54\x6e\x0a\x64\x73\x2f\x89\x44\x83\x9f\x6f\x91\x5c\x30\x85\x3f\x9f\xa0\x4f\x94\x81\x00\xf2\x03\xcf\x85\x44\x67\x78\x71\xc8\xa7\x87\x29\x67\x6a\x8e\x3e\xc1\xff\xda\x9f\x9e\x08\x79\x40\xbf\x10\x2c\xec\xfe\xda\x1a\x4a\xbe\xc2\xeb\x1c\x43\x2e\xae\x44\xe4\x51\xaf\xf0\xb7\xff\x81\x52\xd3\xf2\x09\xfa\xe6\xf8\xdb\xff\x40\xbf\x87\xff\xff\xff\xa3\xdf\xb7\x68\x6a\xeb\x41\xe1\x40\xf1\xc6\x9b\xb2\x3b\xee\xa0\xb2\x52\x1b\xd4\xb3\x3d\x15\xbc\xd8\xa9\xc6\x96\x1f\x68\xf4\xc0\xa7\xd3\xb1\xa2\x29\x31\xb9\x41\x63\x2c\x6a\x30\xaa\x1b\xe2\x0a\x52\x5b\x7d\x53\x50\x03\xb7\xed\x6a\x2b\xd8\x4e\x4d\x26\xb4\x3b\x6e\x32\x2f\xaa\x0f\x42\x10\x48\xa9\xa2\x23\x95\xf0\x15\x89\xf5\xa9\x58\x27\xe0\xc3\x59\x67\xea\x35\xc2\x0b\xe4\x80\xb0\xa2\xac\x0f\xdc\x0a\xa3\x10\x4d\xa0\x86\x5d\xc8\xc6\xe3\x50\x0b\x8f\xfc\x62\x62\xde\x60\x6a\xaf\x15\xef\x26\x6b\x9d\xaf\x0e\x75\xbb\xe5\x62\x2b\x79\xf9\x81\xd4\x62\x6e\x3b\xd6\x11\x71\x75\x0c\xc3\xda\xc6\x90\x74\xca\x85\xc7\xf7\x34\x7a\xad\xad\x36\xb6\xda\x0a\x45\x85\x09\x0e\xea\x76\xe8\xf5\xd4\xcf\xfc\x27\xab\x86\x09\x91\x42\xee\xed\xa2\x8e\x12\x8c\x56\x5f\x71\x9a\x25\x36\x8c\xb8\x01\x04\x6c\xd5\x86\xde\xfa\xbc\x6f\x68\x1c\xc2\xd6\x20\x64\x9f\x39\xc9\xc4\xe6\x24\x37\xee\x27\x40\x23\xed\x02\x35\xad\x86\xb2\xbd\x05\x9f\x33\xa6\xb2\x82\x45\x38\x90\xf6\x0a\x36\xbb\xc0\x9a\x7b\x6c\x08\x34\x67\xaa\x6d\x1c\x20\x81\x21\xf2\x4b\xcd\x31\x33\x4a\xd4\x14\x47\x94\xcd\x0e\x02\x8c\x31\x48\x95\x0e\x79\x56\xd3\x4a\xde\x61\xf9\xb0\xdb\x68\xa6\xad\xab\x8f\xd1\xb8\xa8\x80\x63\x51\x01\x8c\xf5\x94\xd6\x00\x96\x14\x96\x0f\x6d\xb0\x18\x35\x4c\x9e\x25\xa3\xf3\x4b\xe1\x90\x7c\x96\x8d\xcf\xa5\x5e\x92\x50\x68\x03\xc0\x6d\x57\xfb\xd0\x22\x74\xb9\xec\x19\x0c\x37\x0d\x4d\x48\x5c\x85\xa6\xab\x8e\x7f\x15\x21\x18\xb5\x38\x88\x9b\x01\xe4\xb2\x54\x2b\x7e\xb1\x31\xcf\xb2\x85\x39\x4a\xfa\xe6\xc2\xf2\x41\xfa\x12\x78\x48\xa6\x38\x49\x0e\x90\x20\xb9\xd4\x57\xef\x01\x92\x24\x99\x1e\x3a\x10\xf1\x18\x25\x7c\x46\x23\x9c\xa0\x49\xc2\xa3\x07\x39\x62\xfa\x2a\x61\x33\x73\x03\x66\x82\x47\x44\xca\xe0\xee\x2d\xd2\x32\x6d\xb2\x0c\xd4\xbf\x53\x44\xa4\x94\x51\xa9\x68\xe4\x2e\xd5\x22\x13\xda\x54\xdc\xd4\xda\x50\xc4\x4d\xd5\x3e\x18\xae\x96\x05\x88\x81\x35\xcb\x99\x2d\x37\x01\x0c\xdd\xa2\x15\xb9\x30\xd0\x36\xea\xdd\x01\xf8\x92\xdb\x9e\xb1\x2a\x9f\x86\x15\xf4\x7c\x6a\x3f\x83\x33\xb4\x8c\x62\x6e\xca\xe4\xec\xa9\xc1\x93\xb9\xc7\xf4\x75\x44\x51\x04\xb9\x96\xee\x36\x1f\xfb\xb9\x67\x58\x30\x30\xe4\x16\x04\x98\x55\x34\xad\x57\x11\x2e\x45\xa8\x70\x52\xf5\x8b\x51\x16\x25\x79\xec\x6b\x5c\xe9\x4b\xe2\x51\x13\x89\x5b\x1e\xbd\xf6\xfa\x2a\x39\x40\x58\xa2\x27\x92\x24\xfa\xbf\x26\xc6\xf5\xd0\x43\x4e\x6b\x7e\x68\x60\xc1\xa1\x13\xc7\x22\x5b\x29\x0a\x26\xb1\x27\xa5\x19\xfd\x25\xbd\x2e\x5b\x5c\x29\x48\xe8\xe5\x59\x93\x3d\xea\x95\x6e\x85\xe7\x2b\x8d\xad\x4c\xb6\x80\x33\xd2\x3e\xa8\x8e\xf6\x0a\xd1\x94\xd0\x6b\x28\x0e\x9e\x3e\xd2\xa2\x0c\xa9\xed\x6d\xa9\x3d\x43\xcf\xa8\x93\x31\x23\x24\x8a\x8d\x0d\x74\x95\xa9\xd4\x12\xe3\xa9\xa9\xa1\x6c\x26\x04\x52\x6d\x1e\x45\x84\xc4\x8d\xe1\x90\x7a\x44\x7b\x07\x3f\x77\x8d\xd5\xdc\xe4\x58\xa7\x5c\x99\x2a\x78\x06\x7e\xce\x19\x5a\x0c\x5e\xd9\x24\xe1\x13\xb8\x90\x00\x99\xce\xe5\x68\x06\xf9\x5d\x66\xde\x24\x46\x5f\x05\xf7\x8b\xcf\xff\xff\xba\x19\x27\xad\xb4\x22\x7b\x80\x4a\x57\xb5\xf0\xb4\x62\xd3\x95\x0b\x39\x1d\xa1\xeb\x0a\x68\x45\xb0\x32\x53\xac\xaf\x8d\xa5\x00\x28\xaf\x84\x64\x57\x99\xc4\xf3\xed\xd0\x9a\x48\x76\xa5\x3e\x77\x80\x64\x57\x99\x67\x4b\x10\x39\x9f\x3d\x6b\xf2\xab\x9e\xd4\x05\xef\x9e\x91\x64\xc0\x93\x8c\x88\x57\x22\x41\x77\x20\x17\x4d\x84\xb8\x5f\x28\x7d\x95\x72\x67\xaf\x8b\xd2\x57\x19\xcc\x3e\xa3\xf4\x55\x86\xba\xbf\x28\x7d\x0d\x03\xed\x80\xd2\x67\xbc\xcc\x63\x4d\xd4\xdd\x98\x02\x64\x58\x4c\xf2\xe9\x2d\xdc\xbb\x4b\xc7\x78\x6a\x3c\xd8\xe6\x1a\x73\xa2\xa4\x05\xad\x85\xd1\xda\x64\xbc\xb6\xb8\x1c\x2c\xb7\xa2\x3d\xef\x06\xa2\xd2\x68\xf1\x59\x82\x59\xf9\xea\x80\x8a\xe6\x82\x44\x9a\xfc\x0c\xa3\x52\x02\x33\x09\x53\x3d\xb0\xd6\x25\x3d\x0a\x63\x50\x8d\x70\x66\x93\x9b\xdb\x6a\x49\xec\x4f\x1a\xe7\x7a\x00\x88\x80\xcb\x56\x62\xf5\x9d\x50\x95\x3e\x55\xe0\xd8\xe7\xfc\xc9\x4a\x8e\x40\x7e\x86\x18\x5b\x49\x0f\x3a\x1d\x5b\x85\xbe\x6d\xc5\x28\x53\x64\x56\x15\xe9\x8b\xc3\x42\x99\xfa\xe3\x77\x2b\x39\x90\x81\x9d\x73\xa6\x83\x00\x14\xdd\x22\x5d\xf8\xf2\x2b\x24\xb6\x35\xd9\xa5\xd6\xae\xf5\x74\xcc\x8d\x2a\x51\x8a\xa9\xd3\xf3\x73\x09\xbe\xa4\x39\x95\x23\x66\xf2\x8d\x6c\x29\xb0\x23\xf4\x01\x2a\x3d\xe2\x34\x4b\xc8\x01\xf2\xf3\xa3\x9a\x82\x46\xf9\x37\xdf\xfc\x91\xa0\x6f\x50\x4a\x30\x2b\xd9\x37\x40\xab\xd7\x57\x1e\xe0\x9a\xa9\x39\x19\xb1\xc6\xad\x40\xc3\xcf\xa6\x78\x8c\x0b\x38\x3b\x67\x53\xee\xec\x25\x50\xc1\x0c\x47\x73\x24\xf3\x89\x29\xc1\x19\xd8\xb7\x9c\x9e\x77\xc1\x67\xe0\x29\x85\x9b\xd8\x0d\x7a\x63\x3c\xc7\x0a\xc3\xe9\x88\xe7\x58\x9a\x5a\x8f\xe7\xd8\x7c\xfa\xf6\x16\xcf\xb1\xb2\xe7\xdd\xf0\x1c\x9b\xb6\x7c\x03\x3c\xc7\x52\x33\x5f\x0c\x9e\x63\x65\x45\xbf\x18\x3c\xc7\xca\xbc\x7a\x3c\xc7\x2f\x04\xcf\x71\x35\x1f\x69\x44\x2c\x6c\x3e\xbc\xeb\x21\x16\x36\xea\x57\xed\x2c\x62\x5b\x78\x18\x90\xe6\x5e\x18\xb1\xb0\x34\x81\x3e\x3a\x6b\xfd\xe8\xac\x46\xe2\xb3\x7d\xeb\xe1\xb9\x90\xad\xea\x45\xd6\x11\xb3\xb0\xb4\x3f\x9d\x4d\x9f\xbb\xa0\xc4\xe7\x8d\x07\x04\x0f\x4c\x57\x73\xc8\xa0\xb4\x8a\xd2\x22\x9d\x6a\xc9\xc8\x61\x4d\x19\xcd\x29\xf4\x3e\xf7\x94\xbb\x41\x5c\x61\x65\x79\xbd\xcf\xc6\xd0\xe2\x2e\x8d\xf3\x0d\x65\xbc\xb7\xa0\x57\x97\x7a\xb5\xa6\x73\xc4\x0d\x02\x9c\x24\xcd\x86\x41\x9a\xd2\x5d\x35\xbb\xea\x22\xf3\x48\x3a\xa0\x4d\xd5\xb2\xca\xf4\xf5\x64\x86\x63\x64\xe3\x4a\x32\x1d\xa4\xf9\x9b\x2f\x67\x54\x2a\xd1\x1a\x59\x53\x1b\xe1\x36\x6e\xd8\x2c\xdf\x04\xb3\x63\xb6\xd9\x67\x29\x49\xb9\x58\x15\xd6\xd3\xf8\xa5\x2d\x40\xb0\xc9\xa7\x24\x9b\x93\x54\x0b\x41\xe3\x75\x1b\xe9\xba\xdf\x3e\xe5\xd0\x66\xbe\x98\x30\xbb\x12\x11\x04\x4e\x56\xfd\x6e\x6c\xf0\xec\x3a\x6f\xf7\xb6\xdb\x6c\x11\xf7\xd6\xb4\xe2\x3b\xc4\xd1\xe5\xd6\x12\xfb\x52\xc9\x95\x0e\xf4\xdd\x18\xac\xe1\x63\x65\x36\x0c\xc7\x68\x41\x31\xac\x77\x08\xde\x5a\x49\xc4\x61\x28\xa3\x96\x3c\xa4\xf5\x11\x94\xd6\xdd\xe9\x36\x5b\x2c\x7b\x2e\x5a\xa3\x06\xbb\xd8\xf5\x22\x95\xe3\x04\x14\xa7\xb0\x4a\x57\x95\xbe\x27\x8b\x86\x34\xa4\x6e\x86\x63\xca\xd4\x9f\xfe\x7d\x9d\x30\x0a\x10\xf2\xed\xba\x41\x65\x11\x1c\x45\x44\x1a\x53\xa3\x8d\x2a\x35\x55\xef\x73\x91\x6c\xb3\xab\xfa\x70\xe8\x79\x6b\x96\xe9\xa1\x41\xe3\x82\x78\xcc\x05\x3c\x17\x3c\x9f\xcd\x9d\x35\x43\x53\xa1\x9e\x5a\xd3\x5e\xfe\x54\x33\x19\xae\xbd\x97\xdf\xe7\x34\xd9\xcc\x56\x74\x5b\x2a\xb7\xf2\xf1\xfc\x0e\xc9\xb9\xa7\xff\x09\x34\xdb\xb8\xb1\xf5\x41\x77\xef\xd3\x7e\xeb\xcd\xd6\xd0\xcd\x81\x83\xc3\x9b\xf2\x24\x01\xc3\xab\x24\xe9\x63\x5b\xd5\x7c\x98\xf0\x1d\xdd\xb0\x36\x38\x7c\x0d\xee\x1b\xa9\x70\x9a\x75\x92\x68\xae\x8d\xb0\x25\x91\x1b\x7d\xd5\x77\x6b\xa2\xba\x38\x23\xac\xc9\xda\xf3\x73\xbd\x48\xc0\x1b\x8b\xad\x73\xb1\x5e\x3b\x8b\xaf\x73\x4b\xf2\xc2\x31\x76\x4d\xf3\x58\x83\x05\x94\x42\xce\x0b\x1e\xef\x82\x17\x8c\x1c\x3f\xd0\xf3\x1b\xb1\x41\x29\x38\xdd\x95\xe3\x9c\x2c\x8a\xe8\x56\x23\x12\x87\x9c\x04\xb0\xd5\xad\x9d\x00\x4c\xfa\xfa\x2f\x10\xdc\x0d\x92\xa3\x89\xbe\x73\x11\x76\x10\x9a\x4b\xe2\x43\x1c\x2d\xa2\x84\x46\x81\x0a\x38\x13\x38\x9b\x37\xb1\x1b\xb7\xec\x3d\x04\xc5\x6b\x41\x50\xb4\x15\x0c\x59\x27\xb4\xd8\xd1\x15\xc3\x29\xe9\xa1\x31\x9a\xa0\x31\x0e\x7c\xf2\x37\x2b\x4a\x9f\xbc\x62\x4e\x71\xfd\xdc\xf5\xf8\x18\xaf\x80\x8f\xb1\xc9\xe1\x2b\xc0\x2f\x4a\xc7\xae\xc7\xec\x78\xd7\x09\xb3\xc3\x5f\x82\x7b\x05\xc3\xd0\x7e\x1e\x5f\x39\xbd\xbf\x3e\xb0\xd7\xc4\xe8\x68\x10\x17\xd6\x91\x9b\x96\x81\x74\x2c\xa3\x8b\x4e\xeb\xf2\xba\x90\x19\xeb\xad\xcc\x5a\x68\x18\x8d\x77\xd7\x9e\x60\x63\xb4\x6f\xc3\x9e\x9c\x9b\x5d\x26\x80\xac\x57\xdb\x2d\x4c\x02\x59\x47\xbb\x59\x2f\x1f\xc4\xd3\xc3\xdb\xca\x09\x29\x0a\xeb\x6c\x96\x17\x32\x70\x2e\x55\x22\xd0\x9c\x27\xb1\x89\x5a\x0a\x56\xcb\x77\xe0\xa3\x91\xfd\x02\xb9\xcd\xb8\xcd\x48\x64\xb4\xad\xa2\x3a\xce\xb2\xec\x0f\xbf\x89\x6f\x3d\x03\x24\x90\x7f\x77\x9b\x05\x12\xae\xec\xa6\x99\x20\x2b\x06\xb7\x4c\xf4\xd8\x30\x1b\x24\xe8\x71\xa9\xd3\xc9\xcd\xae\x93\xe3\xa9\x4a\x2c\x1b\xc4\x04\xd5\xca\x18\x6d\x8f\x94\x91\xe2\xcf\xe3\x0c\x0b\x9c\x24\x24\xa1\x32\x7d\xb6\xc0\xc4\xd3\xb2\xf7\x51\x9f\x55\xc1\x8d\x7d\x86\xe5\xe9\xc4\x90\xa2\x1b\x88\x2d\x9e\xa6\x38\x12\x39\x0b\x71\x7e\xfc\xc6\x20\x57\x5c\x2b\x87\x7b\x01\x4c\x3a\xd1\x1c\x2a\xf5\x4d\x31\x15\x8c\xc8\xd6\xba\x68\x24\xca\x05\x55\x8b\xb1\x2d\x33\xd7\xfd\xc0\xdd\xda\x2f\x4f\xed\x87\xcb\x1d\xb6\x2e\x45\xda\xf5\xe7\xcb\xda\x65\x44\x40\xcd\x0c\x57\xfd\x21\x28\xa5\x67\x53\xe0\x89\x2f\xbc\x01\xa1\x98\xb5\x6b\xbb\x2d\x84\x18\x3f\x8d\x83\xac\x8e\x71\x54\x25\x8e\x55\x87\xb5\x09\x84\x65\xd9\x24\x9f\x19\x86\xa4\xc5\x29\xfa\x0c\x90\xfb\x36\x74\xdb\x34\xad\x07\x1c\x78\x36\xc1\x58\x58\x6c\x4c\x90\x97\x6d\x95\xaa\x96\x71\x62\xc6\xb8\x6a\x2e\xb6\xb4\x64\xb0\x83\xe0\xab\x0e\x23\x0e\x3a\xd9\xd1\xb0\xf5\x41\x17\x22\xcf\x14\x9d\xd4\x71\x42\x76\x58\x82\x6f\x90\x40\x46\xb2\xb3\xf1\x97\xba\x35\x75\xf9\x4a\x9c\xd8\xce\x4e\xcb\xff\x16\x54\xc7\xc1\xad\x50\x36\x4b\x48\x29\x97\xe8\x2a\xa5\x40\x85\xe6\xfc\x80\xf5\x57\x53\x67\xd9\x36\xfb\xde\x45\x2f\x60\xa8\xee\x67\x4c\x44\x47\x23\x36\x90\xe8\x89\x20\x46\xcc\x12\x36\xd5\xed\xf3\x26\x65\x28\x84\x32\x21\xba\x27\x1f\x6a\xa1\x85\x07\xaa\xa4\xaf\xc5\x63\xfa\x98\xe2\x44\x92\x03\xdd\x30\x94\xf0\x53\x1c\x62\x00\x31\x7a\x12\x38\xcb\x88\x18\x31\x1b\x51\x0e\xde\x0e\xce\x13\xd3\xfe\x5a\xd2\x4f\x1c\xcb\xb2\xa1\xcb\xa8\x10\xf4\x1f\x25\x15\xfb\xb0\x94\x85\x12\x05\x78\x1c\x10\x7f\xe6\x4a\xaa\x2c\x93\x75\xfa\x68\xe6\x7a\x34\x73\xf3\xda\xec\x63\x44\xb3\x3f\x4f\xeb\x46\x35\xb7\x6d\xff\x2e\xa4\x98\x1d\x46\x37\xbf\x72\x18\xf0\xf3\x44\x00\xbf\x6e\xc8\xf6\x73\x44\x6b\xf7\x31\xcd\x6f\x2f\xa6\xb9\xfd\xd8\xae\x15\xd7\xbc\x02\x60\xc6\xf5\xb2\x6d\x10\xa9\x07\x3d\x79\xd6\x40\x52\xef\xb6\x0f\xbe\xe8\x18\x4c\x5a\xa0\xb2\xf4\x01\xa5\xcf\x14\x50\xda\xb0\xc4\xeb\x05\x95\x6e\xa4\xdf\xbf\x7c\xbc\x5b\xb5\xca\xf6\x73\xc6\xbc\xad\x08\xf3\x90\xf9\x64\xfc\xec\x47\xaf\x71\xce\x5d\x4f\xe0\xcf\x9e\x28\x8c\x48\x24\x34\x9d\x4d\x48\x1c\x83\x0d\x59\x2b\xab\x90\x49\x58\xd0\x8e\xd3\x05\x34\xf3\xc5\x52\x13\x3b\x4e\x38\x9b\x49\x1a\x93\xa0\xae\x7d\x49\x53\x81\xac\x46\xd8\xdf\x24\x21\xc2\x99\x20\x05\xfa\x4a\x52\x16\x91\xd0\x2c\x29\x50\xcc\x89\x64\xef\x95\xd1\x0c\x30\x5b\xa0\x07\xc6\x9f\x12\x12\xcf\x60\x87\xaa\x83\x39\x44\x94\x1c\x20\xaa\xfc\x67\x02\xd2\x20\x79\xae\x46\x7a\xec\x10\x58\x62\x44\x40\x62\xbf\x0d\xaa\x81\xfa\x66\xbe\x3e\x42\xe8\x9c\xa1\x29\x8e\xd4\x41\xb9\x0e\x79\xcc\x4d\x79\xc7\x47\xc2\xc2\x89\x17\x8d\x3c\x5b\xbc\x63\x63\x7c\x63\x85\xda\xdc\x79\xd3\x04\x30\x48\x28\xde\x2a\x34\xe5\x11\x6f\x03\xde\xf6\x29\x97\xd6\x87\x89\x38\xf3\x87\xc9\x22\x24\x78\xbc\x4a\xa8\x72\x67\xb0\x1f\x19\x8f\x5b\x4d\x05\x95\xa9\xac\x3b\x96\x22\x8e\xc8\x16\xd7\xb3\x76\x5e\x68\xd7\x2c\x77\xcc\x9f\x98\x54\x82\xe0\xd4\xda\xd6\x34\xf3\x06\x1f\xb4\x89\x22\xd2\xa3\xa7\xc2\x5c\xda\xeb\x6c\xf1\x05\x65\x0f\x7a\x77\x0b\x84\x4e\xa8\x55\x0a\x3d\x37\x6d\x5a\xa6\xef\x10\x72\xca\x99\xb1\xaf\x6f\xb3\x7f\x92\xce\x18\x4e\xd6\x54\x1b\x6b\x2b\x57\x37\x89\x3b\x93\x84\xbd\x80\xf5\xbd\x6c\xec\x19\xc8\xf4\xb8\x96\x5a\x5e\x99\x6f\x68\x90\xc7\x28\x26\x19\x61\x31\x61\xd1\x02\x48\x84\x41\xf2\xbb\x80\x92\xfc\xf0\x1d\x4e\x8e\xd0\x99\x89\xb6\xf6\x32\x93\xbd\x28\xe1\x8a\x4c\x31\xa3\x53\x2d\x7a\x81\x0d\xc3\x8e\x72\xc4\xcc\x30\x9d\x09\x31\x28\x00\xeb\x57\xac\x61\x67\xbe\xa7\x0c\x97\xc2\xdb\x37\x38\x4f\x49\xbe\x56\xbc\x65\x60\x30\x5a\xb4\xc1\xd6\x2a\xbc\x0a\x49\x76\x8d\xcd\x40\x12\x4a\xe7\xa2\x09\x54\x76\xd7\x97\x90\x59\x24\x8c\x14\x06\x3b\xe5\x9c\x24\x59\x50\x7e\x32\xc3\x42\x49\x77\xb4\x0d\x92\xa2\xe6\xdb\x69\xce\x4c\x1a\xbd\xd1\xdd\x9f\x2c\x60\x9e\x35\x51\x17\x8d\x1f\x8d\xd8\xb9\x7a\x2f\x35\xe7\xe3\x6c\x96\x2c\x10\x8e\x1f\xa9\x2c\x70\x6c\x23\xce\x64\x9e\x12\x51\xa9\xea\x6c\xe2\x97\x10\x76\xa4\xa9\xc7\xa6\xa5\xe8\x47\x9c\xd0\x58\x77\x6b\x6e\xed\x19\x9a\x90\xa9\x96\x48\x32\x2c\xa4\x73\x76\x35\x38\xaa\xec\xe6\xc6\x7a\xad\x5e\x8d\x5b\xfe\x14\x32\x44\x94\x16\xbc\x13\x5b\xad\xf2\xb8\xca\x39\xed\xaa\x2f\xe1\x9a\x93\xda\xa4\xd0\x72\x91\xc1\xae\xc2\xd9\x2a\x9c\x07\x87\x35\x94\x9b\xc0\x04\xdd\x8f\x93\x4e\xcd\xe0\xd6\xe2\x00\x95\x09\xda\x51\x1b\xeb\x66\xc8\x35\x09\x85\xeb\x5a\x2a\xac\x68\x64\x05\x61\x2e\xec\xc5\x61\x2f\x96\xf6\xad\x3d\xdb\x12\xd7\x54\x46\x38\xa9\xef\xf0\x12\x5f\x88\x79\x7f\x39\x6f\xb5\xc7\xcd\xb4\xbd\x34\x0f\x20\xe2\x49\xb2\x0e\x4a\x6d\x65\xe6\xa7\xc5\xe7\xcb\x47\x54\xf4\xa3\x37\xc0\xed\x05\x9c\x1a\xe3\x51\xc2\x89\x95\xf9\xa4\xb2\xbb\x14\xbe\x64\x6e\xb7\x85\xf5\x58\x8d\x18\x9f\x9a\x22\x83\x6d\xbe\xa6\x4c\xf0\x94\xae\x83\x3f\x65\xdc\x2f\x37\x2e\x36\x6c\x45\x54\x80\x8b\x20\x83\xea\xe0\x86\xbc\x6c\x8f\x10\x45\x8c\x99\x91\x00\x97\x9c\xa1\x14\x67\x1b\x2d\xf8\x2a\xfb\xc5\x00\xa5\xc6\x78\x64\x57\x4f\x9a\x12\xf4\x0f\x64\x01\xf0\x34\xc9\x13\x5e\x14\xd9\x12\x6d\xc8\x42\x6c\x2d\x72\xb8\xd7\xaf\x9f\xb3\x29\x5f\xe3\x70\x16\xd9\x0d\xf6\xf4\x61\x47\xb3\xc1\xf9\xf3\x91\x7a\x66\xf7\xcd\x9a\x76\x39\x8f\xa7\x4d\x44\xbd\xf6\xc9\x74\x2b\xf8\x9c\xca\x54\xc8\x44\x42\x3d\x6a\x9d\xbb\xb5\x7c\xb4\x82\x16\x11\x0c\x67\xf9\x52\x7d\x2a\xd1\xe1\xce\xd7\xa8\xd2\x0e\x32\x3a\xbb\x0b\xf1\xb8\x6e\x6e\xf5\x05\xd6\xcc\x1e\x92\x4e\x8b\xb5\x65\x3a\xd7\x7a\x08\x49\xae\x47\x8f\x8b\xd4\x7c\x42\x57\xc2\x3f\xae\xa3\x2b\x4e\xb5\x24\x64\xd4\x87\xc2\x5f\x6c\x03\x67\xa7\x34\x21\xf2\x08\x9d\x37\xe8\x8d\x2e\x6c\x15\x64\x34\x40\x8f\x84\x00\x1e\x27\x3d\xe5\x82\x06\xb5\x3b\x9c\x8c\x84\x28\x20\x0c\x87\xd6\x28\x41\xf4\x98\x23\xe3\x0d\xe3\x06\x0e\x09\x62\x66\x04\xd5\x3c\xcb\x08\xab\x0a\xa4\x68\xcd\x0b\xa8\xcd\x81\x35\x32\xbc\xff\x80\x1b\x4f\x26\xb6\xe5\x89\x8a\x51\xb5\x6c\xe9\x2e\x30\xc9\xbb\x47\x05\xbb\x5e\xef\xf4\x17\xf5\xbd\x69\x1c\xe1\x5d\xb9\xf5\xb5\x47\xe7\xa5\xfc\xf5\x5d\x7b\x1f\xe0\x53\x67\x67\xc4\x68\x2a\x08\x98\xa2\x53\x9f\x66\xc7\x62\x22\xa4\xe2\x1c\xee\xbb\xdb\xb3\x1f\x8f\xef\xcf\x11\x51\x11\xd4\x8b\x1f\xb1\x48\x3e\x1e\x68\xf1\xf8\xef\x39\x51\xfa\xe7\x96\x30\x74\x9a\x12\x26\x81\x13\x50\x55\x4b\xf0\x6d\x5e\x48\xb7\x30\xfa\xbf\x67\xe5\xef\x97\x90\x7c\x2d\xa9\x01\x68\xd7\x01\x56\x03\x99\x02\xd8\xa9\x59\x5a\xd9\x40\x31\x46\xc5\x1b\x36\x15\x3c\xd9\x20\x88\x91\xfd\x2d\x67\x6b\x0a\x5d\xa7\xc5\x47\xc1\x28\x5a\x64\xba\x34\xc3\x80\x06\xb6\x5e\x74\xa4\xf9\xa6\xb1\xf5\x55\x4c\xa4\x48\x16\x71\x2a\x7b\x51\x1b\x06\x29\x41\x08\xb0\x10\x4f\x4f\xf6\xae\xb7\xc9\x79\x7e\x62\xc1\x47\x47\x23\xf6\xc9\x99\xc6\x8b\x5f\xa5\x6b\xc2\x44\xdc\x7a\x90\xb4\x72\x2b\xd0\x6c\x4c\xa5\xff\x01\xa0\x6e\x65\x9e\x28\x53\xb4\x60\x4a\xb5\x96\xee\x06\x6a\x9e\x34\x71\x09\x81\x59\x34\xbf\xe4\xf1\x76\xa8\x4f\xd3\x31\x49\xd6\x91\x44\xcf\xa7\xc3\x44\x6a\xfa\x8e\x1e\x5a\x4e\xe7\x26\x65\x39\x8a\xc9\x80\x1c\xe8\x80\xdb\x8d\x8e\x63\xec\xb1\x89\x29\x81\x40\x10\x18\x53\xab\x31\xad\x26\x6d\x4d\xef\xa2\x95\xd4\x8d\x2d\xd5\x04\x93\xf9\x40\x11\xe8\x05\x61\x35\x62\x22\x67\x00\xc3\xe9\x5d\x2b\x18\x49\x22\xa8\xf1\x71\x44\xce\x2c\x63\x8d\x64\x33\xcd\x26\xb4\xe4\x07\xfe\x35\xce\x40\x3f\xe3\xb9\x84\xb8\xb4\x94\x28\x7d\x41\x7d\x05\xa5\x7e\x8c\x73\xeb\x00\x65\x82\xa6\x54\xd1\x47\x22\xbf\x6e\xd8\xba\x53\xac\x70\xc2\x67\x03\xa1\xe8\x14\x47\xea\x0e\x6f\xa5\x81\x63\xdb\xcc\xa6\x81\x12\x6e\x18\xe8\xfc\x4c\x2f\xfe\x8c\x30\x22\x60\xa2\x5a\x27\x6f\x3e\xc2\xf0\x64\x23\xce\x0d\x85\x07\x22\x03\xd5\x2e\xbd\xc5\x02\xe7\x8a\xa7\x5a\xbf\xc5\x49\xb2\x00\x08\x76\xfd\x64\x8e\xe5\xdc\x6d\xb4\xc1\x6d\xef\x72\x37\xd9\xc5\x3d\xc5\xd1\x9c\xdc\x2a\xac\xf2\x46\x63\x70\x65\x94\xef\x08\xcb\xd3\x77\x27\xe8\x7f\x8a\x39\x9e\x0e\x4e\x7f\x18\x8e\xcf\xce\x6f\x07\xdf\x5f\x0c\xcf\x82\xf9\xd8\x27\x9f\xce\x6f\x6f\xeb\xbf\xfe\x70\x7e\x57\xff\xf1\xfa\xea\xfa\xfe\x62\x70\xd7\xd4\xca\xc5\xd5\xd5\x8f\xf7\xd7\xe3\x0f\x83\xf3\x8b\xfb\x9b\x61\xc3\xa7\xf7\x77\xfe\xa1\x7d\xf6\xd7\xe0\x10\x41\x5c\x0f\xc4\x7d\x35\x8f\xb6\x7a\xce\x0e\x51\xf9\xc5\x13\x74\x5f\xc5\x80\xb4\xc1\x31\x26\x89\xee\x09\x4b\xcd\xaa\xf0\x24\x21\xf1\x88\x21\xf7\xb9\x9e\x7b\xdb\xa7\xc6\x7d\x18\xcd\x09\x4a\x38\x7f\xc8\x33\xcb\xc1\x4c\x24\x3e\xe3\xc6\xbe\x43\x64\xd0\xda\x0f\xe7\x77\x27\x75\x2c\x4a\xdf\x58\x90\x2b\xef\x48\x1d\xc6\x85\x1d\xd7\x04\x93\x49\x26\xc8\x23\x9c\x49\x6f\x11\x0d\x7a\xf0\x1b\xb0\xac\x1f\xd3\x1a\x66\xaa\xd2\x4d\x1c\xdb\xf2\x4d\x6e\x62\x41\xc3\xe5\xed\x5b\xb6\x9a\x7e\x39\x0c\xf8\x36\x9a\x90\x08\xe7\xc6\xc9\xaa\xaf\x23\x21\xb8\x08\x07\x5c\x6c\xfb\x96\x8d\xbe\xab\x4b\x19\xe5\x32\x3d\x12\xce\x88\xfe\x24\x38\x39\x5a\xfb\x06\xcd\xdc\x01\xbf\xce\x2d\x40\x37\x95\xc6\x0f\x54\x78\xc6\x00\xd3\x4c\x73\x6e\x0f\xd0\x49\xc1\x6b\x8b\x15\x7a\x22\x90\x8e\x91\x5b\xe4\x6b\xa3\x21\xeb\x13\x08\xdd\x19\x7f\x83\x2b\xb7\x50\x4a\xd3\x68\x65\x99\xbb\x10\x8b\xf5\xf7\x92\x34\xb1\xcb\x2d\x62\xea\xcf\x4c\xa3\xc0\x43\x9d\x0b\x1d\x46\xdc\xe2\xd9\x71\x3c\xbb\xc1\x8e\xbd\x44\x0a\xaa\xdf\x1b\x2b\x58\xba\x66\xae\x5d\xc6\xe3\xf2\x08\x4b\x58\x6f\xdd\x07\x56\xc2\x03\x5b\xb9\x56\x77\x3c\xc6\x0b\x4d\x1c\x10\xbb\x22\xf3\x2c\xe3\x42\xa1\x96\x36\x8c\x0f\xc3\x8c\x0f\x6e\x06\x3b\x0f\xcf\xa2\xa0\x11\x2d\x07\xc8\x06\x38\xd6\x6e\xa9\x55\x76\x5d\x8b\x73\x1f\x62\x34\x80\xba\xe6\x71\x9b\xd3\x92\xe2\x5b\xa2\xd0\x26\x11\x75\x9b\x88\xb5\x4c\x5f\xc3\x5d\xcb\x08\x34\xf5\x7e\xe5\x5a\x68\xdc\xf2\x84\x4c\xd5\xb8\xd1\x37\xb3\xc4\x0c\xa9\x5b\x64\x6d\xd9\xa8\x74\x36\xdf\x41\x8b\xdd\x65\xf9\xef\xac\x57\x53\x0b\xf0\x81\x1e\x2f\x38\x57\x46\x8a\x2c\x34\x0d\xe4\x56\x13\x8c\x00\xb6\x53\x53\xf7\xa8\x10\xd5\xb4\x64\xfe\xc0\xf8\x13\xf3\xf6\x77\x79\x34\x62\x43\x0c\xc5\xb8\xbc\xba\x60\x03\x53\x8c\xac\xbe\x52\x4a\x2f\xd5\xf6\x79\xd1\xe0\x8f\x76\xb0\xa3\x82\xee\x6d\xe1\xc2\x64\x81\x8a\xfa\x4d\xa5\xef\xba\x9c\x1e\x63\x9b\x76\x82\x9a\x99\xb0\xad\x3c\xa2\x48\x66\xed\xe7\x66\x9e\x85\x9b\x13\x9c\xe3\xba\xab\x23\xf4\xb3\xb3\xcf\x40\x1c\x4d\x51\x77\x4c\x99\x1b\x27\xc1\x0b\x87\xe6\xd2\xb4\xb0\xbb\x00\x48\xd9\x75\x64\xcd\xf2\x05\xf6\xc9\xe0\x0d\xab\x5c\x52\x93\x19\x33\x76\xd3\x35\xc2\x08\x4f\xfd\x47\xb7\x64\x79\x9c\xf1\x07\x28\x23\x62\xdd\xca\x20\x33\xb0\x64\xf1\xbf\xcc\x66\x99\x28\x76\x07\x10\x6e\xcb\x3a\x58\x3f\xa7\x3e\x3f\xe0\xa7\x33\x41\xee\x68\x4a\x93\x04\xe4\x80\x23\x34\x80\x2a\x5c\x50\x5f\x49\x5f\x85\x2e\x5a\x8b\xce\x18\x5f\x15\x20\xd2\x42\x4c\x51\x40\x4c\xb7\xed\xc4\x24\x81\x9a\x8a\x1c\xa0\xdd\x50\xd4\x0e\xf2\x41\x35\x6f\xc1\x75\x70\xb8\xee\x59\xa0\x6b\xa8\xd8\xaf\x11\x6c\x55\x1b\x6e\xf0\xe1\xbf\x9a\x87\xfe\x31\xc7\x02\x33\x05\x21\x44\x56\xf2\x16\x24\x08\x65\x25\x9f\x21\x48\x8f\x19\x73\x2d\xfc\x14\x6e\xae\x73\xcc\xcf\xe8\x23\x61\x88\xc6\x07\x88\x1e\x91\xa3\x03\x5b\x4a\x57\xe6\x93\xe2\xcd\xb9\x96\x1c\x46\xac\x16\xc8\x71\x84\x06\x89\xe4\xf6\x0b\xc2\xa2\x04\xaa\xde\x05\xd1\x4e\x9e\xf2\xad\xf3\x67\xb2\x00\xfd\x02\xb6\xb2\x68\x9e\xdb\x07\xc1\x87\x23\x86\xa5\xf1\x5c\x27\x70\xd2\x8b\xdf\x9b\x2a\x5b\x96\xa2\x19\x9e\x11\xd9\xb4\x76\x0d\x3d\xdb\x26\x99\x92\x07\xcb\x36\x08\xde\x80\x8d\x29\x02\x6c\x82\xec\x4d\xf4\x15\x56\x28\x21\x58\x2a\xf4\xed\xd7\x6b\x45\x70\xb8\x09\x16\xdc\xd5\x1e\xdf\x22\xf0\xd8\x45\x2e\xb6\x95\xe7\x85\x92\x34\x08\x23\x46\x9e\xc2\xb0\x1a\x0e\x91\x50\x8f\x54\xe6\x50\x48\x30\xc8\x95\x30\xa5\xe0\x4c\x56\x0f\x04\x7f\x1a\x95\xa9\x85\x8f\x38\x9c\x32\xeb\xe4\xb4\xc3\x6a\xa0\x2c\xab\x3c\x51\xa3\x9e\x41\x3a\x7f\x11\x43\x38\xc7\x6a\xc4\x2c\x67\x75\xc1\x1d\x41\xd1\xa7\x41\x92\x94\xe3\xf6\x30\x84\xa6\x32\x3d\x61\x28\x83\x78\xe4\x17\xe8\x12\xd4\x2f\x1f\xea\x55\x2e\x89\xec\x0f\x8b\xd6\xd4\x46\xcc\xe7\x4a\x87\x6d\x37\x4a\x3b\x4d\x56\xe0\x17\x14\x82\x1b\xba\xbf\x30\xf5\x28\x3b\x08\xc3\xed\xf5\xc2\x97\x78\x4d\x6a\x96\xf7\x25\xb2\xf1\xae\x3b\xe8\x2e\x2a\x37\x5b\xb1\xe1\x9a\x7d\xe2\x0d\x46\xf1\x96\xcd\x0d\x64\x8b\x6d\x14\x70\x1f\x73\xf8\x52\x7e\xd9\xd2\xd0\xcf\x63\xc8\x21\x58\xcd\x05\x8b\x98\x7c\xc7\x3a\xc0\x1c\x4d\xe3\x20\x44\x38\x88\x9f\x84\x10\x72\xc7\xf8\xec\x9b\x2d\xfe\xd1\xec\x6d\x4f\xff\xa0\x98\xbf\x9b\x8a\x0f\x55\xab\x4f\xbc\x5d\xd8\x1b\xc4\x7f\xc3\x11\x84\x39\x42\x4f\x2e\xc0\xb2\x9e\xcc\xed\x20\xf0\x30\x98\xdc\x1b\xc5\x43\x5b\x5a\xf6\x08\x0d\xe1\xa2\x71\x95\x66\xf1\xd4\xb9\x0d\x82\x97\x47\x4c\x6b\x26\x2e\xf7\x33\x68\xbf\x4c\xe2\x4d\x27\xc0\x00\x49\x6c\xe5\x71\x49\x57\xc3\xf5\xb6\x69\x13\x0e\xc7\x02\xda\x00\x3c\x52\x34\x9c\x9d\xa0\x98\x47\x0f\x44\x1c\x0b\x12\x53\x79\x02\x1e\x70\xd5\xea\x7a\x4b\xb5\xb6\xbd\xb5\xa4\xd1\xb5\xea\x7b\xbd\x46\x6b\x0a\xe5\x53\x21\x78\xdc\x15\x46\x3a\x40\x74\x0a\xea\x84\x0b\x48\x35\xc9\x25\x2e\x55\x96\x30\x25\x16\x19\xa7\x4c\x79\x53\x56\x65\x21\x9c\xa6\xa1\x85\xb6\xb6\x50\x6a\xb1\x8b\x48\x99\x0d\xa7\x7d\x37\x27\x92\xb8\xb0\x00\x33\x29\xc5\x91\xf1\x85\x18\x76\x91\x61\x35\x97\x90\x09\x53\x5e\x03\xab\x74\xc1\xa7\x7a\x85\x70\x06\x51\x05\xc6\x4a\x51\x7c\xe4\xf3\x35\xa4\xa2\x49\x32\x62\x8c\x90\x58\x22\x48\x5a\x79\xdf\x98\x71\xa5\x3f\x3d\x40\x38\x8e\xd1\xff\xfe\xea\xc3\xc5\x2f\x77\xc3\xf1\xf9\x25\xd8\x9c\xcf\x2f\x86\x5f\x1f\xf8\x1f\xaf\xee\xef\xfc\xaf\xc6\xc2\xf2\x48\x04\x4a\xf1\x03\xa8\x78\x4c\x1a\xf9\x0f\xb2\x1a\xc2\x91\xba\x5c\x34\xfd\x44\x12\x17\x8f\x6a\xc5\x14\x0f\xbf\x62\xf7\xb0\xb5\xee\x99\xb1\xf9\xad\xa1\xfc\xde\xf8\x4f\x96\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\xc2\x20\x66\xda\x5a\xfb\x0a\xdd\xb7\x20\x38\xc2\x66\x94\xb5\x45\xcd\x11\xf6\xf8\x9c\x42\xfc\x8f\x64\xf1\x93\x56\xaf\xaf\x31\x15\x9d\x69\x6f\xc8\x1e\xa9\xe0\x0c\xa6\xe6\xcd\x5a\xfe\xc4\x68\x3d\x1d\xcb\xea\xa1\x92\x46\x16\x86\x48\x8a\xac\x35\x32\xb3\x09\x44\xe2\xd5\xa7\x6b\xe1\x03\xc8\x67\x25\x5c\xd6\xa3\x47\x40\x78\xc4\x34\x81\xa8\x5a\x77\xd1\x14\x34\x38\x62\x77\x57\x67\x57\x27\x88\x24\x78\xc2\x05\x64\x41\x99\xc0\x1d\xd7\x84\x5d\x30\xa8\x38\xee\x1b\x2a\x65\xbc\x1e\xa0\xac\xc8\x78\x0d\x8d\x68\x47\xa6\x8d\x55\x05\x49\xb9\xa8\xe7\x8b\xee\x56\x05\xb4\x93\xbd\xe6\xa2\xcb\xf5\xaf\x5f\x83\xa5\xe3\x99\x56\xe4\x2a\x9c\xd7\xde\xcd\x53\x82\x4d\x2d\x40\xe3\x16\xb2\xb6\x7c\x1b\x66\x9a\x24\xa5\xd2\x22\xfa\xe0\xc8\x23\xeb\x28\x2f\xde\xe4\x0c\xfd\xf8\x67\x89\x26\xb9\x1a\xb1\x72\x1b\x9c\xa1\xc1\xcf\xb7\xe8\x7b\xac\xa2\xf9\xd7\x23\x76\xa5\xd5\xcc\x1f\xff\xdc\x92\x9a\xbf\x36\xb2\x89\x5e\x93\x33\xac\xf0\x05\xc7\x31\x65\xb3\x26\x58\x93\x02\xf8\x79\x78\x37\x38\x41\x57\x56\x87\xf7\xd9\xb4\x05\x14\x51\xd0\x10\x30\x64\x98\x88\xe3\x22\xc0\xca\x59\x19\xfa\xc1\x68\x66\x70\x61\x8d\xd8\x9d\xc1\x73\xd1\x5c\x95\x2a\x94\x71\x0b\x3e\xae\xb5\x32\x83\x74\x63\x4c\xd9\xd6\x92\xa8\x57\x07\xc8\xd8\x6f\x86\x95\xc7\x40\x9e\xa9\x33\xfb\x11\x03\x05\xdd\x67\x38\x26\x3c\xc2\x09\x44\xce\x1d\x06\x36\x3d\xad\xb6\xf3\x1c\xd2\xcd\x20\x64\x85\x2d\xca\x01\xae\x3e\x03\xd2\x0b\x65\xe1\x46\x81\x01\x00\xf6\xd1\x3a\x53\x53\xae\x39\xce\xd1\x88\x9d\x4f\x4d\x60\x5d\x62\x56\x47\x7f\x48\x18\xf8\x93\xdd\xb2\xe8\xa7\x8e\x1f\x41\x8d\x54\xe3\x56\xc4\x11\x98\xef\xd9\x02\x82\xac\x01\xb0\x98\x43\x80\x46\xc1\x9d\x2d\x51\xd6\x76\xd1\xdf\x89\xc1\x67\x23\x66\xe2\xf9\x4a\xfb\x12\x66\x83\x07\xbd\x73\x06\xe1\x86\xc5\x75\xe9\x05\x8c\xcc\x86\x1f\x5a\x59\x3f\x13\xe4\x30\x26\x8a\x88\x14\xec\x3d\xe1\x9a\xea\x1b\xf6\x08\xdd\x84\xea\x75\xcc\xa3\x3c\x75\xa8\x6c\x90\x96\x67\xe3\xd4\xec\x25\xea\x29\xc4\x5c\xec\xab\x28\x1e\x8b\x68\x4e\x15\x81\xdc\xb9\xce\xfa\xb1\x21\x98\x41\xf8\x69\x5d\x52\x6f\x17\x7c\x81\x77\x6c\x17\x5b\x66\x1a\x1a\x67\xe5\x96\x4a\xad\xad\x06\x95\x5a\x81\xf0\x7f\x59\x20\x47\x71\x01\xc2\x16\xf9\x9c\x71\x30\x72\x9b\xcc\x27\x1e\xbf\x97\xe8\xfc\x5a\x4b\x40\x5a\xe3\xf5\x67\x30\x97\xca\x84\x80\x41\x52\x8d\xf9\xda\x04\xf5\x1f\xa0\x6f\x4c\xf1\xca\x08\x7d\x76\x7f\xfc\xe9\x3f\xfe\xe3\x8f\x7f\x5a\x27\xe9\xc3\x29\xe4\xd0\x6e\xb1\x46\x1e\x07\xbe\x2c\x12\x85\x3b\x50\xe7\x54\x5b\xec\x82\x3d\x80\x6d\xcb\xbf\x09\x8a\x4f\x10\xe1\x83\x67\xf6\x84\xcb\xf0\x64\xa2\xd2\xd1\x2c\x22\x09\x24\x51\x07\x65\x0e\xe1\x85\x5d\x2b\xd1\xff\xaf\x25\xe0\x17\x63\x7d\x54\x36\x8b\x44\xa2\x89\x17\xaf\x75\x23\xe8\x2b\x6b\xff\x53\xe0\x40\xfc\xda\x5d\x70\x3c\x89\x89\xb0\x85\x6f\x9d\xc9\xce\x1b\x12\x81\x39\x90\xcf\x59\xc2\x63\x07\xad\x24\x49\x86\x41\x80\xd0\xcc\xe0\x68\xc4\x86\xae\x0e\xaa\xad\xc2\x0e\x1f\x19\xcf\xcb\x14\x47\x06\x51\x48\xa2\xaf\x3e\x9f\xe8\xdf\x0e\xd0\xe2\x04\x42\x3d\x0f\xd0\x3f\x4e\x6c\xf2\x3d\x16\x6a\xac\x7f\xfa\xda\xc9\xda\xb6\x09\x18\x34\x95\xe8\xfd\xf1\x23\x16\xa6\x7c\xda\xb1\x19\xd1\x7b\xcb\x59\x7d\x41\x8b\x50\x36\x4f\x38\x7f\xb0\x61\xb0\xb5\x0f\x8f\x1d\x90\x07\x90\xb7\xf7\x9b\x98\xad\xf7\x59\x89\x0a\x1d\xda\x2a\xae\x47\xd9\x04\x1d\xfd\x4d\x72\x86\x8e\x16\x38\x4d\xec\xaf\xee\xa9\x8d\xd2\xc5\x12\xb9\x3a\xbe\x2e\x46\x27\x59\x18\x4b\xe9\xf7\x09\x9f\xc0\xac\x3e\xb9\x99\x9a\x38\x57\x18\x68\x71\xfb\x14\x17\x96\x9d\x88\x95\xa4\x0c\x1c\x41\xca\x95\x79\x05\x78\x5c\xd3\xac\x3e\xfb\x21\xfd\xb7\xf1\x0b\xc3\xa2\xb8\x54\x3b\x63\x1c\xf6\x31\x66\xba\xd1\xcf\xe8\x2b\xcb\x82\xbe\xd6\x77\x8c\x0d\x2a\x36\xcb\xd0\xd4\xc1\xc2\x77\xf0\x4b\xd0\x01\x65\xc8\x24\x4f\x2e\xf9\xf2\x1f\xc7\x47\x47\x47\xfe\xeb\x4b\x3d\x95\xff\x17\x51\x25\x49\x32\x35\x2d\xb9\x1b\x6c\x31\x62\x9f\x1c\x68\xab\x33\x5e\x17\x10\x41\x50\x7f\x37\xe2\x09\x3a\x2c\x0c\xba\x31\x8f\x24\xfa\x9d\x16\x6b\x83\xa5\x84\x1f\xb5\x1e\xd7\x7c\xa6\x2c\x4a\xdc\x0b\x1d\x2a\x6b\x10\xaf\x1e\xab\x10\x15\xc4\x2b\xb6\x58\x86\x08\xc0\x40\x0b\x9a\x72\x8e\x2d\x72\x88\x10\xfa\x65\xf2\x59\xc1\xa3\x16\x60\x96\xc6\x80\xf3\xe6\x9b\xb2\xc6\x6e\x0b\x7c\x16\x43\xd6\x2d\x0b\x60\xe1\x33\x2c\x67\x30\xf3\x3c\x08\xdd\x27\xfa\x72\x61\x21\x8c\xa8\xcc\xd3\x14\x8b\xc5\x71\x71\xda\xea\xc4\x59\x60\x82\x03\x8f\x49\xdc\x02\x80\x0b\x37\xb1\x47\xcb\x46\x31\x58\xf1\xd2\xdd\x68\xfe\xec\x46\x50\x84\x04\xe2\xe9\x4c\x09\x1e\xc2\x22\x1e\x5b\xba\x2e\x72\x44\xcb\x12\x8b\x7f\xa7\x2e\xab\xb8\x88\x18\x59\x18\xe3\x98\x32\xf9\xcb\xf6\x0d\xf7\x71\x0b\xfb\xe6\x63\x28\x10\x45\x66\x6b\xb8\x47\xcf\xaf\x6e\xdd\x37\xdd\x2f\x5d\x58\x87\xb2\xc8\x8e\x9d\x96\xe8\x2c\x12\x02\x3f\x15\xd7\x2f\xc4\x76\x18\xeb\x4c\xee\x33\x68\xcd\xbf\x4f\xf9\x35\x4d\xf4\xad\x05\x34\x7e\x34\x62\xa5\x9f\x0f\x10\x49\x68\x4a\x99\x8f\xad\x33\xcc\x9d\x4f\x8d\xf4\xfc\x40\x95\xde\x32\x19\x3f\x68\x0e\xe6\x60\x22\x02\x95\x6a\xc0\x16\x8e\x74\xbc\x63\xca\x5a\x20\x72\xa9\xc7\x55\xe8\xe8\x5a\x98\xd5\x4d\x1c\x5a\x81\x94\x06\x84\x07\xe7\x77\xc4\x74\x6b\xee\x2c\x15\x41\xbd\x41\x7b\x41\x73\x87\x0e\x4c\x33\xe0\x00\xd0\x47\x29\x32\xd7\xcb\xbf\x0d\x02\xca\x90\xe5\xe9\xb6\x29\x21\x36\xc8\xf7\xb5\xcc\x74\xd7\x45\xc5\x79\x9b\x5e\x44\x58\x9e\xba\x03\xb5\x06\xc5\x0d\xad\xf8\x13\x93\x28\xc1\x26\x4d\x5f\x37\x04\x91\x8f\x07\xc6\x41\x1a\x54\xb7\xb7\xd7\x8b\xe9\xc6\xe0\x73\x27\x84\x7d\x65\xfe\xfd\xb5\xaf\x98\x7e\x60\xef\x73\x21\x1d\x7a\xa0\xdd\x73\xa8\xef\x42\x62\x63\x43\x07\x94\xbb\x19\x16\xb1\xb1\x96\x87\x5a\x85\xc9\xb3\xd5\xf2\xd7\x82\xe7\xe8\x89\xca\xf9\x88\xdd\x71\x67\x70\x44\x8c\x7b\x9c\xc0\x03\x50\x46\x6b\xfd\x61\x09\x4c\x00\x46\xdd\x44\x01\x10\x6e\xba\x4d\x46\x10\x04\xb1\x8e\x19\x8f\xc9\x76\xe8\x0d\x77\x85\xaf\xc2\xf9\xaf\x05\x31\x59\x5b\x70\x53\xb4\x25\xbd\x9a\x52\xf0\x5b\x74\x0c\x4b\xe0\x4a\xca\x43\x2d\xaf\x27\xb6\x29\x30\x8a\xbf\xd5\xa0\x15\xa7\x71\x06\x39\xbb\xa5\xb5\xf7\xe8\x7b\xdb\x6e\x42\x54\x4e\x28\x59\xb9\x02\xfe\xea\x33\x73\x8f\x60\xd9\x7d\x80\x31\x46\x33\xc1\xf3\xcc\x27\xb6\xbb\xa4\x3c\xb3\x0d\x56\xa6\x39\x67\x53\x7e\x62\x75\xaa\x0b\xca\x1e\x0c\xc5\x3f\xd7\x1e\x19\x80\x45\x12\xa3\xe0\x77\x77\x87\x99\x15\x3f\x44\x94\x45\x49\x0e\x17\x9f\x54\x38\x7a\x30\x20\x91\x6d\x46\x5f\xfd\xcd\x78\x75\xca\x63\x8b\xc4\x94\x27\x89\xed\xb6\xb8\x40\x8b\xfa\x73\x8f\x14\x23\x8c\xee\x6f\xce\x9b\xfb\x7e\xa0\x75\x67\x4e\xf3\xed\x59\x26\x10\xf8\x9f\x1f\xe9\x5a\x71\x97\x15\x38\x6e\x52\x22\x75\x6f\x5c\x6a\xc3\x70\xd3\x44\xfa\x11\x2b\xb2\x6d\xbe\x92\x01\x40\x59\x23\x52\xaf\x86\x2c\xb3\xd4\x7a\xbc\x25\x2c\x4b\x01\xa9\x02\xa1\x41\xed\xf8\x30\x61\xb0\x16\x3c\x5c\x03\x61\x01\xde\xef\x36\x9f\xca\xbb\x2b\xa6\xb3\x7c\x98\x09\x21\x6b\x60\x02\xdc\xea\xd7\x3b\x0e\xb2\xf4\xea\xb2\x31\x3e\x61\xaa\x42\x89\xb5\xb0\x04\xc6\x79\xa9\xd6\x68\x27\x82\x76\xe4\x68\xc4\x6b\xe9\x53\x3c\xfc\x48\x5c\x18\x8e\x97\xc5\x5c\xbf\x33\xf0\x6d\x71\x24\x73\x38\xa9\xa6\xfe\x84\xb3\xd0\x36\x10\x7e\x20\xb6\x6e\x19\x36\xa1\xc5\xaf\x71\xda\xc0\xa2\x9b\x77\xa2\xe8\xf8\xcc\x7e\xfc\x49\x7f\xdb\xcc\x8a\x3e\x41\xae\x9d\x87\x37\x49\x31\xd3\x27\xdb\xf5\xda\x62\x84\x34\x12\xe1\x46\x43\xba\xcf\x36\x1a\x90\xe9\xb1\x63\xcd\x14\xdb\x95\x6b\xe5\xc9\xd8\xe1\x71\x62\xec\x4c\x6a\x0e\x26\x88\x02\x6b\x5c\x73\xb4\xb2\x29\xc2\xe0\x92\x27\x58\xcc\x8c\x82\x24\x89\x92\x5f\x37\xec\x70\x91\xf3\xb0\xc5\x0e\x6f\x50\xcf\x29\xf4\x7b\x82\xf8\xbd\xec\xa4\xf9\x51\x96\x91\xd5\xfc\xad\xec\x2b\xa3\x59\xa1\x89\xca\x10\xff\x2a\xe2\x42\x00\x02\x68\xac\xcf\x4a\x3b\xb2\xc9\x96\x75\xfd\x2e\x71\xea\xf3\xf6\x5d\x75\x31\x9b\x9e\x65\x06\x37\x21\x00\xb3\xd7\x3e\x86\xad\x0b\xf8\x85\x43\xb0\x05\x75\xda\x46\x30\x62\x03\xf7\x8a\xcf\xfd\x05\xdd\x4e\x18\x01\x1c\xe2\x43\x4d\x34\x34\xe8\x57\xb8\x58\x75\x3b\xb9\x96\x49\xac\x9b\x62\x59\xad\x41\xa8\xf5\x3b\x7f\x1b\x59\xb4\x71\x0f\x60\xb6\x14\xe9\xfd\x71\xfd\x12\xad\xcd\xf0\x29\x51\xb5\x84\x66\x53\xc7\xab\x75\x29\x87\xeb\x60\x1b\x0a\xab\x76\x9a\x18\xd2\x64\x51\x90\xa9\x5e\x71\xa3\x93\x57\x3a\xab\x9f\x56\xb5\x15\x37\xa6\x38\x1d\x0b\xde\x0e\x85\xdf\x61\x99\x5c\x13\x25\xfb\xce\xdc\xc0\x25\x2f\xd0\xdf\x73\x9c\x98\xcb\x8d\x59\x72\x74\xc3\x06\x51\xf9\xbb\x3f\xa1\x01\xdc\x3e\xe8\x13\xf0\x45\x70\xf0\x43\x6b\x8a\x23\x9a\x66\x44\x48\xce\x70\x6b\x4d\x88\x87\x3f\xcb\xb1\xc5\x3a\x1f\xe3\x28\xe2\x79\x1d\xd7\x7c\x8d\x99\x34\xb4\x16\x4e\x0a\xa3\x87\x7c\x42\x04\x23\xa6\xee\x05\xbc\x87\xdc\x7b\x9d\x86\xcb\x71\xae\xe6\xdf\x8d\xa3\x84\x76\x06\x60\x87\xec\xa2\x81\xfe\xec\xd4\x7c\xb5\x6c\x02\xa5\xf6\x4b\x43\x67\xc8\x3c\x43\xe6\xd9\x11\xfa\x1e\x47\x0f\x84\xc5\x28\x4b\xf2\x19\xb5\x29\xff\x70\x43\x01\xbb\x0c\xcc\xb3\xe5\x89\x19\xd9\xc2\xb4\xaf\xaf\xa1\x11\x4b\xf1\x83\x41\xf0\xb3\x42\x64\x84\x93\x64\x2d\x33\x83\xa7\x87\x1a\xf6\x89\xcb\x4f\xf7\x35\x46\xcc\xf9\x50\xe6\x7c\x80\x41\x15\x70\x1e\x73\x86\x30\xc0\xa7\xbc\x97\x28\xcf\x9c\x04\x04\x96\xbe\x04\xfc\xae\x66\x92\x50\x3c\x96\x6a\x3d\x68\x4e\x46\x0c\x62\x59\x5d\x8b\x0b\xcf\x55\x42\x57\xbf\x0f\x39\x69\x3a\x7c\x53\x03\x1e\xb0\x9d\x17\xb1\x06\x13\xb9\x82\x12\x3a\xc6\xe9\xaa\x39\x61\x60\x80\xe8\xde\x32\x68\x34\xdd\x37\xad\x14\x93\x6b\x05\x4d\x6f\x31\xf5\x4b\x98\x33\x6a\x21\xff\xad\x91\x3c\x08\x97\x73\x9e\xa4\xe2\x7b\x2a\x91\xc4\x8a\xca\x29\x6d\x34\xcc\x84\x90\x0d\xdb\xac\x3a\x5e\x0f\x27\xa2\x01\x23\xa2\xb2\x16\x3e\xee\xff\x08\x7d\x00\x3b\x53\x20\x7b\x73\x8f\xb8\xd0\xc6\x12\xd4\x9c\xb4\x42\x0f\xee\x22\x60\xc6\xcd\x20\x78\x7f\xa9\xf9\xd0\xe7\x78\x1c\xa1\x41\x61\xdf\x37\x98\x13\xc6\x72\xbf\x62\x46\x24\x91\x64\x13\xe2\xeb\x64\x0a\x03\x1f\x38\x10\x10\x02\x59\x45\xea\xdf\x0b\x80\x5a\x3f\xcc\x27\x48\xa3\xc4\x0f\x84\x2d\xb3\x77\x74\x1f\xe1\xb0\x94\x84\xde\x34\xc4\x81\xb7\x74\x71\x63\xec\xda\x64\x80\xdd\x8f\x5d\x01\xf3\x41\xa7\xc7\x7a\xc9\xb5\xa0\x1f\x3d\xd8\xe4\x0d\x63\xef\xb4\x40\x21\x4f\x73\x2e\xc3\x73\xe6\xf6\xcf\xe8\x8a\x22\x27\x2e\x49\x03\x92\x5f\xfc\x02\x9b\xa8\x17\xc6\x43\x1c\x11\x18\xb5\x3f\xa4\xc6\x96\xeb\xf7\x1b\x39\x16\x0a\xcb\x00\x7e\x22\xd7\x54\xfd\x34\xff\xf8\x67\x79\x05\x27\x76\x17\xb9\xf0\xcd\x45\x93\xb6\x8f\x43\xdf\xd0\x02\xef\x23\xac\x8a\x8a\x4b\x38\xf6\xe0\x0b\x19\x8f\x51\x41\x5e\xeb\x97\x57\x7a\xfd\x69\x55\xca\x32\x75\x9a\xdb\x2a\xca\xfe\x14\xb8\xe9\xd1\x24\xa7\xa6\xc2\x61\x49\xe4\xb2\xf9\x92\xa0\xfd\xda\xeb\x9f\x4a\x7f\x9f\x34\xd3\xd8\x35\x8f\xb7\x21\xac\xf5\x61\xe5\xea\x74\xdd\x21\x8a\x57\x36\x55\x64\x5c\xb2\x12\x19\x6f\x8f\xbf\x8c\xc7\xdd\x6b\x18\x82\xc3\x7d\x92\x4f\x6f\x01\xbc\xbc\x0d\x13\xc2\xa1\x79\xcd\x89\x4f\xf2\xd2\xfb\xac\xbb\xf1\x29\x07\x6d\x9b\x62\xfd\xb7\xc5\xf5\x8f\xd1\xff\xbd\xbd\xba\x3c\x4c\xb1\x90\x73\x0c\x39\xb7\xae\xad\x03\x57\x62\xc3\x28\xa0\xce\xaf\x44\x19\x1a\xb1\x43\x34\xe3\x07\xc6\x8d\x79\x82\xe6\x4a\x65\xf2\xe4\xf8\x78\x46\xd5\x3c\x9f\x1c\x45\x3c\x3d\x2e\xd6\xe6\x18\x67\xf4\x78\x92\xf0\xc9\xb1\x20\x10\xc8\x7a\xf8\xed\xd1\x77\xdf\xc2\xd6\x1c\x3f\x7e\x7b\x0c\xce\xab\xa3\x19\xff\xdd\xc5\x77\xff\xf9\xc7\x3f\xe9\x86\xb3\x85\x9a\x73\x76\x62\x7d\xa4\x4b\xdb\x3e\x34\x82\xef\xb1\xf9\xa4\xd2\xcb\x7f\x1e\x7d\x13\x0e\xc3\xbe\x9a\xf2\x98\x24\xf2\xf8\xf1\xdb\xb1\xdb\x99\xa3\x6c\x1d\xaf\x6f\xc1\xf0\xfd\x92\x57\x0a\x78\xea\xdf\x3d\xc9\x38\x5b\xdf\xaa\x6d\x69\x38\x2b\x61\x98\xf2\x16\x27\xe6\x81\xd4\x1c\xe1\x6b\x68\x60\x5e\x92\x6a\xd1\xe9\xd7\xc5\xe0\x6e\x95\x6d\xd6\xca\xca\x04\xb7\x33\x8d\x00\xdf\xd5\xd8\x20\x32\x4c\x9b\xc2\xdb\x6c\x78\xc5\x36\xeb\xf7\x9c\x48\xc5\xbb\x86\x28\xb6\xd3\xdd\x10\x9e\x38\x31\x5f\xbb\x60\x10\xfe\xe4\x60\x89\x77\x01\xe6\xdb\xb1\x10\x91\xc7\x28\x35\xc4\x03\x63\x71\xe3\x6a\x19\xc6\x1c\xcb\xcd\xa2\x8a\x06\x06\x09\xcc\x3b\x06\x7c\x09\x3f\xdb\xa1\xe3\x95\x2e\x6d\x1b\xaa\xdc\x59\x74\x98\xcc\x94\x88\x96\x47\xe8\x43\xa5\x52\x4b\x11\x29\x75\xf3\xe1\x14\x7d\xfb\xe7\xff\xfc\xe3\x88\x7d\xd5\xc0\xc5\x20\x74\x83\x8b\x99\x0d\xdc\x02\xde\x95\x62\xa9\x88\x38\x16\xd3\xe8\xd8\x44\x82\x1c\xeb\xef\x0f\x6d\xa7\x87\x7c\x7a\xe8\x91\x4a\x0f\x2d\x68\xe3\x51\x1a\xaf\x97\xd1\x5c\x22\x3d\x13\x37\x65\x23\xae\x25\x44\x67\x1b\xec\x13\x3e\xf5\x98\xd4\x26\xb0\xde\xc0\xd7\xf3\x69\xc3\x1f\x50\x58\xf3\x6b\x8f\xb8\x84\xa5\xeb\xa3\x80\x40\x69\x3f\x9a\xbb\x01\x2d\x76\x24\xf2\x9c\x7a\x9b\xe3\x25\xa1\x74\xb6\xce\xc2\x37\x1f\xb6\x22\xee\xdd\x24\x80\xdb\xca\x8c\x06\xf4\x95\x33\xc2\xa7\x10\x36\x04\x82\x81\x73\x8b\x82\x71\x88\x71\x15\x24\x7b\x0b\x92\x99\x0b\x26\xac\xe4\xd8\xb0\xdc\x5b\x02\x1f\xaf\x5a\xe7\xe7\x00\x3e\xde\x76\xdd\x2d\x43\x79\xa5\x05\xdf\x36\x76\xc9\x1c\xa5\x75\xdc\xb8\xfa\xfd\x95\x2e\x1b\xcf\x07\xc0\x47\x13\x16\xae\x34\xe0\x46\x90\xad\x40\x0e\x15\x3f\x04\x94\x0c\xc0\x5e\x30\x50\xe4\x6d\x7e\x5c\x70\x75\xad\x73\x4d\xea\xf7\x3b\x8c\xd3\xf8\x3f\x3f\x07\x03\xb5\x32\x89\x2d\x55\x6c\x63\x40\x28\x63\x44\x58\x23\xfe\xca\x1b\x75\x4d\x47\x58\xb8\x95\xcb\x43\x40\x0a\xc1\x3c\x84\x89\xf6\x01\xc0\x38\x60\x02\x47\x08\xd2\x30\xe6\x3c\xe5\x5a\x9c\xe1\xb9\x0c\x1e\x9a\x34\x1e\xb8\x84\x5b\x65\xaf\x14\x67\x06\x15\xeb\xf5\x66\xa3\x8f\x96\x7e\x64\x6c\x1c\xe1\x4b\x6b\x21\xef\x4f\xca\x58\xe3\x2b\xc6\xef\x41\xa2\x97\xd3\x0d\xb8\x59\x53\xb0\x29\x43\xa9\x2b\x0b\xfd\x4a\xff\xa1\x55\x18\x4d\x52\x3e\x65\xc6\xdf\xdc\x26\x2a\xc0\x80\xbf\x85\xf0\x90\x95\x92\xfc\xd5\xe1\x13\x96\xa7\x6b\xee\x81\x8f\x6a\xec\xb2\x01\x98\x99\x38\x3f\x17\xe0\x77\xd8\x18\xe1\xd7\x76\x2e\x5d\x19\xac\x78\xec\x00\x0a\xd7\x1b\xea\xad\x6f\xc0\x62\x11\xd6\xc7\x5d\xe0\xbb\x40\x38\xa8\x59\x63\xc3\x10\x9c\x6c\xd1\xe2\xe5\x67\xeb\x1f\x46\xa8\xbb\xb0\xce\xda\x41\x27\x86\x38\x6b\x2b\x18\x9c\x85\xb6\x05\x5c\xcf\xe2\xb0\x4c\x81\x6f\x8a\x1f\x36\x90\x58\x45\xba\x80\x1e\x65\x4d\x79\xf4\x1f\x3e\x16\x55\xf4\x16\x19\x39\x40\x93\x1c\x9e\x5f\x5e\xdd\x85\xee\x61\x6a\x66\x7b\x18\xcd\x49\xf4\x00\x99\x83\xe6\xca\x33\x87\xc1\x55\x50\x9c\x2c\x46\xac\xa8\x08\xa4\xb8\xf3\x75\x2e\x3c\x48\xb2\x07\x0a\xe7\x02\xc5\x54\x66\x09\x5e\x80\x57\x89\x99\xc0\xe0\xc2\x23\xf5\xff\xb1\xf7\x65\xcd\x6d\x2c\xc9\xb9\xef\xfe\x15\x15\x71\x1f\x24\xdd\x00\xc9\x59\xc2\x11\x0e\x45\xf8\x01\x87\xa4\xe6\x60\x86\x22\x39\x5c\xa4\xe3\x6b\x38\xa0\x42\x77\x01\x28\xb3\x51\x05\xf5\x42\x0a\xf6\xcc\x7f\xbf\x51\x99\x59\x4b\xaf\xe8\x06\x40\x1d\x79\x7c\x1e\xec\x39\x22\x80\xea\xea\x5a\xb2\xb2\x32\xbf\xfc\x3e\x87\xa8\x37\xa6\x60\x57\xf8\xac\xff\x4c\x9b\x59\xf1\xfa\xe4\x83\xc7\x92\xa7\x73\x99\xa7\x9c\x44\xde\x71\x30\xeb\xf6\x80\x65\x62\xcd\x55\x2e\xa3\xa9\x5a\x0b\xae\x42\x18\x10\x65\xd5\xcc\x20\xc7\x5a\x10\x41\xe9\x62\x21\xa2\xdc\x33\x9c\x81\xf3\xee\x46\x6a\xd7\x1e\x1c\xf6\xee\x6e\xe7\x75\xbe\xfa\xcf\x52\x61\x3d\xad\x5c\x03\xc8\x8c\xd6\x10\x1d\x8d\x7b\xc6\xb2\x41\x41\x8a\x8e\x5c\x7b\x19\x84\x7f\xd9\x35\xe5\x84\xad\x5d\xc5\x51\x93\x8f\x7f\x30\x8b\xf8\x61\x5a\x6b\xcd\x2a\x75\x01\xf4\x04\x37\x58\x88\x5e\x71\x4c\x23\xaa\x42\x19\xf2\x86\x6a\xa0\x20\xda\xf3\x86\xf0\xef\x6f\xe0\x98\x36\xb7\xc7\xf4\x59\xc4\x53\x55\xe6\x71\x21\x9f\xd1\x6f\x38\xe6\xf5\x71\x8e\x63\x6d\xec\x18\xf7\x0a\x6d\x5e\x42\xed\xba\x67\xad\x73\x55\x3e\x1d\x7a\x3d\xcd\x92\xc9\xaf\x20\x05\xd3\x3b\xe6\xed\x25\x74\x48\xff\x82\xe4\xb2\x4a\xe9\x65\xb7\x28\x1d\x4b\x05\x52\x58\x39\xc4\x1d\x55\x43\xd4\x4a\x7e\x9b\xda\x98\x2a\x5b\xbe\xb9\x28\x12\xa4\x25\x6c\x53\x10\x22\xd2\x1a\x0b\x35\xff\xf5\x4a\x0e\x5c\x5c\x8d\x05\x92\x43\x2e\x0b\x1c\xa0\x1f\x9d\x86\x3d\x2c\x5d\xa1\x32\x94\xff\xb3\x6a\x23\x50\x81\xbd\x14\x39\x9c\xe6\x71\x91\x60\x35\x22\xe4\xf7\x81\x00\x87\x27\x09\x93\x79\x36\x55\x8e\xaf\x07\xd9\x97\xc1\xc2\x5a\xe4\x62\x4c\x57\x2e\x78\x04\x34\x4b\xda\xa3\xe0\x87\xc9\x48\xe6\x35\xcc\xe8\x36\x64\xe8\xdf\x6c\x04\xc7\xe2\x19\x9c\xb6\xa9\x0a\xef\x5c\xd5\x49\xa0\x4a\x13\x50\x84\x3c\x46\xd1\x47\x07\x04\x18\x64\x34\x07\x4f\xc9\x29\x1b\xe3\xdb\x99\x0b\x97\x15\xdf\xc3\xde\x52\xc1\x2e\x41\xbb\xcc\xad\x26\xcf\x9c\xb2\xbb\xbb\xb7\x6e\x78\x9a\xcb\xa8\x48\x78\x9a\x00\x09\xf6\xa2\x48\x98\x5c\x04\x3a\x82\x30\x07\xc8\xd6\x62\xa6\x2b\xd2\x70\x56\xdb\x94\x50\xc6\xd7\x22\x28\x14\xa5\xf0\x4e\x12\xa4\x94\x91\x82\x16\x73\x95\xa6\xad\x77\xa7\xec\xa2\xaa\xe7\x09\x7b\x22\x60\x79\x93\x19\x9a\x3f\xd7\xdf\xa0\xc6\x09\x75\x41\xe5\xc2\x5c\x29\xdf\x04\xbb\xae\x4d\x6b\x9a\x67\x4f\x03\xf3\xd5\x96\x2b\xbc\x1b\xa6\xd8\x58\xe3\xf8\x00\x7a\xc4\xa5\x2c\xb6\xdb\x10\x2d\x1d\xb4\xa7\xc2\xc0\x4e\x86\x0c\x79\x7b\x74\xf4\x73\x20\xf8\x5b\xed\xec\xba\x43\xb6\x10\xe6\x71\x60\x57\x03\x11\x90\xe1\x1d\x0d\x56\x4e\x88\x4e\xe8\x33\xb2\x4b\x9e\x0f\x85\x2a\x38\xf4\xff\xf0\x8e\x36\xc2\x42\x5a\xbb\xb9\x3b\xd2\xf4\xb9\xa4\x1a\xc2\x4c\xaf\xcc\x2d\x5f\x20\xec\x46\x2f\x02\x13\x4c\xe7\x0d\xc9\x8b\x00\x17\xb4\xb3\x09\x73\xc1\x12\xa9\x9e\x6c\xe5\xb7\x59\xa0\x23\xc6\x7d\xeb\x60\x23\x70\x90\x71\xcf\xb5\x78\x5e\x4d\xcc\xe9\x07\x38\x63\xfd\xea\xa7\x9a\x6f\xc8\xb6\x27\x83\xc8\xf1\xed\x0b\x37\xbd\x47\xff\x69\xe9\x04\x7a\xba\x3b\x8f\x45\x77\xe2\x31\x18\x40\xce\x72\xe9\x24\xe1\x5b\xc7\xf7\x76\x55\x86\x30\x0d\x50\x03\x79\xbc\xbe\xb8\xfc\x30\xb9\x2e\x4b\x78\xfc\xf5\xf1\xf2\xb1\xfc\x97\xbb\xc7\xeb\xeb\xc9\xf5\x9f\xc2\x3f\xdd\x3f\x9e\x9f\x5f\x5e\x5e\x94\xbf\xf7\x61\x3c\xb9\xaa\x7c\xcf\xfc\xa9\xfc\xa5\xf1\x4f\x37\x77\x15\xd1\x90\xfb\xbf\x4c\x6e\x6f\xcb\x7f\x7a\x98\x7c\xbc\xbc\x98\xdd\x3c\x96\x74\x47\x2e\xfe\xed\x7a\xfc\x71\x72\x3e\x6b\xe8\xcf\xdd\xe5\xf9\xcd\xa7\xcb\xbb\xcb\x0b\x3b\x37\x8d\x7a\x22\xfe\x7d\x1b\x87\xf4\x18\xd8\x93\xbd\x45\x64\xc6\x6c\x91\x4a\xa1\xe2\x64\x8b\xd0\x58\x7b\x0f\xac\x20\xf1\xc2\x93\x4a\xae\x85\x2e\x0e\x41\xb8\x3e\xac\x04\xd3\xcf\x22\x85\x22\x75\x6c\x8d\x2a\xda\x78\xf6\xd4\x4a\x61\x96\xa7\xf5\x18\x7a\x27\x90\x3f\x4f\xb7\xae\x54\xa4\xab\x3b\x9e\xe0\x84\x1e\xc2\x36\x22\xed\xea\x0b\xf8\x11\x69\xb1\xc9\xe5\xbc\x1d\xb3\xdc\x93\xf8\x63\xf8\x4d\x15\xe9\xb8\x9a\xb9\x0b\xae\x9b\x0d\x63\x09\xba\x7b\x08\x6a\x11\x5a\xd8\x57\x1b\xc9\xfd\xda\x22\xbd\x36\xc5\x3c\x91\x11\x93\x71\x35\xfa\x80\x15\x26\x18\x60\xad\xb2\xf6\x6d\x44\x0a\x8e\x9d\xf1\x97\x37\xa9\x38\xe1\x45\xbe\xb2\xb2\xcd\xae\xd0\x08\x59\xf4\x44\x94\x8a\x3c\x90\x18\x27\xb5\x9c\xe0\x49\xd0\x19\x2a\xb0\x8c\x81\xcb\xe1\x34\x60\x50\x6e\x89\xa8\xe3\x2f\xb1\xf5\x01\x21\x45\xfc\x7e\xe7\xd0\x50\x8f\x65\x56\x55\x44\x05\x17\x16\x3f\xb4\x9a\x3b\xe6\xbd\x8d\xa5\x8e\x2c\x1e\x1a\x27\xd9\x42\xab\x9b\x5f\x63\xd7\x1a\x0b\x17\x4a\x19\x09\x4d\xad\xd3\x47\xe7\xa9\x80\x43\x84\x12\xe7\xf6\xb6\x0f\x40\x0f\x82\x62\x03\x02\xdb\x5c\x6c\xe6\x62\xc5\x93\x05\xc6\xf0\xcc\xd4\xf8\x7d\x55\x5f\xa2\x0f\xfa\x49\xa8\x3b\x9c\xb0\x5f\xc5\x1c\x2a\xbc\x27\xf8\x92\x5b\x17\x3f\xf1\x01\x3f\xd3\x47\xbb\xaa\x6c\x29\x0a\x2a\x8b\xa3\x57\x1d\x7c\x8c\x78\x70\x4f\xa8\x69\xab\x58\x16\x0b\xf9\xcd\x34\x38\x55\xa2\x91\x52\x10\xd0\x35\x96\xfc\xc4\xd9\x65\xa0\xd4\x42\x06\x89\x27\xa1\x40\xee\x07\x35\x3b\x77\xae\xd9\x61\xd1\xe6\xfa\x5c\x74\x84\xbf\x21\x42\x26\x4b\x2a\x48\x61\x4e\xc4\x8e\x13\xd4\x9c\x3d\x89\x53\x76\x41\x75\xf1\xe6\x2f\xe7\x57\x93\xcb\xeb\x87\xd9\xf9\xdd\xe5\xc5\xe5\xf5\xc3\x64\x7c\x75\xdf\x77\xfb\x1d\xa3\x6c\xa1\xb2\xfb\xaa\x95\x23\xce\x42\x9c\xd1\xce\xf3\xd5\x73\xee\xa5\xfc\xb6\x83\x29\xd9\xdd\x7b\x19\x6f\x66\xb1\xcc\x22\x73\xfc\x6d\x67\x42\xc5\xc0\xc5\xba\xd7\x52\x6d\x6e\xaa\xfa\x16\xee\x1b\xcc\x7d\xc3\x5a\x10\x3c\xed\x9e\xed\x8a\x76\x9f\x03\x59\x1b\x04\xed\x52\x61\x36\x7f\x3c\x55\xc1\x69\x73\xba\x9b\x80\xdf\x34\x77\xd8\xbb\x95\x9b\xa8\xbe\x13\xf6\x57\x66\x59\xc1\x8d\x7d\xb4\x5f\x03\x3a\x86\x96\x51\x21\x82\xac\x90\x10\x56\x06\x92\x83\xcc\xdc\xe4\xd7\x5c\xc5\x3c\xd7\xe9\xb6\xe5\x15\xfb\x19\xcf\x70\xdb\x94\x4d\x68\x78\x64\x2b\x21\x62\x3b\x0b\xf8\x55\xae\xaa\x4b\x09\x69\x63\x1f\x6e\xfe\x72\x79\x7d\x3f\xbb\xbc\xfe\x34\xbb\xbd\xbb\xfc\x30\xf9\xc5\x71\xdf\x6c\x78\x56\x17\x33\x13\xe6\x50\x34\xd6\xc5\x56\xe1\x37\xda\x17\x54\x14\xb3\xed\x90\x8a\x8c\x5c\x4c\x95\xb5\x2c\xa9\x6f\x7e\x95\xea\x62\xb9\x6a\x6e\xa8\xda\xcb\xdb\xf1\xc3\xcf\x7b\x75\x13\x38\x52\x50\x76\x08\x77\x5b\x9d\x48\x50\x2e\xc8\xee\x21\xfb\x60\xa5\x7b\xc0\xf4\x03\x5f\x6d\x8a\xc9\xb7\x58\xb4\xbd\x6e\x2f\x75\xa3\xd5\xe9\xfc\x37\x7c\xbd\x6d\x01\x3d\x04\x76\xb3\x74\x8c\x00\x84\x15\x15\xed\x6a\xad\xbd\x6f\xf8\x5b\xe9\x04\xfb\xc3\x49\x22\x96\x4b\x11\xe3\xf2\xaa\x36\x4c\x11\x2b\x32\x81\x91\x3f\xd7\x9b\x46\x91\xf4\xa5\x0e\x38\x98\x1d\x3a\xaa\xbf\x01\xbf\x75\x3f\x69\xb6\x15\xe7\x56\x69\x36\xd2\x2a\xcb\xb9\x6a\x49\xbb\x3e\xd7\xf1\x8c\xbd\x4c\xd1\x4d\xca\x5c\xe5\x04\x05\x48\x6c\x80\xdd\xef\x83\x7d\x12\x4e\xa4\xa3\xa5\x28\xe2\x11\xe8\x6b\x05\xd2\xb8\x0d\x93\x00\x91\xc6\x3b\x6b\x11\x5f\x3f\xb8\xd1\x79\x75\x22\x62\x18\x08\x8c\xa2\x90\x09\x71\x96\x62\x34\x08\xd4\x81\x5a\x61\xb4\x83\x26\xa4\xf2\xe4\x4f\x34\xf4\x78\x6b\x2d\x07\x66\xb9\xa5\x5e\x72\x13\xe4\x9c\xb7\xe1\xf1\xad\x92\x1f\xee\x5b\xde\xa4\x3a\x2e\x22\x4b\x4e\x01\xcd\x7a\x3c\x08\x05\xb4\xec\x01\x1b\xb3\x13\x33\xcd\x74\x49\x11\xf1\x09\x50\x7c\x4c\x55\x5b\xf2\xc5\xda\x80\x96\x30\xd7\xad\x3d\xb5\x0e\x99\xfb\x86\xd1\x6f\xdf\x82\x76\xb0\xfb\x15\xa0\x31\xfb\x75\x70\xf6\x5a\xe0\x34\x34\x2f\x73\x8e\x99\xd5\xf2\x71\xdc\x56\x8b\xee\xac\xea\x30\xd4\x4f\x3f\xd0\x44\x99\xdb\x09\x8f\xc8\x15\xcf\xd0\x73\xcd\xa3\x55\xb9\xe3\xf0\x36\x65\xfe\xa6\x6a\x77\x9d\x27\x78\x58\x84\xa0\x57\x7e\x65\x84\x77\x6a\x99\x51\xef\x43\x2d\x1e\x27\x2c\x36\x6c\xe1\x87\xce\x91\xbb\xbc\xa0\xdd\x03\x83\x95\xf0\x42\x45\x2b\xb6\x49\x38\x16\x5d\xae\x78\x86\x4b\xda\x82\x0c\xf8\x5c\x26\x32\x07\xbe\x08\xcc\x7d\x55\x46\xd8\xdc\x68\x78\xfa\x64\x29\x1a\xb9\x27\x07\xe9\x5a\xf4\x07\x82\x39\xbd\xca\xf4\xf7\x84\x73\xfa\x2d\x1b\xfc\xa2\x33\x73\xe6\x97\x25\x41\x39\xfd\x74\x18\x8b\x07\xcb\xd2\xbf\xcb\xb0\x99\xa5\x16\x6f\xab\x3f\x2f\x8d\x77\xc3\x41\x3d\x1c\xca\x40\xdc\xc3\x03\xcc\x7c\x95\x99\xb8\x71\x67\x2d\x12\xcd\x5b\xd4\x31\x6d\xdb\x48\x34\xdc\xd6\x76\xac\x8b\x79\x1b\xb5\x25\xf6\xaa\xbb\xf5\xae\xb8\xbf\xdd\xb7\xc7\x8a\x0b\x86\x06\x90\xe7\x22\x97\xc3\x42\x1b\xc1\x4b\xf3\x5c\x9c\xc0\xcf\x9b\x1b\x27\xda\x9f\xde\xef\x5c\x5b\x68\x9e\xee\xde\x11\x68\x02\xc8\xac\xbe\xba\xfe\x5a\x70\x63\x1a\x6e\x16\xf7\x48\x60\x70\xc8\x22\xcb\x65\x7d\x85\x35\xef\xc4\xea\x53\x1f\xca\x49\x95\x70\x0d\xf4\x2e\x5e\x6b\x7a\x9b\x7b\xf3\xeb\xfe\x1b\xb2\x2c\x21\xbd\x49\xa5\x06\x9a\x01\xd2\x9d\xee\xe0\x00\x6b\x7c\xee\x01\x23\xf9\xb5\x10\x85\x30\x6b\x7f\x5e\xc4\xcb\x7a\x6c\x73\x80\x77\xe6\x5f\x69\xa5\x5f\xd8\xba\x88\x56\xcc\x36\xce\x62\x91\xf0\x6d\xe9\xd5\xc0\x5f\xca\x75\x02\xac\x9a\x7b\x52\xfc\x45\x45\x96\xeb\x35\x80\x30\x7d\xbb\x69\xa1\x60\xc1\x33\x9e\xe7\xa9\x9c\x17\x79\x23\x60\xab\x44\xf9\xb3\x67\x42\xeb\xfe\xf6\xf2\x7c\xf2\x61\x52\xc9\x26\x8d\xef\xff\x12\xfe\xfb\xf3\xcd\xdd\x5f\x3e\x5c\xdd\x7c\x0e\xff\x76\x35\x7e\xbc\x3e\xff\x79\x76\x7b\x35\xbe\x2e\xe5\x9c\xc6\x0f\xe3\xfb\xcb\x87\x1d\x69\xa5\xfa\x53\xdb\x27\x82\x07\x8c\x44\x16\x16\x6a\xa9\x59\xed\xed\x92\x9e\xfa\x9e\x8d\x2d\x3f\x53\x89\x41\xcc\xa6\x06\x21\xf3\x8e\x42\xa5\x94\x41\xbc\xe0\x39\x27\xe1\xe7\x53\x36\x66\x56\xc0\x1b\xc0\xd0\x99\x71\x16\x88\xbc\xc6\xcc\x0e\x36\x61\x3c\x86\xc8\xdf\xdc\xbc\xf6\x94\x5e\x10\x6d\x54\x22\x42\x96\x62\x5b\xf9\x33\x55\x97\xcf\x42\xe5\x05\x50\xa8\xf2\x24\xb1\x42\xeb\xf6\x0b\x41\x91\xa7\xed\x65\x26\xd7\x32\xe1\xa9\x97\x09\xba\xa1\xb6\xc0\x61\xb7\x7d\x75\x9c\x1e\x75\xed\x08\x7b\x79\x78\x9c\x30\xe8\xf7\xf9\xd5\x04\x5c\xa0\x28\xb7\x1c\xf8\xf6\xe1\x53\x85\xb4\x44\xf4\xc4\x35\x07\x80\x7e\xae\x29\x9e\x86\x8f\xa7\x2f\xb7\x2f\xc4\xec\x90\x4d\x6c\x23\xcf\xaf\x05\x02\x72\x9d\xb4\xff\x71\xa9\xf2\x74\xdb\xdb\xaf\x79\x00\x12\xd5\x0c\x7c\x53\xc2\xfb\x94\xa5\x83\x30\xdc\xc1\x6c\xeb\xd7\xe0\xec\x58\x30\x1a\x45\xe3\x5d\xd0\x5d\x00\x51\x6b\x8b\xff\x9d\x98\x43\xe8\x47\x1d\x87\x90\x43\x01\x46\x61\xae\x0b\x15\x67\x84\x4c\x5a\x4b\x75\xb6\xe6\xdf\xde\xd9\x37\xc5\x9a\x64\x47\xe0\x0d\x7c\x33\x22\x31\x37\x91\xad\x31\x72\xdd\xc3\x35\x55\x1d\xe3\xb5\xdb\x5b\xb4\x96\x15\xae\x3d\xfe\x8e\x8a\x18\xab\x67\xb1\x6d\x9a\xbf\x9a\x08\x03\xe2\xb8\x68\xc3\x43\x23\x9b\x54\x98\x2f\x3a\x00\x57\x82\xb8\x3c\xf7\x6f\x00\x6a\x97\x84\xa2\x9a\x6d\x77\x98\xe5\x3d\x68\xdb\x34\xe6\x97\x5f\x41\x45\x83\x9e\x64\xe6\x0c\xb3\xcd\x36\xd0\x49\xc0\x74\x4a\xa3\x99\xc9\xfa\x4f\x3d\x67\x0b\xa8\xd2\x20\x21\xd8\x54\x40\x60\x1b\xa6\xc2\xd2\xbe\x02\x2b\x49\x2d\x85\x6d\x97\x40\x22\x32\x08\xf7\x2a\x73\xdd\x12\x5f\x0b\xca\xd8\xfd\xfe\x77\xc3\xce\xd9\x3c\xdd\x32\x4b\x31\x1e\x56\x89\x50\x91\x14\x9d\xb9\xd0\xaf\x42\xc9\x26\xaa\xa2\xbb\x42\x99\xa3\xf8\x18\x60\x87\xfe\xd9\xac\xca\x43\xe9\x9f\x3b\x0b\x29\x6c\x20\x36\xc5\xef\xbf\x1a\xb7\xdb\xa7\x0a\xa5\x1b\x3d\x0e\x60\xbb\xd4\x7a\x78\xa0\xcd\x79\xf4\xf4\xc2\xd3\x18\x63\x85\x80\x3e\x38\x65\x3f\xeb\x17\xf1\x2c\xd2\x11\x8b\x44\x9a\x73\x62\x7b\xc9\x20\xfd\x0a\x1b\x8a\xda\x99\x2a\x40\xb1\x23\x75\x8e\x02\x0d\xdd\x5c\x2e\x57\xe6\x3e\x19\x24\xcf\x75\x6a\xcc\x51\x8e\x54\x5a\x1b\x11\x11\xbf\x46\xcb\x00\x2c\x12\xfe\x5c\xa7\xaf\xd9\xa7\x12\x9e\x4d\x5c\x29\x9e\xcd\x4e\x59\x2a\xed\x2e\xb8\x03\x0d\x18\x19\x4d\x24\x44\x18\xb1\xa5\x4e\xb8\x5a\x9e\x9e\x9e\x32\x91\x47\xa7\xef\x06\x2d\x74\x6a\x30\xcc\x77\x39\x08\x6a\xa2\x75\x26\x92\xad\xe3\x84\x70\x45\x02\x66\x98\xa1\x46\x24\x93\x18\xf2\x68\x58\xfe\xf7\xd5\x8a\xfa\xef\x1b\x3a\x6f\xbe\xa9\x0e\x2e\x41\x6b\x69\x07\x94\x39\x06\xb4\x84\xdf\x6f\xbe\x79\x0d\x28\xa9\xb4\x32\x5a\xbe\xb4\xb2\x85\xfe\x51\xab\xa1\xf5\x82\x9f\x74\x9b\xde\xec\x5e\x94\x4d\x8d\x2d\x11\xa1\xc3\x5e\x35\x56\x6d\x91\x8b\x4a\xd9\xdb\x01\x15\x6f\x1d\xc5\x6b\x03\xeb\xd6\x1a\xf6\x5f\xc3\xf6\x70\x95\xb1\x87\xe0\x93\x74\x52\xac\xdb\xb9\x8a\x0e\x75\xf9\x7c\x27\xf1\xbf\xce\xe1\x71\xbd\x5d\x3e\xaf\x01\x6c\x55\x06\xa8\xbf\x18\xb8\xa5\xda\x41\x63\xdb\x53\x99\x01\xab\xd6\x3e\x85\x4c\xae\x19\x6c\x1a\xf2\x4b\xdb\x0d\x06\x0c\xb1\xc4\x29\xd9\x62\xa9\x9c\xcd\x47\xd0\x4f\x32\xf4\xcb\x20\x29\xd5\x6e\xc6\xaa\xa8\xa7\xc1\x73\x04\x1c\xf6\x7b\x65\xe2\xc0\xd1\x09\xd8\x64\x09\x96\x01\x0d\x52\xee\x38\xd7\x6c\x61\x4b\x63\x9e\x44\xa0\xba\x17\x03\xcf\xec\x0b\x32\x57\xfc\xe5\x5f\x32\x9b\x65\x26\x20\x80\x3f\x63\x73\xff\x10\x8c\x66\x3f\xff\xde\xe2\x3f\xf0\x0d\xb1\x09\x10\xb2\x89\xb9\xca\x1b\x1b\xf0\xf0\x28\x68\x0b\x7f\xf2\xc9\xdc\xdb\x1b\xbf\x4e\xed\xc3\x57\x51\xb3\x62\xfc\xf9\x9e\xe1\x50\x13\x23\x69\xda\xd5\xd1\xa0\x91\xdd\x08\x14\x18\xae\xd9\x1e\xbe\x4b\x69\x1e\x70\xd0\x2d\x25\xad\x19\x76\x91\x47\x2b\x7f\x56\x96\xc5\x27\x49\x90\x88\xde\x73\xed\x39\x56\x11\xdc\x17\xa2\xa4\xe4\x52\xe9\x90\x1e\x5c\x2b\x01\x69\x05\x9e\xb3\x58\x87\xcd\x32\x99\xef\x86\xa2\x0c\xe4\x01\xda\xb5\xd4\x72\x8d\x10\x03\x7a\xcf\x52\x76\x08\x9c\x60\x89\xec\x21\x16\xc7\x87\x5e\x3c\xe9\xdb\x54\x99\x41\xcb\xf5\xd8\x53\x55\x7e\x54\x6d\x90\x2c\x56\x44\xa6\x02\x09\xfd\x32\xe3\x6f\xe4\xf2\xd9\x6c\xd4\xfa\xb2\x76\x0b\x14\x2c\x40\x7d\xed\x4d\x15\x76\x3b\x60\x05\x7c\x12\xdb\x2c\x14\xd3\xa1\x15\xc5\xda\x16\xa4\x34\xef\x43\xf3\xb5\x7b\x2a\x60\xe0\x66\x81\x38\x70\xbf\x53\x04\x1f\xfa\xd1\xfc\xb8\x03\x84\x56\x6b\xdc\xac\x41\x5f\x7b\xe4\xa3\x60\x64\x26\xfc\x38\xd3\x1c\x7a\x9c\x49\x83\x70\xb4\x0f\x28\xc2\x55\xcd\xdc\xc8\xa6\x8a\x88\x43\x83\xfc\xad\x31\x38\xf5\x69\xa3\x82\x48\xa4\x2b\xdc\x96\xc8\x1c\x80\xd4\xd5\x2a\x9c\x36\xeb\x75\x5b\x2d\x36\x73\x87\x07\xc5\x6b\x90\xac\xa6\xa8\x53\xe3\x03\xf7\x04\x2f\xd1\xe4\xb6\x02\x96\xbc\xd3\x4d\x03\x47\x7c\x5e\xa8\xca\x84\xfe\x7a\x24\xcc\xf0\x8d\x55\x23\x56\xc8\x22\x85\xee\x2f\xcf\xef\x2e\x1f\xbe\x1b\xa0\xc9\xa2\x89\x06\x23\x9a\x6c\x3f\x2f\x2e\x3f\x8c\x1f\xaf\x1e\x66\x17\x93\xbb\xd7\x80\x34\xd1\x47\x7b\x60\x9a\xee\x89\x8f\xf8\x5c\xab\x5c\x7c\x3b\xe8\x4c\x4e\x0b\x35\xe3\x03\xb0\xf5\x8e\xf3\xbb\xcb\xdd\xc1\x46\xeb\x7c\xca\x8e\xec\x98\xd8\xe4\xf0\x44\x73\xf4\xc9\x81\x00\xfb\x42\x26\x09\x14\xe6\xb9\x80\x30\x95\xb1\x98\x41\x05\xfb\x63\x95\x64\xc9\xa6\x4e\xd5\xbc\x44\x28\x0d\x41\xaa\x95\xb9\xb6\x61\x49\xde\xc6\x0c\x40\x2a\xa1\xe0\xa9\x8b\x72\x79\x29\x95\xf0\xdd\x40\x05\xc5\x42\xb1\x56\x9e\x4c\x9a\xc4\xd7\xac\xbb\x24\xc7\xab\xaf\xaf\x69\x57\x5c\x69\x7d\x5a\xf7\xd3\x7e\xe8\xde\x10\x37\xb1\x54\xe8\x98\x96\x76\xf3\x7d\xf3\xd2\x3d\xf3\x5b\x00\xc6\xdd\xcc\x24\x87\xa8\x39\x88\x14\xfa\x89\xa4\x89\x40\xb1\x03\x1f\x4e\x7f\x92\x88\xfb\xd0\x8b\xca\x38\x1b\x53\x68\xc6\x5a\x42\x6c\x9d\x13\xd7\x40\x94\x14\x59\x2e\x52\xba\xe8\x8f\x3f\xdf\x4f\x15\x2a\x59\xd3\x29\x44\x84\xf8\xf8\x08\x44\x1d\xe8\xd2\xf3\xad\x87\x12\x5a\xb0\xb7\x18\x55\x5d\x0b\xae\x32\x14\x90\x4d\x12\x91\xfa\x95\x81\xfd\x11\x22\x26\x11\x21\x50\x19\xf6\xbf\x27\x0d\x51\x0d\xbb\xd6\xf4\x97\x3e\x25\x15\xcd\xea\x7a\x6a\xab\xfb\x04\x48\xe3\x6b\xae\x9c\x06\x64\x7d\xdf\x55\x44\x68\xd0\xc6\x45\x54\xc6\xb9\xf7\x5a\x4b\x0f\xd8\xdc\x6f\x4b\xe9\x88\x4b\xa9\xc7\xb9\x1e\x9e\x12\x6c\xa5\x8d\x01\x75\x5c\xf6\x3e\x31\xea\xea\xce\x13\x40\xec\x98\x61\x6c\x3c\x75\x2a\x8a\x49\x07\xb1\x7c\x99\xa6\x0e\x03\x20\x8e\x1b\x08\x2e\xbc\x34\x87\xcd\x46\x74\x8a\x31\xbd\x0e\x91\xd4\xd8\x22\xc4\x94\xce\x6d\x49\xb8\x03\x65\x11\xc2\xcc\x7c\xc1\x71\x11\x74\xf6\x91\xea\xfb\xad\x97\x32\x3b\x50\xd0\xe4\x21\x44\xb2\x95\xca\xfe\xb0\x17\xa1\x26\x22\x61\x5e\x7d\x49\xfe\x90\xc5\xb7\xbf\x64\x56\x79\xcd\x39\x7a\xb7\xbd\xd2\xf3\xd7\x37\xd7\x97\x61\x72\x7d\x72\xfd\x70\xf9\xa7\xcb\xbb\x52\xc1\xe8\xd5\xcd\xb8\x54\xf4\x79\xff\x70\x57\xa9\xf5\xfc\xe9\xe6\xe6\xea\xb2\x96\xa5\xbf\x7c\x98\x7c\x2c\x35\x7e\xf1\x78\x37\x7e\x98\xdc\x94\xbe\xf7\xd3\xe4\x7a\x7c\xf7\x6f\xe1\x5f\x2e\xef\xee\x6e\xee\x2a\xcf\x7b\x3c\xef\xce\xf7\x97\x5e\xa3\x39\xfc\xe3\xd3\x89\x01\xd3\x5d\xe3\x36\x2e\x4b\x8a\x1d\xb0\x8b\x7b\xc2\x86\x76\x2d\x47\x5b\x0f\x6a\x9b\x0b\x36\x86\xe9\xea\xa0\x55\x77\x7c\x0d\xb4\xd2\xd0\x7d\x3d\x8c\x5a\x37\xe7\x79\xe3\xfd\xb7\x77\x60\x82\x34\x87\xbf\x16\x22\xdd\x12\x33\x09\x5e\x1a\xf1\x2f\x11\x57\x88\xb7\xcc\xc5\x7a\x03\xf5\x3b\x21\x50\x70\xaa\x3e\x43\x8e\x05\xb1\x08\x6f\x32\xf6\x27\xc8\x96\xd8\x2f\x7b\x6d\x6e\x18\x94\xbf\xe2\x33\xdc\x67\xa7\x53\x55\xd2\x34\x0e\x7e\x15\xeb\xa8\x70\xd1\x8c\xd3\xa9\xb2\xec\xaf\xb1\x8e\xb2\x53\x38\x7a\x4f\x75\xba\x3c\x23\xa1\x26\x63\x4c\xf5\xd3\x5c\xeb\xa7\x33\xa1\xce\xe0\x72\x90\x9f\xf1\x22\xd7\x67\x90\x69\xc5\xc1\xcf\xce\xac\x9e\x8b\x15\xc4\xc9\xce\x56\xf2\x59\xc0\xff\x3b\x5d\xe5\xeb\xe4\xff\x64\x9b\xd5\xb7\x93\x65\x92\x9e\x98\xdf\x9e\x84\xbf\x3d\xb1\xbf\x3d\xb1\xbf\x3d\x31\x3f\xc3\xff\xb7\xd9\x62\x9c\x4d\x90\xa0\xfc\x54\x49\x95\x89\x34\x87\x65\xf8\x92\xca\x5c\x78\xb1\x70\xf6\xe6\xbf\xff\x9b\x9d\xa6\xfc\x05\x91\xf7\x17\x3c\xe7\xb7\x78\xd1\xfb\xfb\xdf\xdf\xb0\x2c\xd7\xa4\x4e\xb5\xe1\xe9\xd7\x42\xe4\xe6\xca\x99\x88\x28\x67\xff\x77\xaa\x40\xc9\x71\xbd\x9d\xe5\x78\x01\xc6\xcb\x60\x9c\xb1\x7f\xc5\x36\x27\xc8\xd2\x13\x67\xa6\xa5\x16\x50\x9e\xe4\x49\x83\x04\x58\x4b\xac\xe4\x6b\x72\x41\xdf\x1f\xb0\x5b\xbe\x26\xe5\x2d\x62\x79\xa6\xb3\xaf\x09\x50\x41\x25\x9a\xdb\x3c\x2f\x73\x8b\x17\x1c\x16\xea\x5c\xd3\x1e\xa9\x65\x13\x0e\xd8\x31\xfb\xca\x81\xde\x23\x53\xa0\x0d\xa1\xd4\x04\xae\x20\x68\xe3\x03\x42\x40\x10\x25\xcd\x0e\xb9\xc7\x2b\x29\xca\xad\xc3\x9b\x83\x71\xc8\x75\xca\x97\x5e\x1e\x9f\x3c\xc8\xec\x8f\xef\xcf\xce\x46\x6c\x99\xc1\xff\xcc\xbf\xc2\xff\x40\xe2\xf1\x58\x64\x57\xb5\xc1\x74\x39\xf4\xfa\x2c\xef\x9e\x89\x63\x24\xe0\xbf\x07\xbf\x62\x65\x99\xfe\x54\xa8\x38\x11\xbe\x90\xa0\x14\x9b\x4a\xb4\x95\x20\xc4\x1b\x4a\x95\xc9\x1a\xe6\x78\x2e\x22\x6e\x0c\x5f\xed\xd9\x88\x4b\xd1\x8b\x5c\x28\xbc\x96\xa4\x9e\xf7\x9f\xe3\x15\x02\x92\xc2\x80\xa2\x00\x29\xf9\xf5\x06\x74\xe5\x25\xc4\xeb\x1f\x90\xb0\x70\x54\xfd\x08\x94\xa1\x91\x7b\x0f\x18\xa5\x50\xc0\x5a\xd8\xc0\x19\x16\x60\x16\xa9\xb9\x99\x6c\xb8\x8a\x79\x06\x2b\x70\x91\x42\xd8\x39\x65\xbc\xde\xd1\x11\x22\x79\x74\x91\x43\xf5\x3b\xa6\x78\xc2\x91\x40\x72\xc4\xa0\xcf\xa3\xa0\x13\x78\x26\xa0\x16\x7e\xf5\x87\xa7\x53\xe5\x54\xd5\x31\x8d\x8e\x57\x96\x48\x6f\xb6\x54\xdb\x5c\x1d\x74\x69\xaf\x30\x34\xdc\x23\xaf\x5b\x5b\xfd\xee\x88\xc9\x72\x8c\x13\x78\x18\x43\x6d\x2d\xab\xff\xf5\x16\x74\xee\x45\x9a\xbd\x33\xdb\x10\xd8\x89\x73\xcf\x72\x28\x33\x3f\x19\x4e\x84\x9d\xae\x6d\xa6\x79\x47\x58\x6e\x46\xa7\xc4\xdc\xd7\xe4\x3e\xec\xde\x2a\x3f\x7a\x3a\xb2\xa9\xbf\xf4\x9f\xdf\x35\x35\x19\x42\x42\x2c\x24\x6a\x7f\x5f\x10\xb7\x6c\x68\x71\xb1\x51\xd2\x6c\x47\xe7\xc4\x0a\x19\x49\x73\x64\xe5\xe6\xc2\x9e\x4f\x15\x9d\xc0\x23\xb6\x10\x3c\x5f\x01\x26\x26\x7b\x46\x63\x8c\xc7\x7d\xfe\xa2\x7d\x32\xd4\xd2\x3e\x03\x8e\xa6\xd4\xb8\xbf\xad\xe3\xd7\x20\xb5\xc3\xa3\x1c\x33\x3d\x6d\x84\xb8\xce\x55\x81\xc1\x6a\x34\x88\x7b\x8c\x83\x65\x11\xae\x32\xf6\x87\x24\xd6\x30\x12\x5b\x8c\xd8\xb3\x6a\x3f\xf0\x03\x63\x78\xf0\xed\x30\x1f\x17\x18\x47\x28\x44\x24\x18\x0e\xee\x33\x1f\x4c\x0f\xa9\x1c\xc1\x49\x6e\xdb\x54\x1d\x03\x01\x1d\xd8\xaf\x62\xc1\xfc\x74\xe7\xcd\x21\x13\xa9\xa5\x38\xc6\x77\x45\x2a\x99\x95\x4c\xe3\x93\x0d\x4f\xf3\xad\x5d\xbe\x89\x9c\x03\x33\x6a\x22\x9f\x04\x1b\xa7\xa9\x7e\x39\xf6\x28\xb4\x9a\x96\x07\x9e\x3d\x1d\x99\x99\x0a\x08\xe3\x86\x30\x4b\x35\x12\x49\x95\x50\x32\xb1\x98\xed\x47\x5a\xd5\x46\xbc\xd5\xf8\x9c\x54\xe4\xe9\x76\x66\x16\xe2\x7a\xd3\x6a\x29\x7a\xe1\x2d\xfb\x3b\xb9\xc3\xf8\xb0\xe0\x7c\xee\xc1\x87\x55\x9a\xd5\x1f\x87\x0f\xab\x81\xea\xaa\xce\x87\x35\xb9\x9e\x3c\x4c\xc6\x57\x93\xff\x57\x69\xf1\xf3\x78\xf2\x30\xb9\xfe\xd3\xec\xc3\xcd\xdd\xec\xee\xf2\xfe\xe6\xf1\xee\xfc\xb2\xbb\xc0\xbd\xde\x7b\xef\x82\x9f\xb0\xf0\x39\xef\xd9\x43\x90\x31\x43\x9c\x22\xf9\xdf\x24\x0d\x04\xab\xca\x6c\x66\xa9\x96\x23\xd8\xa8\xef\xd9\x65\x9a\x4e\xd6\x7c\x29\x6e\x8b\x24\x81\xbc\x36\x82\x82\xcf\x53\x01\x17\xcf\x11\xbb\xd5\xf1\x24\xf8\x1d\x54\x32\x34\xbe\x06\x3c\x9f\xc7\x71\x2a\xb2\x0c\x1f\x3f\xa2\xe7\x07\x59\x5c\x57\x25\x41\x28\x06\xfe\xcc\x65\x62\xee\x6f\xef\x41\xad\x54\x2f\x16\x88\xbc\x1d\x39\xcc\x35\xfb\x5a\xe8\x9c\x33\xf1\x2d\x02\x52\x87\xe6\x75\x72\xa5\x97\xaf\x7b\x07\x6a\xde\xd3\xbb\xe3\x84\x2d\x97\x14\x90\x80\x98\x35\x1f\xe7\xcd\x86\x80\xde\xf2\x23\xfe\xf4\x03\xfe\xb2\xb1\xf5\x3c\xaf\x49\xf4\xef\x51\x64\x76\xa5\x97\xcd\x84\xdc\xe0\x5d\x13\x8b\xb8\x97\xe5\x86\x92\x55\xbd\x64\x99\x54\x4f\x53\xf5\x79\x25\x14\xd3\x45\x8a\x7f\x82\x6b\xbe\x71\x33\x93\x22\x5b\x89\x98\xe9\x22\x1f\xb1\x17\xc1\xd6\x7c\x8b\x6e\x33\xdc\x09\x1c\x8b\x30\x2c\x19\x38\x45\xcc\xaf\x13\xa9\x8c\xb5\xd8\x48\x0b\x69\xac\x4e\xfd\x31\x6e\x5c\x96\xd2\x84\x1f\xce\x38\xd6\x75\x9e\x96\x80\x12\x50\xb2\xe2\x01\x2c\x36\x53\x4b\x96\x1b\x44\x8a\xb4\x7e\x2a\x36\x9e\xfc\xe8\x8d\x8d\x12\xc3\x70\x3f\x6b\x19\xb3\xb8\xd8\x24\x32\x72\x76\xf7\x45\xa7\xad\x0c\x6f\x88\xbd\xed\x7f\xea\x54\x11\xe5\x5d\x2f\xd6\x00\xec\x0d\x20\x0d\x1d\x5c\x6f\xaf\xcc\x76\xc7\xa4\x8a\x92\x02\xe4\x17\x8a\x4c\xa4\x27\x79\x2a\x97\x4b\x70\xc0\x6d\x99\xc0\x8f\x4f\x87\xe7\xe9\x76\x0e\x47\xc4\x87\xf5\x6a\x89\x5e\xca\x88\x27\x21\xca\xcc\xa7\xa7\x1c\xdf\x96\xdd\xf6\x24\x4e\x65\xfa\xed\x3a\xd4\xca\x23\xb0\x49\x05\x50\xbe\xcd\xc0\x94\xcf\xc8\xdc\x1d\xd2\xef\x05\x33\x17\x74\x2b\x5c\xed\x0b\x3a\xad\xf6\xbf\x3d\xe1\xfc\xb3\xad\x42\x01\x4a\x94\x2a\xc8\xc5\xe8\x17\x25\x52\xf0\x60\x21\xff\x66\xde\x54\x69\xf0\x4d\x9c\x6a\x81\x03\x8a\x59\xd5\x8e\x85\x43\xc4\x61\xd1\xcd\x52\x3e\x0b\xf5\xfd\xe9\x0b\x83\x07\x44\x3c\x5a\x89\x99\xf5\xcb\x8f\x6d\xb2\xdc\x01\x30\xd0\x58\x59\xfa\xe0\xd0\x94\x32\x09\x94\x31\x11\x5e\x9d\xb0\xc7\x75\xdb\x85\x94\xf8\xbd\x0e\x25\x20\x56\x2e\xc7\xe7\xaa\xc7\xc1\xa1\xfa\x00\x0e\xd3\xba\xaf\xf7\xdf\x1d\x08\x58\x26\x7a\x0e\xc5\x95\xed\x89\xd5\x8e\xb5\x65\x06\x36\x95\xf1\x10\xcb\x64\xc7\xe4\xc6\xfd\xb4\xab\x83\x4e\xfe\xd5\x3d\x09\x8c\x82\xc4\x58\x5d\xc5\x73\xaf\x16\xef\xec\xba\x26\x40\x6e\x23\x73\xc9\x0d\xe7\x48\x58\x6a\x4d\x08\x4c\xe8\x0e\x3d\xe1\xfa\xbb\x1c\x34\xd1\xf5\x72\xd0\x1d\x63\xe9\x2b\x48\xbb\x27\xf9\x80\x9a\x3e\x2c\x40\x74\x85\x7d\x43\xf8\xd1\xec\xd4\x21\x4e\x04\xb4\x9a\xdd\x24\x96\x00\x7c\xbd\x66\xb4\x3a\xee\x0f\x94\xee\x3a\x88\xb0\xe2\x15\x76\x54\x91\x6b\x1f\xad\x84\xf7\x99\x00\x6b\x50\x08\x0d\x06\xb3\x31\x89\x6b\x29\x0a\xa7\xcf\x01\xc3\x60\xb7\xe6\x00\x20\xc3\x20\x28\xc5\x26\x15\x36\xee\xbd\x15\xb9\x2b\x69\x4a\x2c\x5f\x3c\x84\x75\xdd\x5b\x97\x6b\x3a\x6d\xd9\x96\xab\xc3\x87\x20\xac\xb6\xea\xfa\xeb\x8d\x56\x42\x11\x98\x47\xe9\xa9\xa2\xc6\xad\xea\x97\x8b\x0c\x97\x30\xd3\x23\xba\x90\x23\x02\x4f\x64\x3a\x79\xa6\x14\x40\x40\xb7\x09\x7a\x01\xa6\x83\xe7\xc6\xb7\x31\x9e\x3c\xe4\xa6\x08\x40\x0b\x90\xa2\x8a\xf4\x55\x2a\x96\x32\xcb\x45\x08\x33\x0f\x7f\x7f\x34\x95\x92\x92\xf3\xdf\x35\xf4\xad\x2a\x25\xbb\x4e\x71\xb3\x6b\x07\xf4\x67\xbb\x11\xf1\xc4\xfd\xae\x7b\x31\x94\x6a\x45\xe2\xc0\x48\x94\x4e\x01\x5c\x03\xe8\xbd\x64\x58\xe5\x9e\x39\xa2\x4c\x37\x49\x54\x7f\xcc\x9d\xb4\x0c\x4c\xd1\xb2\xe0\x29\x57\xb9\x10\xd9\x54\x51\xe2\x04\xd9\x1a\xc2\x82\x44\x5c\x40\x2f\x81\x0c\x00\x9e\xcd\x91\xce\x72\x2c\x7e\x86\x9f\x2c\xb8\x4c\x8a\xb4\xd5\x5d\xc6\x55\xb9\x57\xa5\x55\xd7\x28\x9d\x43\xb3\xac\x69\xd2\x5c\x25\x44\xb0\x8b\x5c\xc1\x60\x35\xed\x51\x2e\x14\x68\x79\x05\x6b\x72\xfb\xcf\xb7\x8b\x95\xb4\x14\x47\xfc\x4b\x36\xdb\xe8\x01\x16\x8f\x94\xcc\x1b\x1b\xcb\xbe\xd6\xee\xf4\x1d\xe9\xbf\xaf\x6d\xd4\xa1\x3c\x7b\x82\xc8\xf9\xae\xab\xc4\xee\xf8\xe0\x1f\xff\xb0\x3b\xbe\xde\x6a\xbb\x60\xd5\xae\xb8\x8a\x13\x50\x3d\xcf\x2b\x27\x90\x07\x8c\xf0\xb5\xf5\x13\xda\x65\xc0\x2c\xd8\x6e\x16\xd5\x90\xda\xbb\xc6\xa9\x02\xf1\xde\x81\xf8\x2d\x3d\xa5\x0c\xbc\x6e\x02\xfc\xf9\x93\x9d\xe4\x6d\xdc\x86\x6d\x5f\x82\x0b\xb9\x3c\x3e\x6f\x56\x5f\xbd\x1f\xe7\x65\x7f\xac\x5b\xca\x88\xb6\x22\x9d\x5f\x0e\x3d\x74\xe0\x66\x04\xa0\xa6\x31\x66\x21\x3b\xd9\x54\x91\xfa\x15\x26\x8d\x20\x5b\x80\x15\xf8\x19\xfb\xbd\x43\xef\xff\xfe\x9f\x6d\xfd\xf5\x96\x2d\x60\xac\x81\xe4\x40\x47\x51\x91\x42\x46\x87\x6e\x9d\x4c\xe0\xd9\x34\x84\x44\x72\x8c\x27\xb2\xcb\xc3\xa3\xfb\xd4\xe4\x3d\xb8\x30\x43\xe9\xa5\x1e\xe0\x76\x89\x3a\x5e\xee\x2c\x24\xc2\xe9\x34\xcb\x59\x96\x8b\x4d\xa3\x55\x2a\x39\x5d\x65\xa9\xba\x03\xdc\x2e\x2f\x94\xd7\xd3\xd7\x1d\x60\xa3\xc7\x81\x26\xde\x9f\xef\x6f\xae\xd9\x86\x6f\x01\xd2\x92\x6b\xd2\x18\x04\x0a\x9a\xea\xfe\xdd\x35\x03\xe5\x97\x2f\x6f\x36\x1c\x53\xc2\xb1\xb5\x84\x9d\xb8\xd3\x10\xad\xd8\x21\x58\x33\xb4\x24\xcd\x56\x4e\x75\x72\xb2\x49\xb8\x12\x48\x17\x0a\xef\x7f\xca\x2a\x8f\x0f\xd3\x54\x2e\x60\x4d\x40\x00\xe8\x40\x28\xc1\x9f\x16\xaa\x09\x12\x58\x56\xdf\x3b\x28\x33\xd5\x6a\x23\x3a\xf1\x3a\x1f\x91\x44\x94\x47\x66\x9b\x60\x75\x9a\xcd\xb6\xb9\x84\x2d\xcf\x00\x4b\x35\x60\xa2\xba\xa5\x02\xa7\xca\x2a\x41\xe9\x97\x8c\xc5\x58\xbf\x57\xc8\x0c\x15\x76\x31\x96\x09\xb8\x06\xb2\x2f\x98\x74\x4d\xb9\xca\xcc\x84\x42\x38\x46\x3c\x0b\xc5\xea\xd5\x60\x93\x8b\x2b\x97\x9a\xc4\x49\x22\xf9\x81\x96\xa1\x0f\x1c\xb3\x43\x2e\x30\x8d\xda\x75\xbb\x99\x3d\x3f\xf2\x4d\x17\xf2\xf8\xe0\x16\x77\xcd\x92\xab\x5e\xae\x7a\x9d\xa0\xaa\x05\x8c\xe4\x25\xf8\x71\x38\x7a\x8f\xea\x40\xf3\xd3\x48\xf5\x37\x40\x9b\xfb\x38\x68\xf2\x01\xb6\x27\xa0\xbe\x70\xb0\x00\xe7\x2f\x9b\x5d\x0e\x7c\xcf\xa8\x01\x4b\x9a\xf7\xf7\x42\xb0\x2f\x4e\x46\xf6\x0b\xe9\x09\x78\x05\xff\xb6\x71\x9d\xa8\x85\x3e\xcc\x18\xa4\xcb\x1a\x92\xe6\xa0\x51\x69\xee\xe7\xa1\x58\x1d\x80\xc3\xab\xd7\xad\xe1\x6a\x7c\xaf\x1d\xc8\x9c\x5b\x7f\x27\x27\x64\xb7\xed\xa9\x39\x9f\x61\x8a\xf7\x93\x3b\x2d\x2d\x92\x1c\x94\x75\x81\xab\xed\x49\xe9\x17\x85\xbe\x00\x3d\x89\xbd\x35\xfb\x0f\x0e\x30\x20\x5d\x23\x70\x4e\x81\xd6\xf0\x1d\x90\xc7\x8d\xdd\xbf\xd9\x3d\x86\xb9\xb1\xcf\xc0\x8e\x9c\x81\xf3\x43\xbc\xc6\x60\xcd\xdf\x8e\x47\xec\xa7\x11\x3b\x1f\xb1\xd3\xd3\xd3\x77\x23\x26\x78\xb4\xb2\x3d\xc2\x9f\x20\xe8\x25\xe7\x4b\xd3\xb6\x53\xdf\xf6\x0f\x00\xb2\x6f\x73\x58\x99\x23\xd3\x18\x68\x1e\x68\x74\xfb\xc8\x83\x7d\x05\xc4\xc1\xa3\xa0\x8c\x4d\x09\x46\x2b\x2d\x7d\xa7\x00\x5d\x26\x22\x9d\x5a\x7c\x5a\x96\xeb\xd4\x62\x6d\x9e\x79\xca\xa5\x82\xf2\x20\x5e\x47\x1a\xd2\x93\x03\x4a\x3b\xf1\x8d\xaf\xe1\xfd\xa5\x72\xac\x3e\x66\x98\x1e\x5c\xff\xf3\xed\x46\x46\x30\x9e\x2f\xa9\xcc\x73\x73\x3a\x67\x53\x75\xcf\xde\xff\x2b\x1b\x6f\x36\x89\x60\x63\xf6\x37\xf6\x13\x57\x5c\x71\xf6\x13\xfb\x1b\x3b\xe7\x2a\xe7\x89\x2e\x36\x82\x9d\xb3\xbf\x99\x61\x33\xed\x5d\x6b\x73\x1c\x6e\x47\x8c\x33\x55\x24\x78\xea\xbf\xb5\x38\x96\x77\xee\xbd\xb8\x9f\x1d\x2b\x61\x9b\xe9\x35\x1d\x85\xbf\x60\xf1\x11\x14\x7f\xa8\x65\x22\x72\x2b\x1c\x5d\x42\x1c\xe1\x03\x4e\xe0\x4d\xdf\x4f\x95\x8b\xe5\xfd\x62\x7a\xfc\x0b\xfb\x1b\xbb\x2e\x92\xc4\x74\xc9\x18\x1a\xb3\x90\xde\x33\x8b\x00\x17\xea\xf4\x45\x3e\xc9\x8d\x88\x25\x07\x0c\xb8\xf9\xd7\xd9\x03\xcc\xf6\xac\xf0\x0c\x21\xe1\x9e\x76\x8c\xd3\xdf\x85\x26\x6a\x48\x61\x8f\x23\x1e\xb7\x93\xdf\x71\xf3\x2b\xff\x74\xb8\x47\xe4\xf9\x91\x68\x3f\x90\xc3\x8a\x6c\xe1\x21\xc1\xf9\x5e\x26\xa0\x72\xd8\xda\xb6\x1a\x8e\x82\xf0\x50\x3f\xd4\xc8\x02\x5f\xfe\xd1\xef\x90\x3d\xc8\xcb\xfb\x9a\xdc\x1a\xf5\x72\xa9\x54\x0a\x7c\x49\x5f\x2e\xde\x2b\x2b\xe4\x28\x97\x3f\x95\x05\x03\x4a\x43\xac\x65\x2f\x65\x85\x4a\x67\x1f\x29\x76\x01\x85\x66\xe6\x22\xa3\x64\x72\x66\xb6\xea\xd9\xb5\x56\xe6\xda\x9a\xc9\x25\x96\xb8\x03\x02\x22\x03\x1a\x2a\xeb\x14\x3c\x94\x5d\xd6\x60\x0b\x80\x7f\x60\xba\x84\xa8\x9c\xdc\x58\x01\x33\x05\xc9\x76\xaa\xcc\x2f\xe8\x44\x02\x84\xae\x74\xdc\x5d\xf8\x34\xab\xe1\x48\xcf\x22\x83\x1c\x34\xde\xb0\xc0\xba\x64\x0f\x0f\xe2\xcc\x82\x6a\x93\x03\xa2\xe2\xd7\x01\x0b\x08\xb5\x66\x4b\x44\x11\xfc\x33\x17\x89\x56\x4b\xb3\x2a\xda\x8c\x80\x5e\x73\x79\x48\x4e\x3c\xec\x02\x36\xd6\xda\x03\x73\x58\xd2\x57\x68\x4a\x02\x89\x7c\xd2\x9e\x02\x99\x5d\x17\x91\x75\xa7\x21\xbd\x5c\xcb\x4b\x1c\x58\x70\xf8\x98\x09\x50\xd4\xa7\xe4\xac\x8b\xf6\xe3\xc1\xe9\x0b\x36\xf1\x8d\xfa\x6d\xaa\x4e\x4c\x5f\x73\x28\x84\xb2\x09\x36\x98\xec\x82\x7a\x3d\xd6\xe3\xaf\x09\xef\x7b\x4d\x11\xcc\x46\xc5\x4b\xf8\x9e\x69\x8d\xfe\x34\x54\xd5\xd2\x8e\xde\x31\x90\x4f\x5f\x91\xe4\x7a\xa6\x17\xb6\x08\xac\xff\x99\x5e\xa3\x19\xef\x07\x3d\x09\xa9\x05\x43\x3a\xee\xfa\xc2\x69\xcb\x37\x68\x35\xa3\x8c\x44\xbf\xce\x56\x07\xec\x46\x7d\xc0\x9f\xdf\xea\x44\x46\xdd\x78\x1d\x7b\x5c\x81\x34\x7c\x0d\x00\x31\x17\x00\x60\xa3\xf8\x0f\x75\x0a\x3d\xf4\x5c\x44\xb9\xcf\xb8\xd5\x5f\x6e\x50\x38\x8c\x02\xac\xae\x15\x50\x7e\x71\x29\x2d\x38\x6a\x80\xb3\x08\xc8\x25\x31\xf4\x08\x55\x31\x90\xea\x8d\x38\x45\x64\x4b\x1d\x01\x7b\xf5\xb2\xd2\x89\xb9\x9a\xa8\x98\xf8\x9f\xa6\x6a\x23\xd2\x48\x27\x3c\x37\xd6\xf0\x85\x38\x3e\x64\x12\x7b\x06\xe7\xb7\x80\xcd\x03\x04\xcd\x3b\x92\xa9\x10\x2e\xe5\x6a\x9b\xef\x38\x84\xec\x2c\x58\xa9\xba\xc3\x02\x32\xc7\x03\xdb\x74\xad\x82\xcf\x04\x81\xc1\xa1\xa0\x8a\xed\x4a\xf2\xcc\x0c\x7a\xa9\x3f\xc3\x66\x58\x38\x72\xde\xc8\xdf\x23\xf2\xca\xbc\xd2\x55\xa2\x3a\x94\xc0\xe3\x85\x75\x1d\x88\xa7\xc8\x04\x74\x67\x2d\x38\xba\x26\x9e\x55\x87\x26\x75\xaa\x7c\xba\xf0\x4d\x16\xba\x29\x8d\xf3\x8c\x34\x55\x16\xce\x33\x62\x6f\x4a\x2f\xfa\x06\x78\x9e\x94\x86\xe7\x51\x4a\xa7\x34\x34\xb0\x5c\x47\x4c\xe6\x53\x25\x33\x5c\x99\xa9\x48\xc4\xb3\xe9\x5d\x18\x3b\x25\xe8\x87\xbd\x4a\xda\xd7\x06\x44\x28\xb7\x85\x84\x4e\xe1\x10\x18\x15\xd2\x90\x2f\x88\x43\x9c\x16\x94\xea\x0b\x05\xdc\xbc\xe2\x9b\xd9\x00\x12\x52\x03\x88\x86\x88\x85\xb2\xfd\x03\x90\x04\x8a\x28\x4d\xd5\x64\x01\xd5\x5c\x50\x43\x16\xc7\x78\x29\xb3\x6c\xad\x8e\xbc\x41\x52\xac\x54\xd3\x15\xd5\x09\x68\xa3\xca\x0a\xee\x24\xf1\x2c\xd2\x6d\x0e\x31\x4e\x18\x57\x25\x78\xbe\x62\x32\x1f\x01\xeb\x86\x35\x1c\x53\xc5\x63\x12\xa9\xa3\xe6\xcc\xd0\xc0\xba\xef\x98\x67\xfa\x7c\xae\x9f\xbb\xfc\xbc\x43\x41\x50\xb8\xab\x37\x09\x57\x33\x34\xa8\xbf\x02\x0c\x2a\x10\xc0\x69\xcb\xfc\x15\xf3\x99\xd3\xcd\x3f\x4a\x3f\x9d\xf7\x73\x57\x92\xa5\x32\x6e\x9d\x7d\xd0\x08\x17\x83\x67\x0a\xb4\xde\xba\x0b\x5b\x50\xb2\x3d\x65\x36\x21\xd9\xdf\x0a\x78\x84\x14\xaf\x24\xe6\xed\x6a\xdd\x05\x91\xb2\x2b\xe0\x47\x85\xeb\xf4\x99\xf9\xca\x19\x52\x9d\xf6\xe1\x48\x91\x9a\xc3\xb4\x17\x5a\x64\x47\xb7\x5e\x17\x31\xd2\x1a\x56\xa8\x23\x47\xec\xdb\x06\xd9\x2f\x84\x41\x0b\x0c\x4b\xb9\xa8\x47\xb3\xc0\x51\x78\x2d\xd1\x0d\x50\xc3\x63\x86\x6c\xcb\x32\xe8\xbd\xab\x28\xa1\x5f\xa7\x6c\xa2\x98\x8d\x5e\x8c\xd8\x1b\x5c\x58\xd9\x1b\x8a\xc8\x91\x4a\x16\xa5\x92\x63\xda\x3d\x54\x77\x56\x45\x26\x20\xfa\xd7\x6f\x37\x4c\x8c\x74\xb2\xc5\xbc\xea\xb8\xfc\x24\x01\x7d\xbc\x4f\x81\x29\x26\xd5\xe6\xd8\x00\x1d\x92\x78\x0b\xdd\xa2\x0f\xab\x7d\x70\xd7\xbf\xb0\x4d\xff\xb0\x9f\xec\x0f\xcd\x10\x6d\x0a\x3a\x4f\xed\xe7\x4c\xa7\x53\x65\x5b\xa3\x08\x5d\x86\x84\xea\xd5\xa6\x02\xb6\x0f\x72\x81\x83\x95\x0a\x39\x7d\xcb\xa1\x0f\xd2\x0c\x9e\xd2\xaa\x6a\x05\x00\x23\x30\x17\x5e\xdf\xef\x94\x8d\xfd\xd3\x8c\xe3\x61\x16\xf8\x1a\x8f\xf9\x2a\xed\x4d\x92\x98\x41\x91\xb9\x65\xd9\x09\x80\xca\x59\x01\x5c\x51\x8b\xc2\x18\xa3\x80\x50\x6b\xaa\xcc\xe0\xb1\x85\x04\x18\x2c\x8d\xcb\x54\x7d\xd4\x99\xad\x8b\xcd\xfc\x78\x58\x48\x25\x0d\xdb\x1b\x27\x25\x40\x7f\xb8\x80\x43\x9b\x42\xe0\x15\x6d\x49\x40\xa8\x53\x71\xfb\x56\x17\xa9\x7f\xa9\x88\xab\xa9\xfa\x4f\x33\x3c\xa8\xec\xe6\x64\x11\xf5\x02\xb7\xb0\xd5\xe2\x64\x6f\xbf\x60\xa3\x6f\xff\xf9\xdd\x97\x77\x58\x9f\x5e\x64\xa0\xde\x32\x2a\x1f\x20\x8e\x5b\xb1\x48\x12\x48\xcc\xda\x37\x70\x65\xe5\xfe\x11\xbc\x0b\xa5\x42\x77\x9c\x99\x2a\xbb\x18\x7d\x36\x7a\xd7\x0a\xf6\xb1\xd8\x31\x8b\x78\x1e\xad\x4e\xac\x2f\x47\x66\xcc\x9e\x7e\x34\x7d\x28\xe3\x60\x3c\xad\x66\x7a\x41\x73\xff\x4a\xd7\x4e\x1d\xb1\xb4\x5e\xcc\x2b\x00\xce\xe4\xa1\xb4\x2a\x43\x0d\x52\x5c\x9c\x5e\x98\xd0\xfb\x79\xee\xeb\x56\x9b\xc1\x07\x50\x29\x68\xac\xf8\x5a\xc4\xec\x0d\xd4\x3e\xbc\xb1\x93\x3f\x55\x9b\xf9\x69\xb2\x5d\xe4\x44\xd6\x62\x06\xe5\x14\xd8\xcb\x77\x9c\x72\xb3\xb8\x7e\x4d\xda\x31\xd8\xad\x17\xad\x66\x5f\xc7\x8d\x8d\x7b\x52\x7f\x87\x05\x43\x3e\x6e\x74\xee\xcb\x88\x99\x32\x39\x25\xcf\x9e\x46\x6c\x9e\x72\x05\x74\xbe\x71\xe8\x54\xf9\xdd\x69\xae\x65\xc4\x84\x42\x09\x1c\xae\x78\xb2\x05\x28\xf5\x68\xaa\x90\x36\x06\x88\xde\xb6\x51\x22\x23\x14\x42\xad\xf8\x41\xe2\x59\xa8\xfc\x92\xea\xa4\x2d\x66\xfb\xd0\x4c\xab\xab\xbb\x3e\x88\x50\x6d\x52\xf6\x76\xb8\x2f\x28\xf7\x01\xc7\x28\x15\x80\x65\x9e\x6f\x03\x8c\xa7\x5b\xe0\x23\xd2\x43\x00\x66\x1d\xf6\xd7\x62\xae\x13\x4b\x4d\x34\xb9\x60\x3a\x05\x7a\xd6\x5c\xd3\x9f\x64\xdc\x76\x8a\x49\x15\x8b\x6f\x07\xd5\x07\x77\x1f\x48\xd6\xbd\x33\x8f\x09\x58\x40\xab\x2f\x0b\xbb\x28\x15\xe6\xb0\xc8\xed\x0d\xae\xf6\xad\xac\x0a\x38\x1b\x27\xf9\x0a\x50\x60\x88\x3f\xf6\x83\xba\xe6\x5b\x16\xad\xb8\x5a\x06\x57\x68\x00\xe5\x88\x8d\x4e\x51\x78\xe3\x19\x88\x78\x74\x6a\xeb\xaf\xa8\xaa\x88\x40\xd0\x2e\xfe\x8b\xd8\x43\x6d\x4b\x87\xf8\x72\x99\x8a\x25\x94\xc4\x96\xf4\xda\xd1\x7e\x3a\x06\x55\x7c\x4e\x57\x59\xd9\x71\x6a\xb3\xdb\x6e\x2d\x79\xba\x75\x45\x39\xa4\x5a\xe3\x86\xae\x36\xac\x23\x26\xc5\xe9\x88\xfd\xc1\xe3\x2d\x45\xa4\x95\xab\xea\x69\x7e\x87\x4d\x25\x52\xbb\xc3\x16\x35\x14\x71\x37\xf7\x1d\x3e\xab\x69\xdf\x34\x2e\x9a\xce\xb2\xa8\x9c\xe7\xc5\x00\x5b\x49\xfa\x66\xe7\xe6\xc7\xf7\xf8\xdb\x4e\x48\x32\xdf\x18\xf3\x66\x09\x34\xcc\xf7\x8d\x85\x37\xcf\xf6\x4c\x67\x4d\x63\xdd\x1c\xf7\x0b\xba\x9f\xe8\xe5\xab\xba\x94\xb6\x4a\xba\xd5\xa5\x74\x33\x91\xb4\x54\xfe\x76\xbc\xd3\xd0\x50\xa6\xc5\x66\x12\xea\x3a\xab\x5e\xb7\x1a\x2c\x80\x53\x84\xd6\x29\xfa\xed\x08\x64\x70\x05\xc8\x25\x23\xd9\x74\x20\x94\x58\x14\x40\xe5\xee\x7b\xdd\x8d\xdb\xf8\x1b\x9a\x87\xff\xb1\xe5\x5e\x6c\x3d\x93\xa6\x41\x0f\xf7\x27\x8e\x53\x3a\xf0\x9c\x72\x8f\x47\x0e\x69\x1b\xdc\xd4\xa9\x5c\x4a\xc5\x73\x9d\xb2\xb7\xb7\x96\x78\xf5\x9d\x23\x0b\x87\x51\x3c\x86\x99\x28\x0d\x11\x9a\x89\xe6\xbb\x17\xc0\x7b\x45\x3c\x1b\xc6\x82\xd3\xa4\xd2\xba\x13\xbe\x6e\xbe\x95\xe5\x7c\xbd\x09\x09\xdc\x9c\x78\x18\x8d\x4c\x82\x83\xc0\x6c\xc7\x20\xc6\x27\x33\x5f\x92\x34\x55\x14\x19\xc7\x79\xd3\x69\x83\xfc\x78\xf5\x2d\xc1\x8f\x9c\xed\x49\x4a\x40\x64\xa6\x03\x69\xdd\xaa\x19\xc5\xbb\x2b\x9b\x30\xf0\xf7\x82\x92\xa3\x0d\x2f\x8a\x7c\x52\x19\x9c\xda\x78\xc5\x73\x66\xc3\x9c\x92\xb6\xf6\xfa\x3c\xd1\x45\xcc\xc8\x68\x50\x76\x32\x3d\xc5\xd3\x07\x08\xde\x4e\x4f\xdb\xd8\x6e\x06\xca\x01\xb9\xfd\x0d\xbf\x6b\x5e\xe1\xf0\x59\x8b\x85\xeb\xdc\x5a\x34\xb2\xc3\x62\x4f\x94\x98\xff\xc8\x37\xdd\x15\xf4\xdc\xde\x9c\xb1\xde\x25\x14\xc0\x6f\xd8\xfb\x2d\xc3\xe5\xa2\xa1\xc0\x36\x33\x2c\x50\x66\xe5\x9e\x60\x3d\x87\x81\xe4\x06\x3e\xbc\x10\x91\xc9\xb3\xa7\x83\x1f\x67\x0b\x3b\xbb\x1f\xb5\xe1\xa9\x50\xf9\x0c\x9e\x38\xec\x61\xf0\x90\x5b\xf8\x79\xc9\x21\xe9\x15\x10\xfc\xf7\x07\x8d\x71\x5e\x5b\x5a\xfe\x1f\xec\x9e\x62\x1b\x99\x95\x8e\x34\xa7\xcf\x5b\x09\x50\x8c\x20\x27\xe6\x26\xae\x65\xba\xe8\x85\xf6\x18\xbd\xe0\x85\x4a\xa6\xb3\xd7\x0b\xf9\xde\xa3\x90\x82\x69\x85\xc2\x3c\x54\x50\x68\x4c\x99\xfd\x9b\x5f\x73\x58\xa4\xeb\xb3\xb3\x8c\xe7\xcc\xcc\x5f\xc2\xfe\x4b\xa4\xda\xa3\xe4\x49\x8e\x3e\x68\xb8\xd3\x1f\xde\x5f\xb2\x08\xfd\x5d\x14\xcb\x09\xd5\x22\xe0\x2f\x54\xbd\x8f\x37\xcb\xf9\xd6\xba\xfb\x2d\xa9\x84\x8d\x88\x70\x1e\xf6\x3c\x36\x83\x8b\x5d\x60\xdf\x6d\xe8\xcb\x1d\x16\x76\x83\x9e\xc1\xbd\x95\xf8\xb1\xd6\x7c\x43\xb0\x27\x42\x58\x56\x83\xf8\xa7\xf0\x12\xff\xfe\xcb\x7f\x9c\xb6\xc9\xa6\x41\xd7\x87\xa2\x48\x5c\xe7\x3f\xa4\x52\xa8\x18\x92\x72\x3c\xae\xb3\x56\xab\x52\x94\xb6\x64\x9e\xcd\x32\x3c\x4a\x31\x59\xf3\x39\x98\xcd\x70\x11\x7d\x87\xcc\xae\x37\xb2\x6e\xfb\x96\xf2\x3e\x6d\x47\x75\x36\x8b\xb7\x8a\xaf\xeb\x42\x73\xaf\xda\xc7\xad\x14\x49\x0c\x5d\xa4\xa7\xef\xca\x4e\xc4\x22\x7a\x1a\xea\x13\xec\x4d\xf5\x2a\xa2\x27\xf6\xf3\xc3\xc7\x2b\x94\x58\x91\xd9\x54\x5d\xf3\x5c\x3e\x8b\xc7\x34\x71\x61\x61\x34\x3e\x45\x9a\xd8\x3d\x52\xa6\x1e\xc4\x62\xb8\x02\x74\x8c\x89\xa7\xd0\x3a\x0e\x21\x33\xec\x7a\x7b\x32\x2f\xa2\x27\x91\x9f\xa5\x5c\xc5\x7a\x8d\xaf\x71\x96\x15\x8b\x85\xfc\x76\x9a\xf3\xf4\xdd\x2e\x88\xfb\x4e\x4b\x7a\xc0\x25\xe1\x10\x83\x52\xbf\x06\x38\xe1\x1b\x6f\x9b\x65\x1c\x8a\x35\x3b\xcb\xec\x79\xf7\x9c\x49\x81\x78\x63\xcb\x45\xe4\x94\xfa\xd9\xf0\x84\x01\xa3\xd7\x7c\xb0\x7e\xa7\x2b\x56\x1b\x03\x60\x9f\xee\xdb\x08\xe1\xad\xd6\xc9\xa1\x51\x42\x9e\xd8\x4d\x32\x03\x05\x8f\x43\x5c\x70\x5c\x00\xee\xb2\x3d\xb9\x70\xf9\x2a\x47\xa9\x47\xb1\x06\xa7\x9f\x05\x50\x0a\xea\x02\x00\x18\xa0\x13\x1d\xa0\xc3\x6c\xd3\x90\xb0\x1c\x08\x9e\x84\x36\x10\xe9\xe0\x94\xb4\x6b\x61\xcb\xa0\x1c\x96\xfb\x3e\x02\xed\x50\xa5\x87\x83\x02\x08\xa8\xb7\x51\x79\x94\x0b\x26\x84\xf4\x64\x6e\x1c\x83\x67\xdb\xf1\x44\x95\x2f\x63\x73\xc8\xf3\x99\xaa\xc0\xcb\x41\x62\x0e\x8b\x4e\x75\xa3\xd6\x14\x63\x28\x2d\xc3\x83\x63\x0c\x87\x70\x50\x76\x06\xa1\x2f\x42\x35\x17\xc8\xa3\x46\x7a\x3d\x37\xf7\x7c\xac\x76\xa4\xc0\x1b\xb8\x67\x63\x4b\xf1\xe3\x82\xa4\xd6\xcd\x42\x8e\xe1\xca\xd8\xbb\xa3\x21\x64\x4b\x0a\x4d\xd6\xae\x2b\x4c\xe8\x13\x1f\x97\x2e\xb3\xd9\xce\x8e\xab\x6f\x20\xcd\x75\xf6\x85\x6f\x33\x90\xbe\x11\xc6\x2a\x2e\x30\xd8\x54\xee\xff\xc8\x87\x40\x1c\x7d\x14\xe9\xc8\x15\xa4\x88\x45\xef\x22\xb1\x04\x5c\x24\x56\xe4\xc7\x53\x6b\xbc\xc9\x9a\x07\xe7\xd7\x89\x1f\xa7\x9d\xf1\x63\x4c\xe0\xfc\xcf\x08\x19\x77\x04\xa6\x0e\x8c\x8f\x05\xc7\x64\xaa\x23\x92\x7f\xcf\x19\x28\xe2\xa1\x39\x36\xcf\x1e\xb1\x35\x97\x8a\xb6\x41\x9e\x1a\x03\x19\x8b\x79\xb1\x5c\xb6\x86\x6d\x7e\xfc\xf8\x6f\x79\x9f\xfc\xc3\xc7\xe7\x3a\xc9\x61\x8e\x11\x61\x9b\xd8\x27\x61\xda\xd8\xf8\xca\xdf\x27\xa8\x76\xa4\x08\xe1\xa4\x4f\x84\xd0\xe2\x0e\xa0\x1a\x82\x5c\x7c\x9b\x1b\xfe\x2d\x74\xf8\x7d\x42\x87\x8d\xb9\x91\x6a\x0f\xb1\x02\x7f\x26\xcb\x0e\x70\x47\x0f\xf7\x24\xf2\x71\x8c\x6f\xd0\x2b\x12\x7d\xcb\x84\x8a\x33\x36\xe7\xd1\x2b\x30\xfb\xc0\xe9\x73\x78\x8c\x62\x47\xc2\xfb\x5e\xaf\x05\x83\x47\x65\xc8\xac\xcc\xa8\xe0\x64\x04\x48\x2a\xf3\x82\x3e\x4b\x4c\x39\x68\x38\xae\x30\x5b\x1d\x7b\xa7\xf5\xad\x12\x2f\xcc\x9c\x06\xa3\x10\x5a\x12\x4c\x0f\x50\xee\xbf\x23\xd5\x66\x8f\x43\x75\xd5\xb5\xa9\x58\xf2\x34\x06\xf4\x33\x6d\xc9\x84\x47\x4f\xe6\xbf\xa1\x7f\xf4\x44\x82\xbf\x58\xf6\x4f\x84\x64\xf9\xd6\xa4\x8a\x50\x41\x97\x90\x36\xbe\x7f\xf8\xf3\x8c\xf1\x28\xd5\x19\xde\xe2\x9d\xaa\x14\x14\xa3\x81\x83\xf8\x2c\xe3\x82\x27\xf8\xc4\xd6\xe8\x1f\xcf\x0e\x62\x33\x1d\x07\xa4\xf2\xe2\xdb\x26\xe1\xaa\xbc\x27\xf1\x75\x81\x4e\x42\x76\xac\x7c\xc7\x8a\xf4\x5d\xd9\xdd\x42\x25\x56\xbf\xad\xd0\xfb\x4c\x05\x8f\xb7\x21\x77\x8c\x54\x24\xaf\xc8\xe3\xb5\x54\x66\xea\xad\x66\x88\xb3\xaf\xd0\x74\xc4\x13\x04\x81\x01\xb5\x76\x92\x54\xb6\x7e\xc6\x94\x30\x2e\x0b\x4f\x65\xb2\x05\x2f\x75\x93\x8a\x93\xe0\x39\xc1\xfe\x26\x0c\xba\xcc\xa6\xca\xd6\x39\x17\x99\x58\x14\x09\xfa\xb2\x70\xdb\x73\x2f\x40\xfb\xf0\x71\x32\x32\xc7\x58\x4e\x84\xb6\xc1\x83\x51\x26\xe2\x18\x78\xde\xfa\x3d\xab\x57\xcc\xdb\x73\x1a\xa5\x00\x37\x5c\xe9\x17\x5b\x74\xf0\xc2\x3d\xaa\xac\xed\x2c\x39\x5a\x9c\xb3\xdb\xab\xb1\xf7\x09\xbb\x2b\x71\xd0\xcb\x52\xc8\xf4\x99\x88\xdd\x4e\x94\x0a\x5e\x87\x14\x96\x08\x83\x22\x62\x56\x64\x58\xbb\x60\xe6\x10\xac\xb5\xbd\x36\x63\x35\x87\x55\xe7\x62\xee\xed\x64\xa6\x15\x9b\x16\xbf\xfb\xdd\x1f\x05\xfb\x1d\xc9\x6d\x82\x95\xc1\x08\x35\xb0\x1a\x61\xeb\x60\xa0\xdc\x03\x04\x52\x1e\xd5\x66\x84\x35\x81\xb0\x6c\x21\x21\xc0\x98\x78\xb4\x62\x59\x31\x47\x8c\x0e\xa7\x20\x27\x57\x8e\x34\xf0\x4a\x03\xdc\x06\xcf\x31\xdb\xfb\x01\xc1\x82\x5b\x3a\x5f\x6c\x20\x20\xc0\x09\xc2\x40\x87\x22\x3d\x30\x28\xf8\x92\x60\xc0\x6f\x41\xa9\x67\xc4\x7e\x96\xcf\x62\xc4\xee\x37\x3c\x7d\x1a\xb1\x0b\x0c\xb7\xfe\x59\xcf\x77\xde\xff\x8f\x11\x03\x73\x6e\xea\xa1\x9a\x94\x18\x4d\x1a\x05\x54\x99\x41\x88\xbf\x1e\xad\xb1\x08\x0b\xd0\x3e\x41\xd1\xe7\x5d\x7a\x24\xad\x7c\xaa\xc7\xba\xc5\xb4\xc3\xfa\x5a\xef\x34\x55\x2b\xed\xcf\x53\xaa\x9a\x6a\x42\x9a\x98\x73\x0c\x56\xa2\x79\xf1\x13\xf0\x4c\x74\xca\x36\x09\xcf\xcd\x5a\xc9\x28\xfc\x8c\xab\x02\xf1\x77\x78\x22\x57\x6a\xe1\xfa\x3a\x5e\xf6\xc1\xb3\x8d\xd6\x49\xa3\xff\x75\xd4\x01\xac\x45\x3b\xfb\x0e\xde\x04\x6b\x08\xb2\xd0\x2b\xb1\xa3\xe8\x23\x67\x3e\xce\x16\x48\xe7\xc3\x6a\x8a\x0b\x48\x22\xf8\xe1\x08\xe5\x61\x8c\x59\x41\xd4\x23\x3a\x22\x56\x4d\x8c\x5b\x0f\xd1\x38\x51\x14\x42\x0c\xd1\x76\xb5\x98\x5e\x56\x7f\x4e\x8b\x5b\x08\xed\xce\x64\x53\x21\xfc\xd0\xcd\xf5\xb0\x6a\x0c\xd4\x63\xcf\xad\x01\xb7\xb8\xf3\x5d\x34\x80\xb6\xc8\x6e\x16\x25\x3c\xeb\x89\x64\x6b\xb4\x3b\x13\x6a\xe8\x1c\xda\xe9\x6f\x33\x7f\x86\x98\xea\xba\xe7\x81\x39\x55\x63\x47\x83\xe7\x5d\x2d\xe7\x1e\xa2\x99\x45\xc7\xb8\x36\x35\x08\x66\xf7\x9c\x89\x23\x96\x15\xd1\x0a\xe0\xfa\x65\x3b\x15\xda\xad\xfa\x8e\x1d\x4d\x95\x71\x56\x50\x45\x82\x43\x42\xf8\x05\x08\xc7\xe5\x7f\x09\xe7\x0d\x11\x2a\x34\x74\x80\xe6\xdc\x4c\x8d\x56\x8d\xce\xa2\xad\x9c\xe0\xe9\x93\x88\x83\x50\x5f\xb1\x89\x79\x6e\xbc\x67\x77\xc8\xc1\xfa\x75\xfc\xa1\xd6\xfb\xcc\xc2\x17\x0b\x9d\xe5\x8a\xa5\x4d\xe4\x42\x44\xdb\xa8\xc6\x0b\x52\x82\x61\x1c\x2f\xa6\xbc\x5f\x48\xb5\x8b\x3f\xa2\xf9\xa6\xfc\xb9\x56\xef\xcc\xda\x72\xd7\xff\x33\x11\x6b\x2d\x14\x06\xff\xe8\x51\xb1\x1d\x69\xe6\xdf\xc0\x67\xff\x90\x11\xa4\x7e\xec\x05\x25\xfb\x65\xf1\x5d\x70\x63\x25\xaf\xb9\x11\x55\xf6\x63\x15\xa8\xca\x38\xdc\x37\x48\x3a\xd9\x92\x88\xdf\xb1\x15\xa8\x0c\x38\x76\x25\xca\x03\x40\xe9\xf4\x53\x3b\x5e\xe7\x89\xce\x8a\xb4\x7b\xf3\xdf\x95\x7b\x6d\x9f\xde\xc0\x60\x08\x8b\x6d\x3d\x17\x50\x7d\xde\x05\x1f\xd9\xe5\x28\x98\xfb\x52\xf5\xf7\x84\xb7\x7a\x11\x2c\x42\xa8\x7c\x8b\x26\x50\xed\x77\x41\x0c\x04\x4e\xde\xa5\x08\xbd\x80\xca\xe1\x58\x5a\x5c\xa5\x7c\xdf\x0f\x85\xe9\x6e\xbc\x83\x55\x58\x73\x4a\xe1\xb2\x5e\x19\xd2\x63\x64\x1f\x6e\x79\xbe\xc2\x40\xce\x5a\xe7\x24\xce\x0c\x5a\xdb\x04\xe3\xc1\x94\xc4\x3c\xd1\x73\x90\xf9\x02\x15\xee\xb6\x75\x4e\x8b\xb3\xd7\xd0\xd5\x27\xac\xcf\xda\x36\xfb\x01\x6a\xfe\x52\x91\x01\xf5\x43\x3d\xe7\xd7\x17\x21\x3b\x2c\xd8\x54\xef\xae\x31\x5b\x17\xb5\x60\x53\x9d\x3a\xdb\x58\x75\x80\x4b\x5e\xee\x51\x23\x71\x19\xd6\xcd\x81\x6c\x3f\xb2\x88\x52\x52\x1d\x89\x04\x2b\xef\x6b\x75\x14\xa7\x6a\x8c\x9f\x94\x54\xc7\x9d\x44\x84\x43\x24\x92\x64\x96\xdb\x7f\x58\x48\xc7\xc6\x21\x06\x8e\xfc\xfa\x91\xbf\x71\x41\x78\x64\x04\x75\x6b\x2a\x97\xa9\xf1\xa7\x33\x70\x17\xb2\x62\x7e\xe2\x29\x12\x74\x0a\x0e\x06\x30\x68\x6c\x78\x0a\x7a\x84\x2b\x99\xc4\x27\x0d\x07\x09\xc6\xa1\x3d\xd5\xbb\x65\xd6\xe2\x09\x99\x2f\xb8\x17\x62\x8d\xae\x7b\x77\xd7\x8e\x71\xef\x21\x8a\x64\xeb\x43\xd1\x5c\x77\xd9\x8b\xd2\x65\xe9\xd7\x06\x28\xf5\x40\x00\xb5\x48\x04\xfd\xe3\xdb\x89\xd2\x98\xf5\xb1\x13\x0f\xe5\xab\x95\xdd\x35\xe6\x72\x48\x96\xa3\x1d\xc5\xf9\x7d\x81\xa6\x30\x81\xd9\x86\xbf\x28\xa2\x26\xe8\xa6\x3a\xdc\xcb\x3e\x34\xeb\xac\x1a\xfb\x50\x83\x66\x79\x4b\xa1\x88\xe4\x27\x97\x4e\x4f\x67\x14\xa8\xe8\xf1\x24\x09\x59\xa3\x7d\x28\x68\xaa\x7c\xc0\xc0\x1c\xff\x49\x62\xfe\x37\xaa\x1a\x6e\x22\xa2\x00\xf5\xff\x5c\x8c\x6c\x1d\x3d\x31\x50\x51\x1a\xe9\x04\x2f\xe6\xfe\xfa\xbc\x6b\x37\x1f\xcb\x9f\xfc\xc1\x4a\x08\x77\x24\x6c\xf1\xb1\xb3\x27\xb1\x1d\xdc\xd7\xe6\x94\x89\x97\x59\x03\x55\x72\x57\xcb\x1d\xf1\x34\xb5\x80\x5d\x7a\x2a\xe3\x69\x2e\x17\x3c\x2a\x45\xd0\x5b\xfa\xb9\x12\xd1\xd3\x46\x4b\x35\xd8\x16\x05\xfd\x31\x27\x52\x2e\xb2\x9c\xf9\xd6\x1c\x1c\xb9\x17\x9d\x61\xe9\x60\xc6\x17\xc9\x00\x95\x60\x11\x8b\x9e\x5f\x87\x33\xa7\x23\xd7\xbe\xec\x8e\x7d\x95\x11\xfe\x6c\x78\x85\xb0\x4c\x77\xbc\x12\xad\x46\xfd\x68\x2e\x05\xb4\x79\xad\x90\xa3\xe7\x60\x73\x56\x62\xa5\x6a\x1c\x52\x50\x63\x01\x19\xf1\x43\xc6\x70\xcf\x82\xb9\x61\x44\xc6\xd8\xcd\x81\x94\xf2\x35\xbd\x27\xd2\x4c\x87\x9b\x4e\x4c\xd4\x3e\x79\x95\x8d\x02\x86\x10\xcb\x56\x9e\x2d\x0f\x77\x45\x06\xc1\x62\xe3\xd7\x22\x96\x45\x55\x45\xa4\x54\x62\xf5\xdb\x15\xfc\x7f\xdf\x15\x1c\x50\x27\xaf\x79\xff\x6e\x2e\xde\xfb\xed\x04\xfe\xb1\x4e\x60\xe4\xc0\xc2\xaa\x84\x21\x43\x4b\x5d\xbd\xf3\x3f\x3f\x6c\x70\x05\x0b\x7a\x92\x0d\x18\xe7\xef\xe8\x41\x04\x8f\xa5\x2d\x32\xd0\x78\xf4\x36\xba\xdd\xb9\x56\xef\xa3\xf8\xfb\x42\x50\x98\x56\xdb\xbe\x61\xc0\x2d\x0f\x97\x8e\xb9\xa6\xf5\x0e\xd6\xb6\xd7\xfe\xfe\x50\x29\xa7\x3e\x3e\x88\xb1\x8c\x2e\x09\x75\x6d\x2d\xa2\x12\x98\x8c\xed\xb0\x8c\x01\xe7\x22\xcf\xdf\x64\x6e\xd4\xcb\x16\xd0\xa2\x1f\xaf\x64\x96\x7f\xaa\x08\xdc\xec\xa7\x90\xf3\x6a\xb8\x09\xdb\x55\xec\x66\xf0\x8b\xce\x74\xff\x5d\x39\x21\x6f\xdc\x11\x5c\x73\x40\xca\x64\x25\x0d\x4c\xbf\x87\x9c\x57\x5f\xdc\x78\x7d\x41\x57\xfb\x25\xe5\x9b\x8d\x48\x6d\x96\xb9\x06\x04\x00\x7d\x00\x78\x0a\x08\x7c\xac\x04\xaa\x8c\x55\x8e\x54\x63\x4a\x2a\x4d\xc3\xd7\x60\xe8\x4e\x9b\x67\xee\xba\x48\x92\xd6\x99\xdb\x4d\x3b\x7e\xfd\x78\x75\x35\xfb\x34\xbe\x7a\xbc\xec\xa4\xf1\x0e\xbe\xd6\x3a\x26\xae\x27\x34\x26\x5e\x28\xc4\x3c\x56\x58\xa5\x33\xed\xdf\x1a\xef\x2b\x45\x92\x94\x29\xde\xa7\xea\x0b\xb5\x03\x90\x3d\x94\xaf\x31\xe3\xc6\x3a\x07\xae\xfc\x7c\xf8\xda\x17\xd3\xf8\x17\xfc\xed\x09\xf3\x2f\xf1\x1e\x84\x48\x48\xe0\xa0\x79\x5c\x09\x0f\x7c\xc0\x76\x40\x80\x58\xdb\x76\x38\xb6\x88\xc5\x7e\xdb\xe3\x51\x01\x5f\xa0\x88\xad\xf6\xc4\x51\x76\x07\x8e\xdd\x97\x72\xec\xd6\xd9\xf2\x18\x6f\x04\xd0\xee\x08\xa5\x07\x40\x50\xcd\xb3\xf3\x4f\x15\x5e\x67\x4d\x9f\x72\xdd\xde\x27\x36\x21\xec\x45\xc2\xd5\xb2\xe0\x4b\x91\x8d\x98\x7d\xf8\x54\xad\xe5\x72\x05\xcc\x8c\xa4\x7c\xef\x2e\x80\x50\xc4\x5b\x59\x42\x15\x2c\xa1\x54\x53\x45\xef\xa4\x96\xbe\x79\x44\xd4\xfd\xf9\xde\xbd\x0e\x01\x15\xb1\x21\x52\x4f\x50\x53\x85\x93\x8b\xf4\xcf\x36\xa8\x05\xfe\x32\xcf\xab\x4b\x97\x83\xba\x16\x2a\x0c\x1a\x9b\xbe\x84\xf0\xda\x54\xb9\x22\x20\x84\x3c\x86\xea\xfd\x88\x85\xc6\x2e\xed\xb6\x27\x76\x32\xec\x9e\xa0\xbe\x35\xaf\xfa\x83\xcf\x00\xb3\xe1\x66\x03\xa4\xd2\xea\x66\xac\xe7\xd5\x84\x07\x86\xa3\xad\x32\x14\x2a\xbf\x9a\x7b\x63\xdf\x0b\xbf\xd3\x0a\x58\xd0\xc5\x3c\x19\xd0\x25\xfc\x7e\x67\xa7\xd0\x24\x77\x77\xaa\x47\x44\xfb\xae\xb2\xb5\xcc\x32\xed\x7a\xec\x5c\xeb\x96\x79\x39\x62\x6c\xb8\xd4\x29\xfa\xc1\xae\xc1\x28\xa2\x7c\x9f\xf5\xd2\xa3\x5c\xa3\x3a\x44\xd6\xfa\x74\x75\x28\x91\xd9\x5e\xdd\xf1\xfe\x53\xef\x1e\x39\x0f\x81\x0e\xbb\x41\x16\x96\xce\xb9\x92\x81\x6d\x31\x93\x14\x1a\xb4\x9a\x63\x12\xcd\x8b\xd9\x3c\x28\x08\x66\xd6\xff\xc8\x2d\xa2\x91\x9f\xb9\x11\x74\x32\x2a\xd2\xcc\x98\x4b\xb2\x77\x64\xb5\x75\xca\xf8\x54\x59\xb6\x5e\x6b\x8e\xc7\x16\x72\x91\xba\xbf\x62\x09\xcc\x06\xd9\x2e\xc1\x63\xcd\x99\x56\xc2\x5a\xc3\xa9\xb2\x42\x75\x23\xc6\xe7\x99\xd5\x7f\xe3\x6a\xeb\x44\xd9\xa4\x53\xdc\xe0\x8a\x01\x96\x65\xb7\xcd\xab\xb8\x01\xa5\x73\xfe\x9f\xcc\xff\xfd\xfd\x9f\xfe\x7f\x00\x00\x00\xff\xff\x1e\x51\x0d\xc2\x7d\x56\x04\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x79\x73\x24\xb7\x95\x2f\x0c\xff\x3f\x9f\x02\xb7\x7d\x23\x5a\xb2\xb9\x48\xf2\x8c\x5f\x0f\x27\x6e\xbc\x4f\x89\xac\x6e\xf1\x8a\x4d\xd2\x5c\xa4\xd1\x33\xe5\x28\xa1\x32\x51\x55\x30\x33\x81\x34\x80\x24\xbb\xec\xf0\x77\x7f\x02\x07\x4b\x22\xb7\xaa\xac\x85\x64\xb1\x95\x33\x11\x16\xbb\x32\x13\xeb\xc1\xc1\x59\x7f\xe7\x9f\xff\x86\xd0\x3b\xf9\x84\x67\x33\x22\xde\x9d\xa0\x77\xdf\x1d\x7d\xf3\xee\x40\xff\x46\xd9\x94\xbf\x3b\x41\xfa\x39\x42\xef\x14\x55\x09\xd1\xcf\xa7\xc9\x42\x11\x1a\x27\xc7\x92\x88\x47\x1a\x91\x63\x1c\xa7\x94\x1d\x65\x82\x2b\x0e\x1f\x22\xf4\xee\x91\x08\x49\x39\xd3\xaf\xdb\x3f\x11\xe3\x0a\x49\xa2\xde\xfd\x1b\x42\xff\x82\xe6\x65\x34\x27\x29\x91\xef\x4e\xd0\xff\x98\x8f\xe6\x4a\x65\xae\x01\xfd\xb7\xd4\xef\xfe\x15\xde\x8d\x38\x93\x79\xe9\x65\x9c\x65\x09\x8d\xb0\xa2\x9c\x1d\xff\x4d\x72\x56\xbc\x9b\x09\x1e\xe7\x51\xc7\x77\xb1\x9a\xcb\x62\x8e\xc7\x38\xa3\xc7\x8f\xdf\x1e\xe3\x48\xd1\x47\x32\x4e\x70\xce\xa2\xf9\x38\x4b\x30\x93\xc7\xff\xa4\xb1\x9e\xe3\xdf\x48\xa4\xfe\x05\xff\x88\x79\x8a\x29\x33\x7f\x33\x9c\x92\x7f\xf9\x76\x10\x7a\x37\x23\x2a\xf8\xa7\x9e\x6d\x9e\xa6\x58\x2c\xf4\x8a\x7c\x20\x2a\x9a\x23\x35\x27\xc8\xf4\x83\xdc\x12\xf1\x29\xc2\xe8\x44\x90\xe9\xc9\xaf\x82\x4c\xc7\x6e\xa1\x8f\xcc\x02\x5f\xc0\x68\xae\x13\xcc\x7e\x3d\xb2\xcb\x04\x2d\xc7\x44\x46\x82\x66\xca\xae\xf7\x0d\x51\x82\x92\x47\x12\x76\x60\x26\x82\xf4\x44\x7c\x67\x32\x23\x11\x9d\x52\x12\xa3\xc9\x02\x51\x96\xe5\x0a\x09\xf2\xf7\x9c\x48\x85\xa6\x34\x51\x44\xc8\x52\x2f\x3c\x23\x02\x56\xf0\x3c\xd6\xbd\x7c\x24\x6a\x00\x6d\x17\xa3\x0a\xdf\x16\x44\x66\x9c\x49\x22\x4b\x8b\x80\xd0\xbb\xef\xbe\xf9\xa6\xf2\x53\x7d\x06\x03\x24\xf3\x28\x22\x52\x4e\xf3\x04\xb9\x96\xc2\xc1\x98\x05\xd5\xe4\x83\x6b\x8d\x21\xf4\xee\x7f\x0b\x32\xd5\xed\xfc\xee\x38\x26\x53\xca\xa8\x6e\x57\x1a\x2a\x0d\x46\x5b\xfa\xea\x5f\xff\xd6\xf4\xf7\xbf\x82\x19\x65\x58\xe0\x94\xe8\x65\xf1\x74\x65\xfe\xaf\x32\x17\x4d\x09\xba\xf3\x82\x5a\xaa\x03\xaf\xcc\xf6\x12\xa7\x44\xef\xbc\xde\x2e\xfb\x05\xfc\x2d\x88\xe4\xb9\x88\x08\x9a\x90\x84\xb3\x99\x44\x8a\xd7\xd6\x80\x42\x0b\x9a\x88\xab\x4f\xf4\x56\x52\x41\xf4\x5e\x29\x91\x93\xca\x53\xb5\xc8\x60\x90\x52\x09\xca\x66\xe1\x52\xfc\xeb\xa0\xd3\xd4\x0c\xed\xaf\x31\x33\xf3\x41\xeb\xc4\x46\x6c\xe0\x5e\x89\x30\x43\x13\x82\xf4\x89\xa7\x31\x11\x24\x46\x58\x22\x8c\x64\x3e\x91\x44\xa1\x27\xaa\xe6\x94\xe9\x7f\x1b\xf2\x8d\xdc\x9a\xed\xcf\xda\xc0\x9f\xcb\x57\xe6\x5e\x12\xa1\x07\xfe\x48\x63\x12\xa3\x47\x9c\xe4\x04\x4d\xb9\x28\x2d\xcf\xd1\x88\xdd\xcd\xf5\x3a\xa4\x13\xca\xe0\xe4\xe9\xb5\x74\x14\xf2\x07\xb7\x5c\x7f\x40\xba\x3f\x94\x33\xfa\xf7\x9c\x24\x0b\x44\x63\xc2\x94\x3e\xd7\xb2\xda\xda\x1f\x38\xf4\x8f\x13\x74\x88\xf4\x3a\x13\xa1\x60\xbd\x39\x53\xe4\xb3\x92\xe8\x10\x25\xf4\x81\xa0\xf7\x17\x54\x2a\x34\xb8\x3e\x7f\x7f\x80\xde\x5f\x14\x8c\x43\xbe\x7f\x81\x15\xf6\x7f\xff\x35\x38\x7a\x0a\xcf\xaa\x87\xee\xdd\x40\x9f\xe6\x5b\x73\x01\x15\x2d\xfc\xf5\xdf\xc2\x76\xec\x7e\x2d\xe7\xea\x05\x4b\xb7\xfc\xbc\x2b\x17\x87\x65\x2a\x33\x70\xa9\x77\x68\x5b\xfe\x5d\xbb\x1d\x1a\x98\xb7\xdc\x92\x7b\xeb\xb1\x57\xd9\xb7\x7c\x5b\xfc\x5b\x4f\xe1\xb9\x79\xf8\x36\x0c\x1c\x2b\x38\x59\x98\x32\x73\x10\xfd\xb9\x14\x52\x9f\x45\x77\x42\xf6\x84\x6d\x6d\xc3\xcf\x83\x99\x05\x2c\xdd\x71\xea\x60\x55\xf6\x70\xde\x09\x4d\xe9\xaa\xfd\x3d\x67\xb1\x16\x1e\x2d\x43\x65\x79\x3a\x21\x42\x2f\x83\x63\xad\x30\xdb\x89\x66\xb5\x2a\x17\x8c\xc4\x1d\xa6\xf9\xf7\x9c\x88\xc5\x92\x79\x4e\x71\x22\xdb\x26\x4a\x99\x22\x5a\x52\xaf\x3c\x9e\x72\x91\x62\x65\x5f\xf8\xd3\xbf\xaf\xbb\x10\x8a\x3f\x90\x55\xfb\x7f\x6e\x76\x33\xc2\x12\xc8\x20\xcd\x13\x45\xb3\x84\xa0\x0c\xcf\x88\xb4\x2b\x92\x27\x4a\x1e\xc0\x6b\x5a\x3b\x20\xe2\xd0\xdf\x72\xd0\x83\xbb\xdd\x73\x09\xbf\xa0\xa9\x67\x76\x8c\x7c\x56\xd0\xd2\x88\xc1\xfd\x0e\x4b\x14\xde\x5a\xcf\xb0\x94\x9b\xd1\x8c\xe4\x42\x8d\x27\x8b\xa3\x07\x52\xeb\xb7\x95\x72\x30\x43\x58\x29\x41\x27\xb9\x22\x7a\xde\xba\x0d\x77\x3f\x03\x7b\x34\x42\x40\x17\xd6\xf0\x7a\x13\x8e\xa9\x20\x11\xcc\x6d\x9d\x03\xe3\xbf\xd2\xf3\xd6\x9a\xd8\xc2\xcc\xfe\x81\x2c\x40\xe6\x69\x58\x01\xbf\xe5\x23\x36\x62\xe8\x10\x9d\x0d\x6f\x4f\x87\x97\x67\xe7\x97\x1f\x4f\xd0\xf7\x0b\x14\x93\x29\xce\x13\x75\x80\xa6\x94\x24\xb1\x44\x58\x10\x68\x92\xc4\x5a\xae\xd1\x83\x21\x2c\xa6\x6c\x86\xb8\x88\x89\x78\xbe\x65\xac\x3c\x25\x2c\x4f\x2b\xf7\x0a\xfc\x5e\x8c\xbe\xf2\x85\x16\x63\xfc\xa3\xd2\x93\xbf\xd6\x16\x18\x66\xac\xfb\x0e\x5a\x7b\x31\xc1\x29\x9a\xd3\x24\x16\x84\x1d\x2b\x2c\x1f\xc6\xe4\x33\x89\x72\x73\x27\xff\xb3\xfc\xc3\x58\x4b\xbf\x3c\x26\xe5\x5f\x4a\xff\x28\xc4\xad\xb5\x3f\xf5\xfa\xf6\xda\x5f\x82\x76\xde\xed\x3b\xf8\x85\xc6\x8d\x6f\xc3\x2f\x2b\xe6\xe0\xde\x59\x32\x58\xf7\x4a\xeb\xa8\xdc\x0b\x56\xd8\x6b\x7c\x47\x10\x25\x16\x63\xac\x14\x49\x33\xb5\xa6\xe5\x01\xa3\x44\xcb\xae\xcb\x64\xd5\x4b\x1e\x93\xa1\xeb\xef\x57\x2b\x82\x1a\x61\xd3\x70\xad\x29\x11\x84\x45\xa4\xbd\x85\x3b\x2c\x1f\x8a\x16\x56\x0b\xbc\x40\x63\x48\x2f\x3f\x2a\x08\xac\xd6\x71\x21\xf6\xea\x25\x29\xde\x5c\x25\xec\x96\xe6\x23\x3f\x70\xa1\x87\xf7\x16\x04\xde\xd2\xc0\x5f\x42\xe6\xdd\xf4\x44\x7f\x71\x56\x8e\x0d\xf9\x53\x6f\x13\xd9\x7e\x25\xbb\x5a\x50\xb8\x40\x72\x21\x15\x49\x57\xda\x52\xde\xce\x42\xd8\x0b\x68\x5f\x07\x5c\xb9\x03\x7f\x03\xa7\xbe\x7c\xa3\xf7\xc7\x7b\x8d\x25\xdb\x95\x25\x74\xdf\xe7\xe9\xbc\x5d\xcb\xa7\x7a\xeb\xb6\x2f\x70\xf7\xbc\x89\x69\x96\x64\xcd\x5d\x0f\xf2\x99\xcc\x19\xad\x7b\xe5\x56\x7b\x0c\x03\x58\xa1\xc8\x96\x6d\xe9\xfe\xfc\xe9\x4f\x43\x0b\x90\x31\xf7\xa9\x39\x95\x81\x31\x0c\x45\x5c\x18\x59\x30\xb6\xe7\xdd\xe8\xb2\x83\xbb\xc1\xed\xf0\xee\x04\x0d\x50\x8c\x15\xd6\x07\x5c\x90\x4c\x10\x49\x98\x02\x3b\x81\xfe\x5e\x2d\x50\xca\x63\x92\x18\x8d\xf6\x83\x96\xac\xd1\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x54\x22\x9c\x48\x8e\xb0\x23\x2b\x12\xbb\x26\x30\x8b\x1d\x6b\xc1\x28\xe2\x69\x46\x13\xef\x47\xf0\xc6\x1b\xca\x62\xfa\x48\xe3\x1c\x27\x88\x4f\x34\x57\xd1\x1a\xf8\xf0\x91\x30\x95\xe3\x24\x59\x20\x9c\x24\xc8\x76\xeb\x5e\x40\x72\xce\xf3\x24\xd6\xed\xba\x51\x4a\x9a\xd2\x04\x0b\xad\xe2\x9b\xd1\x5e\xd9\xb6\xd0\xdd\x9c\xf8\xb1\xc2\xb8\xf4\x6a\xa6\xf8\x81\x48\x44\x15\xca\xb8\x94\x74\x92\x14\x67\xfe\xfe\x1c\xc1\xb8\x4f\x2f\xce\xc1\x5e\x10\x29\xc4\x0d\x0f\x75\x9d\x5b\xfb\x90\xeb\x31\xc5\x8c\x11\xe8\x98\xab\x39\x11\xb6\x7b\xfb\xf2\x6b\xab\xfe\xf7\x97\xb7\xd7\xc3\xd3\xf3\x0f\xe7\xc3\xb3\xba\xee\x7f\x37\xb8\xfd\xb1\xfe\xeb\xcf\x57\x37\x3f\x7e\xb8\xb8\xfa\xb9\xfe\xe4\x62\x70\x7f\x79\xfa\xc3\xf8\xfa\x62\x70\x59\x7f\x68\xc9\xaa\xb3\x19\x21\x1c\xd9\x9a\x67\xab\xb7\x99\x3e\x97\xcd\xf4\xe0\xcb\x35\x9a\x5a\xa7\x54\x77\x83\xa9\xb7\x51\xd8\x2f\x51\x86\xa5\x34\x92\x91\x19\xc1\xd1\x88\x7d\xe2\x42\x33\xb0\x29\xd7\x3c\x42\x4b\x4f\x4a\xe4\x91\xa2\x6c\xe6\x3f\x3a\x41\xa3\xfc\x9b\x6f\xfe\x18\x5d\x50\xf6\x00\x7f\x91\x7d\x5c\x9c\xde\xa2\xdc\x5b\x94\x7f\x5b\x16\x65\x2d\xfa\x1c\x87\x86\xe4\xdd\x06\x57\x69\xe1\x02\x7c\xe2\x5a\x94\xe0\xb9\xd2\x7f\xea\x2e\x81\x3c\x96\x84\x58\x75\x33\x58\xfa\x08\xab\x96\x3e\x04\x4f\x41\x90\xfb\x4c\x25\x30\xa3\x27\x2e\x1e\xa6\x09\x7f\xea\x66\xae\xfc\x48\x94\x1f\x86\x16\x9c\xde\x82\x95\xf2\x67\x3b\x43\x3f\xf0\x8f\x44\xe9\xb1\xdf\xd8\x5e\xfa\x60\xab\x3e\xd8\xea\x75\x83\xad\xf6\xca\x54\xf8\xfc\xac\xb5\x6c\x57\x34\xfc\xb5\xc5\x0f\xd7\xea\x66\x6b\xf1\xa2\x05\x4e\xb2\x17\xe1\xc9\x65\x57\xd4\x2e\xf9\x72\xd9\xd9\xb4\x82\x27\x97\x86\xf1\x56\xf8\x72\x69\xd0\x2f\xcf\x93\x7f\x13\x7e\xa2\xde\x0d\xb4\xe1\x42\xbd\x49\xd6\xdd\xf1\x56\x7a\x31\x27\xce\xf3\x5f\x25\xb5\x98\x8f\x75\x82\x3c\xd6\x88\xea\xe8\x1c\xc6\xb1\x22\x6e\xa3\x31\x50\xa3\x29\x32\xa3\x1e\x8a\xd1\x18\x7b\xb1\x5d\xb0\xc5\xa6\xb7\x5e\xf7\xf0\x89\x75\x6f\xbd\xee\x81\x13\x1f\x89\x2a\x0d\xe3\xad\xdc\x7a\xa5\x41\xbf\xfc\xad\xf7\x1b\x8d\x97\xe8\x03\x24\x9e\x71\xe9\xbe\xf4\xbb\x72\x7f\x43\x20\x7e\x03\x31\x0f\x7d\x90\xc3\x5a\x6b\xf4\x65\x45\x35\x7c\xa9\x61\x0c\x6f\x33\x6e\xa1\x0f\x54\xe8\x03\x15\x5e\xc3\xa3\xf4\xf6\x02\x15\x9e\x55\xf1\x25\x9a\xac\x24\x58\x51\x43\xe5\xe6\x5d\xc6\x65\xbb\xbe\x17\x3a\xaf\x1b\xf4\x3a\x68\xb3\x6c\xcd\x04\xea\xfd\x15\xcd\xb1\x44\x3c\x8a\x72\x51\x71\xd1\x56\x4f\xf9\xa9\x20\x58\xe9\x23\x52\x36\x5c\x22\x68\x19\x09\x12\x71\x01\x4e\x4a\x8c\xb2\x39\x96\x04\x29\x81\x99\xa4\xab\xb4\x3c\xd3\x2a\x8c\x4b\xb7\xf3\x16\x14\xbc\xfa\x22\xbe\x94\x7a\x37\xe1\x71\xed\x40\x9a\xb3\xda\xf4\x64\xf9\x4d\xb2\xb3\xa9\x43\xda\x6f\x97\x99\x3f\xe3\x51\xd1\xb7\xd6\x8e\x8f\x4a\x49\x8d\xdf\xf4\xa8\x94\xad\x1d\x3b\x39\x2a\x30\xae\xb7\x72\x54\xea\x8b\xf8\x9b\x39\x2a\x4d\x53\xdf\x87\xa3\xe2\xc2\x01\x76\x7c\x5c\x6a\x3e\xf8\x4d\x8f\x4c\x3d\x5c\x61\x27\xc7\xc6\x8f\xef\xad\x1c\x9d\xe6\x05\xfd\xcd\x1c\x9f\xb6\xe9\xbf\xee\x11\xf2\x7e\x88\xce\x87\xe7\x4e\xd0\xd9\x8c\x08\xa3\x19\x45\x9a\x14\x57\x43\x2d\x15\x96\xf7\xcd\x0e\xcc\xea\xd3\xe0\x7b\x78\x0b\x27\xc1\x0f\xd6\x8c\xfd\x37\x73\x04\x6a\xf3\xde\x13\xda\x3f\xd6\x9c\xf8\x11\xd0\xda\xba\x9d\x81\x1b\x02\x84\x0f\x17\x48\x26\xc8\x23\xe5\xb9\x4c\x16\x87\x22\x67\x4d\xdc\x1e\x8c\x04\x4f\x34\x49\x10\x67\xc9\x02\x49\x85\x85\x72\x8f\xd9\xcc\x78\x94\xf4\x61\x4a\xb0\x54\xe8\x81\xf1\x27\x86\xa6\x98\x26\xb9\x20\x28\xe3\x94\xa9\xa3\x11\x3b\x67\xe8\xc6\x8c\x11\x34\xef\x03\x94\x4b\x7d\x04\x23\xcc\x18\x57\x28\x9a\x63\x36\x23\x08\x33\x07\x5d\x53\x50\x06\xe2\x02\xe5\x59\xac\x0f\x96\xee\xa2\x62\x63\x2a\x0e\xd8\x88\xdd\x81\x15\x43\x22\xf2\x59\x09\x92\x92\x64\xa1\xfb\xd0\xb4\xaf\x38\xb2\xeb\x63\x86\x6a\x0d\xe2\x44\x08\x2e\x24\xe8\xec\x93\xc5\x3f\x30\x53\x94\x11\x04\x6a\xa6\x34\xc0\x47\x87\xe8\x82\x4b\x88\xc9\xfe\xf1\xcf\x12\x45\x49\x2e\x15\x11\x07\x68\x92\xcf\x24\xa2\x0c\x65\x09\x56\x53\x2e\x52\x3d\x42\xca\xa4\xc2\x13\x9a\x50\xb5\x38\x40\x29\x8e\xe6\xa6\x2d\x58\x03\x79\x30\x62\x31\x7f\x62\x52\x09\x82\x7d\xef\xee\x21\xfa\x2a\x7c\x66\x08\x40\x7e\x7d\x00\x86\x7b\x9a\x66\xc9\x22\x1c\x7e\x90\x08\x0d\x7b\xa2\x1b\x21\x31\x9a\x90\x08\xe7\xd2\x1a\x76\x94\x58\x20\xf2\x79\x8e\x73\x09\x7b\xa7\xa7\x67\xad\x1e\x11\x4f\xb3\x84\x28\x82\xe8\x14\x29\x41\x49\x8c\xf0\x0c\x53\xbd\x74\xb7\x64\x49\xe2\xb6\x27\x7a\xbb\x81\x96\xea\x7f\x05\xcb\x47\xca\x05\x41\x31\x51\x98\x26\x72\xb9\x53\xf2\x45\x09\x0e\x3d\x3b\xbd\xa1\xfd\x25\x37\xb4\xd7\xd4\xb6\xe4\x26\xb4\x3b\xd6\x5f\x85\x6f\xe9\x2a\x2c\x73\x85\xbd\xb8\x0b\x0d\x48\xc4\x0e\x04\x42\x66\xad\xe2\x11\x4e\xb6\x94\x0d\x6f\xec\xa0\xd6\x96\x0e\xdd\x87\xfd\xa1\x78\x5b\x87\xc2\xec\xda\xfe\x9c\x8a\xb6\x84\x8a\x9d\x23\xc5\xac\x83\xf1\xb2\x24\x23\x42\xa2\x14\x2b\x7d\xb1\xcd\xec\x15\xdd\x11\xc5\xb0\x00\x75\x79\x53\x07\xe5\x25\x90\x5c\xbe\xec\x88\x85\x3e\x52\xe1\x37\x88\x40\xbb\x37\x09\x8c\x7d\x0e\xf4\x33\xe5\x40\x53\xd9\xe7\x40\xf7\x39\xd0\x5d\x17\xa8\xcf\x81\xee\x73\xa0\xdf\x6c\x0e\xf4\xb3\xa6\x3f\xef\x2e\xc9\x79\x37\x99\xcc\x6f\x4a\x3a\xef\x25\xf3\x5e\x32\xef\xd3\x95\xfd\xd4\x76\xc5\x05\xdd\xd7\xef\x62\x92\x10\x45\xda\x0d\x74\x44\xa4\x5a\xe1\x30\x37\x3c\x65\x5a\x14\x9c\x09\x22\xe5\xb6\x3c\xcd\x37\x1c\x96\x57\x68\xf0\x47\x14\x28\xb3\x9e\x2c\xc1\xae\xb3\x8c\xd9\xf9\xb6\xdf\x26\xcb\xf3\xc3\xef\x21\x1b\x7a\x1e\xd8\xf3\xc0\x4d\xa6\xb6\x3f\xe6\xe8\xe0\x30\xbf\x94\x3d\xda\xf3\xf6\x2c\x6f\x17\x4e\xef\x8d\xa3\xb5\x60\xb4\x86\xc2\x21\x2b\x95\xfb\xc3\x6d\xe9\x7c\x4b\x5e\xbf\x4e\x5f\xcb\xf8\xba\x69\xe7\x6d\x32\x75\x33\xf6\x9e\xa3\xf7\x1c\xbd\xe7\xe8\x6f\x9b\xa3\xbb\x93\xfc\xaa\xee\xc5\xa0\x70\xda\x98\xc6\xdb\xd4\x4e\xeb\x5e\x87\x02\xa7\x24\x1e\x42\x96\x98\xcf\x71\x13\xbf\xea\x4f\xc2\xaa\x68\x2e\x1f\xac\xbb\x03\x32\xfc\xba\x58\xf5\x52\x29\xab\xcd\xfc\x91\x45\x81\xb2\xf3\xf8\x4d\xb8\x24\x1b\x57\xf8\x0b\x29\xae\xb6\x1f\x5c\xe4\xc5\x6b\xab\xed\xc7\xb4\x7b\x17\x59\x5f\x5a\xad\x77\x02\x75\x9c\x70\xef\x04\xda\x5f\x27\x50\x87\x6d\x7c\x16\xcf\xee\x0b\x1f\xcf\x97\x12\x1d\xbb\x67\xee\xb8\x04\x1b\x16\xa3\x3c\x4b\x38\x8e\x3b\x56\x47\x0f\x24\xba\x0e\xe9\x3b\x2c\x46\x82\xcc\xa8\x54\x44\xe8\x7d\x69\x14\x0c\x57\xe7\xf3\xbc\xd5\x32\xe8\x9d\x23\x36\xc3\x6e\xdf\xfd\x7b\x87\xe1\xdf\xd8\x3b\x1b\x38\xd1\x04\xc7\xbe\x3e\x31\x88\x6f\x29\x5e\xa0\x39\x7e\x24\x2e\xca\xfc\x11\x27\x34\xc6\xd5\xb5\xae\xcc\x70\xd9\x80\xfe\x73\xbd\x01\xe1\xf2\x70\x7c\x41\x3b\x59\x8e\x02\xb6\x00\x15\xf0\xce\x5c\x6b\xe5\x89\x20\x38\x5e\xa0\x09\x21\xcc\x93\x4d\xc3\x7d\xd2\x32\xe6\x9d\x08\xce\xaf\xae\x95\xd6\xa9\x67\x5f\xd4\xd2\x17\x8c\x7b\x6d\xe6\x37\xdb\xeb\xa0\xdb\x2b\x9e\xf2\xbb\xb7\xc5\x82\xfa\x58\xd8\xde\x36\xf9\xfa\xb6\xc9\x3e\x16\xb6\x57\xf4\xf7\x4c\xd1\xef\x63\x61\xfb\x58\xd8\xde\x0c\xb2\x7c\xda\xbd\x19\xe4\x8b\x88\x85\xed\x24\xc3\x6f\x18\x0d\xfb\xc6\xa5\xf9\x5e\x98\x77\xef\xf5\xc2\x7c\x2f\xcc\x7f\xa1\xc2\xfc\x7e\xac\x70\x2f\xc9\xf7\x92\x7c\x2f\xc9\xf7\x92\x7c\x2f\xc9\xef\x7c\x19\x7b\x49\xbe\x59\x92\x87\xbf\x5c\xb1\x9d\x75\xc5\xfa\x35\xc5\xf9\xb5\xd3\xdd\xd6\x77\x06\x7e\x24\xea\xad\x7a\x02\x7b\xa9\xbd\x97\xda\xf7\x5b\x6a\xdf\x9b\x09\x7d\x79\x85\x32\xfa\x52\x13\x7d\xa9\x89\xbe\xd4\xc4\x33\x97\x9a\x70\x5f\x77\xc8\x91\xb2\x87\x4b\x61\x95\x4b\x83\x55\x5c\x04\x9b\x74\x12\x7b\x3a\xa4\x46\x55\x7a\x58\x2d\xf7\xa0\x81\x42\x29\xd7\xba\x1b\x23\xa5\x77\x1c\x83\x33\x81\x35\x33\xfa\x48\x18\x72\xc9\x01\x07\xf6\x1a\x3b\x00\x63\xca\xbf\xfc\xe1\x33\xc9\xb7\x58\x21\x8c\x14\x4d\xc9\x11\x3a\x9f\x1a\x6e\x11\xe9\xd3\x25\x89\x92\x95\x68\x2c\x43\xf9\xf0\x11\x8b\x8b\xb1\xba\xbe\x69\x11\x9c\x63\x5e\x3b\x70\xcc\x36\x4f\x94\x61\xbd\xae\x71\x40\x1a\x9d\x78\x0e\x05\x07\x2d\x25\x22\x71\x5f\x96\xba\x75\x2f\xa7\x38\xd6\x8c\x21\x18\x42\x91\x25\x1c\xbe\x0f\x77\x3a\x95\x3e\xbc\xa8\xf4\xbd\xf9\x1a\xe0\x4a\x01\x5e\x14\x60\xd5\x3b\x0d\x63\x0e\xd1\x6f\x5a\xc4\x8b\xf3\x84\x20\x2c\x25\x8f\x28\x06\x35\xc6\xc8\x00\x88\x2a\x67\x69\x70\x2f\xb9\xae\x63\x2a\xf1\x24\x21\xb1\x5d\x63\x52\x44\x3b\x2d\x1d\x39\x95\x68\x42\xf4\x12\x6b\x36\x55\x5e\xfd\xb9\x91\x40\x1a\x46\x13\x0c\x85\xd4\x47\x42\x98\x19\xc8\x12\x09\xda\x10\xe7\x5b\x15\xa2\xfb\x8c\x3b\xff\xb4\x17\xa9\x7b\x91\xfa\x37\x2a\x52\xef\x51\x84\xe6\x5e\x24\x0e\x82\x0f\x54\x73\xfe\xb1\x37\x6c\xca\xae\xb6\x9e\x0b\x2a\x95\x44\x51\x2e\x15\x4f\xdb\x25\x9f\x4f\xae\x87\x81\xef\xe0\x94\xb3\x29\x9d\xe5\xe6\x6e\xf9\xd5\xca\x26\xfe\x44\x17\x6a\xca\x22\x23\xdd\x0c\x43\xde\x6e\xbd\xaa\xb3\xc6\x7c\xc4\x06\x27\x6f\x43\x3b\x6f\xe2\xb6\x6b\x1e\xfa\x4b\x5d\x7a\xeb\x28\xab\x85\x7d\xdc\x6a\x9a\x5a\xbf\x18\xdf\x0c\x6f\xaf\xee\x6f\x4e\x87\x27\x68\x90\x65\x09\x35\x2e\x2b\x43\x61\xf4\x1f\x7a\x52\xa6\x6a\x94\x27\x11\x2b\x10\x19\x30\x77\xf0\x91\x69\x7d\x10\x1d\xa2\xd3\x8b\xfb\xdb\xbb\xe1\x4d\x4b\x83\x96\x24\x00\x71\x80\xa4\x59\x02\xf2\xd1\x43\x3e\x21\x82\x11\x2d\xe1\x5b\xc8\xf7\xc2\x73\x66\x1a\x1d\xfe\xf7\xf0\xf4\xfe\xee\xfc\xea\x72\xfc\x97\xfb\xe1\xfd\xf0\x04\x39\xda\xd2\xcd\xea\x71\xe9\x51\xc4\x0b\x86\x53\xad\x75\x97\xcb\x5b\xfd\x3d\x27\x39\x88\x63\x74\xc6\x52\x02\x95\x18\x4a\x2d\xba\x01\x5f\x0c\xbe\x1f\x5e\x94\x5b\x9e\x93\x10\x87\x1e\x25\x78\x42\x12\xeb\xca\x03\xef\x94\x3e\x3f\x01\x62\xbf\xf1\xf1\xe5\x66\x55\xff\x72\x3f\xb8\x38\xbf\xfb\x65\x7c\xf5\x61\x7c\x3b\xbc\xf9\xe9\xfc\x74\x38\xb6\x9a\xd4\xe9\x40\xf7\x5b\xea\xc9\x2a\x5c\xe8\xef\x39\x4e\xb4\x46\xce\xa7\x0e\x99\x1e\x3d\xcd\x09\x43\x39\x03\x8a\x33\x6a\x3e\x68\x25\x21\x2c\x8f\x99\xd1\xf5\xc5\xfd\xc7\xf3\xcb\xf1\xd5\x4f\xc3\x9b\x9b\xf3\xb3\xe1\x09\xba\x25\x09\x28\xc2\x6e\xd1\x61\x17\xb3\x24\x9f\x51\x86\x68\x9a\x25\x44\xaf\x06\xb6\x38\x10\x73\xfc\x48\xb9\x28\x69\x2b\xb0\x8e\xc0\x0a\xa0\x7d\xa7\x70\x8e\x83\xa5\xbb\xba\xfc\x70\xfe\xf1\x04\x0d\xe2\xd8\xcf\x41\x42\x1b\x25\xca\x71\x68\x42\x87\x35\x34\xa1\x08\x9b\x80\x10\x28\xd0\xfe\x48\x84\xa0\x31\xa9\xd0\xd1\xe0\xf6\xf6\xfc\xe3\xe5\xa7\xe1\xe5\x1d\xac\x98\x12\x3c\x91\x68\xce\x9f\xc0\x0b\x04\x33\x04\xe7\xd0\x23\xa6\x09\x74\xe6\x36\x8b\x33\xf4\x34\xa7\xe0\x39\x84\x0a\x05\xbe\x67\x63\x93\x10\x79\x3d\xa9\xe2\xa5\xb5\xfe\xd2\xc1\xab\xab\xea\xd5\x93\x54\x7f\xa3\x72\x2c\x96\xbd\x50\xa2\xf2\xfa\x8b\xab\xa8\xb5\xfe\x45\x85\xdc\xda\x0d\x14\x35\x7a\x69\x9f\x69\xb1\xd7\x9d\xed\x13\xe5\x35\x7c\xb1\xdb\x5b\x33\xde\x78\xec\xec\x54\xc7\xff\x2c\x31\xe0\x7f\xed\x30\x5a\xcb\x24\xe8\x2c\xc5\x2e\x0c\xb2\xd5\x7f\xb5\xd7\x6c\xc7\xcb\x3b\xf8\xb2\xe9\xc3\xba\x1f\x27\xf8\xe0\x2d\xdc\xca\xe1\x70\xf7\xe8\x06\xbe\x09\xe5\x2c\x27\xae\xa7\x44\xe1\x18\x2b\xac\xf9\xda\x8c\xa8\x23\x74\xc5\xe0\xd9\x1d\x96\x0f\x07\xc8\x15\x1e\x43\x5c\xa0\x42\x90\x7d\x81\x04\xf7\x37\x62\xc0\x5c\x5f\xb9\xea\x8d\x04\xbd\x91\xa0\x79\x65\xfa\x68\xb9\x96\x15\xde\xd5\x8d\xba\x96\xcd\x7f\x77\x17\x5f\x60\xe2\x77\x81\x2f\x15\x1b\x6d\xe9\x46\x5c\x69\x8f\x7d\xbb\x97\xe1\xcb\x5a\x64\x77\x7a\x35\x9a\xba\x64\xfd\xbd\x67\xfe\xaf\xbf\xf7\xfa\x7b\xaf\xbf\xf7\xf6\x60\x85\x5f\xdd\xba\xdd\xc0\xdd\x5f\xd5\xbc\xbd\x4a\x41\xde\x18\x26\xaf\x50\x88\xd7\x01\xca\xfb\xb5\x0b\x1e\x5e\x83\x59\xbb\xae\x21\x4b\x24\xe7\x58\x98\x82\xdf\x11\x4f\x53\xce\xca\x76\xf3\x03\xe4\x9d\xfc\x60\x94\x5c\x09\xa6\xaa\x29\xbb\xe8\x86\xbe\x0d\x7b\x77\xb0\x2e\x2f\x91\xdd\xb4\x53\x11\xc2\xa4\x0d\xf4\xfa\xf5\x33\xca\x19\x3d\x8e\xe1\x4e\x71\x0c\xf7\x63\xae\xcf\x92\x09\xb5\x7b\x1b\xfc\xdb\xc8\x7e\xea\x01\x0b\xfb\xfc\x9e\x3e\xbf\x07\x7e\xef\x01\x0b\x77\x47\xad\xcf\x2b\xd3\xf3\x98\x8c\x2b\x15\xba\xfc\x3f\xc7\x55\x97\x57\xe9\x49\xe8\xff\x2a\x3d\x28\x12\x9e\xa0\x75\x1a\xef\xb2\xaa\xd7\x25\x8f\xc9\x16\x95\xbd\xf4\x88\x3a\x57\xf5\x2a\xf5\xb5\xe7\x22\xbc\x5b\x26\x23\xca\x97\x06\xfe\xcc\x82\x7c\x0b\xc5\x7c\x89\xd6\xa8\x06\xfa\xef\x4d\x53\x2b\x17\xea\x4b\x2d\x9b\x50\x30\xb8\x37\xe4\xa8\xe9\x76\x0b\xb8\xf0\x9e\x71\xcb\x5d\xd0\xfc\xdc\xdf\x08\xcd\x8f\x9f\x07\xd2\xa6\xfb\x85\x50\x41\xb2\x29\x5f\x05\x9b\x22\xd8\x94\xba\x7f\x1b\x76\x9e\x70\xc4\x2f\x61\xe9\x59\x4a\x4c\x5f\xdc\x35\xb1\xec\x68\xf4\x97\x45\xc7\xe5\xfa\x52\xaf\x8c\x1e\x79\x66\x99\xed\xa5\x87\x76\xe9\x4d\x3f\xfb\x33\xe1\xde\xf4\xf3\xa6\x4d\x3f\xc6\x51\x3d\xce\xb0\x20\x4c\x35\xc8\xe8\xd5\xeb\x04\x5e\x0f\x73\xf8\x9d\xd4\x01\x0d\x18\x69\xd1\x5e\xc8\xfe\xaa\xfa\xb2\x6c\x41\x56\x30\x08\x92\x97\x8e\xff\x59\xfc\xed\xa5\xff\x52\x5d\x8b\x25\xd1\x5e\x06\x34\x5f\xea\x3b\x3a\xb7\x81\x5f\xdb\xa7\x37\xd9\x14\x62\x27\x0a\x26\xe4\x91\x24\xdd\xe2\xc3\x5c\xfa\x02\x89\x0b\x81\xaa\x98\x5d\x43\xdc\x58\x5d\x40\x6d\x8e\x19\xbb\x36\xef\xbd\xad\xe4\xa6\xda\xa0\x5f\x36\x7e\xac\x4e\x56\xdd\x8e\xa7\xdb\x77\x6a\x12\x75\x82\x6c\x10\x2d\xeb\xf2\x69\xb8\xa3\x2e\x19\x1b\x43\xae\x52\xdb\xfd\xf2\x9b\x8b\x2a\x69\xdd\xf9\x57\x8d\x2d\x69\xe2\x3d\x4d\x0c\xa7\x8b\xf5\x78\x57\x49\x94\x8e\xd8\x5a\x62\x3e\xda\xcc\xcd\xcf\xc4\x6c\x3e\x12\xf5\x65\x70\x9a\x8f\x44\xbd\x14\x9b\xd9\x94\xb7\x2c\xe5\x2b\x45\x0d\x9d\xfd\x8b\x5d\x58\x27\xa8\xe6\x67\x33\x49\x1b\x51\xe3\x73\x97\xc3\xa9\x2a\x6e\xb5\xcc\x92\xa0\xde\xe7\x98\xf6\x39\xa6\x7d\x8e\x69\xf5\xa8\xf7\x39\xa6\x7d\x8e\x69\x63\x46\x4c\x4c\x12\xa2\x48\xab\xd4\x72\x06\x8f\x5f\x4b\x6a\x31\xbd\x3f\x97\xcc\x62\x5a\xff\x32\xc4\x16\x33\x97\x5e\x72\xf9\xcd\xe8\x45\x6e\xc3\xf7\x42\x2f\x32\x27\x79\x95\x69\xa6\xf4\x63\x43\x10\xfe\x8b\x9b\x6b\x36\x61\x49\x3b\xb0\xd9\x1c\x3a\xd7\x58\x91\xd3\xd2\xd5\x8c\x73\x06\x5f\xbe\x49\x5e\x55\x1d\x7a\x6f\xd2\x41\xc1\xd6\x3d\x1f\xeb\xaa\x9d\xb9\x6e\x13\xb7\x34\xfa\x76\xe7\xbd\x2f\x2c\xbb\x8d\xee\xf7\x95\x71\x6f\x9c\x27\xf5\x05\x18\xb8\xd6\xe3\xcc\x85\xcd\xeb\x0b\x62\xcb\xbd\xfd\xeb\x95\x73\x77\x6a\xfc\xf7\xcd\x4e\xb7\x37\xf7\xf5\xe6\xbe\xde\xdc\xd7\x9b\xfb\x7a\x73\x1f\xea\xcd\x7d\x2f\x64\xee\x5b\x4f\x82\x2b\x59\x00\xbf\x20\x21\xae\xb7\x06\xf6\x72\xdc\xee\xa6\xbb\xaf\x9a\xf4\x3e\x99\x40\x3b\x23\x69\x17\x49\x84\x2b\x73\x47\xec\xb4\x7f\x5d\x99\x34\x12\x54\x25\x71\xc3\x59\x95\x18\x72\xed\x86\xfd\x76\x98\x9c\x7c\x6e\x3e\xb6\x4d\xf8\xbb\x5b\xf7\x2f\x36\xfa\xbd\xaf\xbb\xda\xb8\x56\x7d\x70\xfe\x92\xc5\xe9\x83\xf3\xfb\xe0\xfc\xbd\x0b\xce\xdf\xb9\x4a\x95\x71\xb9\x0c\x3c\xcc\x5c\xcd\x4b\x51\x03\xdc\x45\x6f\x74\x19\x4d\x0a\xa6\x56\x5c\x4c\xb2\x84\x2f\xc0\xde\xb3\xd4\xf2\x6d\xba\x28\x94\xa0\x65\x97\xbf\x7b\xfb\xba\x1e\x1e\xb1\xe7\xf7\xbf\x1b\xf9\x4b\xa9\x35\xfb\x22\xf6\x16\xf3\xde\x0b\x41\xf7\xf8\x9f\x15\xc8\x8c\x4e\x98\xba\x01\xc8\xc5\xea\x63\x30\x62\xcd\x4f\x82\xf2\x8e\xf6\xd6\x9c\xe4\x2a\xc8\x47\x95\xfa\x00\x64\x44\xa8\x45\xf0\x26\x49\x33\xb5\xf8\xaf\x11\xa3\x45\x15\x38\x3a\x63\x5c\x18\x1e\xa8\x3f\x9e\x63\x16\x27\xfa\xfc\x48\xdf\x4e\x84\x19\xe3\x0a\x84\x13\x98\x41\x8c\x1e\x29\x36\xa2\xcc\xe0\xfa\xbc\x43\x7c\x40\xa7\xb3\x58\x72\xed\xbf\xa1\x93\xf8\xd2\xf5\xd5\x56\xdc\xa2\x1f\x13\x3e\x81\x8a\xa0\x79\xd9\xc4\xa0\x1b\xe8\x9d\xd1\xa5\x9d\x7b\x2d\xe6\xa1\xb0\x7c\xa8\x02\xf9\x94\x61\x1d\xc6\x4b\xa1\x7d\x56\xbc\x5b\x2a\x76\xb1\xfc\xd5\x0a\xfc\x4f\xf9\x99\x05\x04\x82\xc7\x30\xe4\xea\x38\xdc\x8f\x61\x87\xee\xb7\xa2\x65\xf7\x8b\xab\xa8\x0e\x3f\x0a\xa2\xc4\x62\x8c\x95\xd2\x0c\x69\x97\x98\x43\x77\x58\x3e\x6c\x81\x39\x54\xf6\x34\xad\xc0\x1c\x2a\xf5\xb5\xe7\x1c\xab\x84\x39\x54\x1e\xf8\xb3\x73\xac\x8e\xc4\xbd\x82\xb1\xbd\x3d\x78\x89\xae\x47\x75\x8d\x89\xff\x56\xa0\x26\xba\xb1\xae\x55\x46\xe7\xb7\x08\x3b\xb1\x8c\x17\xef\xcd\x08\x2b\xd7\xc1\x97\x78\x72\xcb\x97\x5b\x7f\x44\x97\xad\xd1\x17\x57\xfa\xb5\x22\xb3\xac\x98\xdb\x1b\x29\x01\x5b\x15\xbb\x76\x3d\xaa\xe7\xb1\xbf\x07\xbb\xb1\x4e\x08\xd5\x79\xb9\xe4\x81\x3f\x43\x2e\xa8\xaa\x00\x8d\x37\xa5\xce\xa9\x0c\xf1\x24\x22\x2e\x8c\xe4\x15\xdb\x33\x6b\xec\x89\x06\x9b\xfb\x04\x0d\x50\x8c\x15\xd6\x87\x54\x90\x4c\x10\x49\x98\x32\x5a\xbd\x41\xaa\x4f\x79\x4c\x12\xa3\x51\x1b\xd3\xd5\x19\x56\xf8\x14\x2b\x9c\xf0\xd9\x11\x1a\xc0\x3f\xf5\xc7\x50\x1f\x5e\x72\x84\x1d\xe1\x90\xd8\x35\x81\x59\xec\xcb\xd2\xa3\x88\xa7\x19\x4d\x7c\xb9\x07\xef\x5e\xa0\x2c\xa6\x8f\x34\xce\x71\xe2\xe1\xf5\x47\x6c\xf8\x48\x98\xca\x41\x03\xc4\x49\x82\x6c\xb7\x01\x7a\xbe\x33\x05\xb8\x51\x4a\x9a\xd2\x04\x0b\xa4\xb8\x1d\xed\x95\x6d\x0b\xdd\xcd\x89\x1f\xab\x2b\x25\x80\x52\xfc\x40\x24\xa2\x0a\x65\x5c\x4a\x3a\x49\x8a\x63\x7c\x7f\x8e\x60\xdc\xa7\x17\xe7\xb6\x36\x3b\xe2\x86\x0f\xba\xce\xad\x03\xc3\xf5\x98\x62\xc6\x08\x74\xcc\xd5\x9c\x08\xdb\xbd\x7d\xf9\xb5\xcd\xaf\xaf\x0d\xf9\xde\x6e\xca\x0d\x47\xf6\x7a\x3a\x6b\x67\x85\xb5\xab\xb6\xda\x4d\x55\x6d\xd7\x53\x9f\xc1\xe7\xdc\x5d\x99\xac\xe0\x15\x96\xd5\xc8\x4d\xf1\x0a\x4b\xdd\xbf\x09\xe7\x74\x69\xc4\x2f\x81\x57\xf8\x1b\xd5\x2c\x7b\xb5\xf2\x59\xd6\xed\x4b\xd5\x29\xf7\x5c\xa1\xec\x91\x16\xfb\x2a\x17\x7d\xa8\xc9\x0e\x17\xa7\x0f\x35\xe9\x43\x4d\xbe\xd8\x50\x93\x76\xf5\x84\xc6\x5b\x67\x6c\xae\x59\xd7\xce\x5b\x19\xc4\xaf\x20\x4a\x69\xb1\xbf\x43\xa5\xbb\x26\x6d\xa1\x90\xa5\x4b\x95\xa9\x36\xd7\x1c\xce\xe3\x37\xa1\x32\x34\xae\xe6\x4b\xa8\x0e\x7d\x91\xb4\x9d\x16\x49\xdb\xbb\x69\xf7\x52\x65\x2f\x55\xf6\x82\x53\xc7\x09\xf7\x82\xd3\xfe\x0a\x4e\xaf\xa5\x0d\x7d\x49\x78\xd9\x5a\xc4\x2a\x65\x25\x2d\x8d\x53\x36\xf8\x4a\xe0\xcc\xc8\xb3\x84\xe3\x78\x55\xc4\xd1\xaf\x81\xf8\xb6\x44\xee\x0b\xda\x15\x45\x9c\x72\x45\xfc\x5b\x26\xdb\x99\x06\x74\x8f\x6f\x41\xb4\xd3\xe3\x34\x23\xee\x10\x1d\x19\x76\xf8\xee\xdf\x3b\x0c\xfc\xc6\xde\xc9\xc0\x69\x26\x38\x76\x00\x06\x46\x3c\x4b\xf1\x02\xcd\xf1\x23\x41\x53\x4c\x13\x63\x9f\xa3\x31\xae\xae\x6f\x65\x6e\xcb\x06\xf4\x9f\xeb\x0d\x08\x97\x87\x53\x64\x34\xea\xfb\xc2\x48\x55\x11\x4e\x9c\xbb\x0f\xde\x99\x63\x89\x70\x22\x08\x8e\x17\x68\x42\x08\x0b\x32\xd9\xba\x8e\x79\x27\x82\xf1\xab\x87\x67\x86\x74\xf3\xaa\x51\xde\xc0\x35\x20\x5e\xb1\x14\xf7\xf8\x5c\x8a\x65\x95\x93\x6c\xa1\x43\x6e\xa3\x38\xca\xef\xde\x0a\x73\x79\x09\x35\xf1\x0b\xf6\x22\xf5\x9e\xa2\xe5\x61\x78\x3b\x8a\x6a\x1a\xb1\x3b\xad\x5a\x15\x18\x0c\x41\x8a\x2c\xfa\x83\x5b\xae\x3f\x40\x84\xbe\x8d\xda\x4f\x16\x85\xe6\x2d\xab\xad\x79\xb9\x0c\x1d\x6a\xa1\x38\x22\x42\x19\x90\x07\xa6\xc8\x67\x25\xd1\x21\x4a\xe8\x03\x41\xef\xf5\xe9\x40\x83\xeb\xf3\xf7\x07\xe8\xbd\x29\xaa\x8f\xb2\x04\x33\xf9\x7e\x6f\xb4\x8f\x5e\x45\xef\x93\x8c\x7b\xcf\x4f\x6f\xc0\xe8\x0d\x18\x3b\x5f\xc6\x7d\x32\x60\xbc\xa2\x8c\x6e\x72\x9b\x9e\xa5\x98\xed\xbe\x48\xeb\xbd\xb0\xde\x0b\xeb\xbd\xb0\xfe\xc5\x0a\xeb\xfb\xb1\xc2\xbd\xa4\xde\x4b\xea\xbd\xa4\xde\x4b\xea\xbd\xa4\xbe\xf3\x65\xec\x25\xf5\x8a\xa4\x0e\x7f\x39\xb4\x80\x75\xc5\xf6\xce\xe2\xfa\x66\xd0\x00\xdd\xdc\x74\x16\x1b\xe0\xad\x48\xe6\xbd\x54\xde\x4b\xe5\xfb\x2d\x95\xef\xcd\x84\xbe\xbc\x84\xe0\x3e\xa5\xb6\x4f\xa9\xed\x53\x6a\x5f\x23\xa5\xd6\xf1\x92\x65\x12\xce\xb2\xba\x3e\x3f\x59\xe6\xf2\x15\x65\x51\x92\x83\xa8\xaa\x7f\xfe\x3e\xa7\x49\x8c\x40\x45\xd2\x9a\x2e\xe5\xec\x6b\xa0\x27\x20\x05\x18\xa7\xab\x44\xb1\x5c\x82\xf9\xa9\xc6\xea\xf6\x56\x88\x29\x46\xbb\x29\x0c\xdb\xae\xf6\xd4\x15\xc6\xd8\xa4\xfa\x5f\xe9\x37\xd7\xd0\x1e\xd5\x04\x3c\x70\x62\x89\xe6\x48\x6e\x7c\xcf\x5c\x1d\xb0\xb1\xcf\xb5\x6a\x05\xfe\x6c\x3f\x7a\x5b\xa5\x0c\xea\xa3\xee\x2b\x04\xa2\x60\xd7\xfa\x0a\x81\xcf\x38\x6f\x77\xce\x56\xcc\xdc\xd1\xa8\xb1\x85\xbf\xd1\x69\xbf\x7a\xb0\x63\xfb\x49\x7f\xd5\xd0\xc7\xc6\x8b\xac\x96\x5b\x77\xfc\xcf\xc6\x7b\xea\x15\x0a\x23\xae\x7d\x39\xed\xa4\x44\xe2\x36\xd7\xd3\x47\xa2\xbe\x94\xbb\xa9\x2f\x93\xd8\x97\xd7\xd9\xd1\x74\x37\xba\x7b\xde\xec\x6c\xfb\xa2\x90\x7d\x51\xc8\xbe\x28\x64\x5f\x14\xb2\x2f\x0a\x89\x7e\xe3\x45\x21\xd7\x96\x5f\x77\x50\x1e\x72\x1b\xe9\xd5\x74\xff\xa5\x08\xb0\x7d\x89\xc8\x5e\x86\xdd\xdd\x74\x7f\x5b\x32\xec\x1e\x5a\x50\xf6\xa2\x16\xa6\xb7\xa0\xbc\x3a\x2c\x91\x67\xed\x9d\xa1\x89\xc2\xb8\x17\xff\xf5\x4e\x11\x8a\xdc\xa6\xf5\x28\x45\xf6\xff\x7a\x94\xa2\x1e\xa5\xa8\x65\xd6\x7d\x60\x75\x8f\x52\x84\xfa\xd0\xe1\x3e\x74\x78\x9f\x43\x87\x3b\x6c\x63\x8f\x52\xd4\x51\x64\x7c\x26\xa4\x22\x27\x73\x6d\x85\x56\xd4\x20\x0e\xae\x46\x2c\xfa\xb9\xae\x11\xed\xad\xa8\xe7\xc6\xda\x23\x17\xf5\xc8\x45\xdb\xd2\xce\x5e\x28\xa0\x2f\x88\x60\xd4\xc4\x61\xd6\xc9\x8b\x6e\x60\x2e\xdb\x2a\x98\x6f\x03\xcd\xc8\x8d\xb6\x4f\x92\xee\xd3\x31\xf6\x3f\x1d\x63\xef\x92\xa4\xf7\x46\x53\xe9\xd5\xf9\x3e\x4f\xba\xcf\x93\xee\x8d\x1d\xbd\xb1\x63\xe7\xcb\xb8\x4f\xc6\x8e\x57\x96\xdb\x9f\x11\xd5\x68\x1f\x25\xf8\x5e\x80\x37\xef\xf5\x02\x7c\x2f\xc0\x7f\xa1\x02\xfc\x7e\xac\x70\x2f\xbd\xf7\xd2\x7b\x2f\xbd\xf7\xd2\x7b\x2f\xbd\xef\x7c\x19\x7b\xe9\xfd\xc5\x90\x8e\x9a\x44\xf8\xb5\xd1\x8e\xd6\x74\xf3\x05\xc9\x6c\x6f\x49\x5a\xef\x25\xf5\x5e\x52\xdf\x6f\x49\x7d\x6f\x26\xd4\x23\x1f\xf5\xc8\x47\x3d\xf2\x51\x8f\x7c\xb4\x91\x8c\xf4\x6f\xf6\x58\xbe\x0b\x6e\x62\x7f\x65\xbf\xfb\x3e\xe1\x93\xbb\x45\x46\xf4\x7f\xcf\x68\x4a\x98\x04\x89\x96\xaa\x45\x28\x13\xb5\xac\x7c\x7d\xcd\xdf\xdd\x9e\x5f\x7e\xbc\x08\x53\xd5\xde\x7d\xba\xbf\xb8\x3b\xbf\x1e\xdc\xf8\x75\xf1\xb3\x0a\xd7\xc2\x7e\x57\x12\xeb\x2c\xc9\xdf\x10\xad\xbf\xc2\xa9\xb9\x55\x58\xe5\x72\xb3\x91\xdd\x0c\x6f\x87\x37\x3f\x41\xaa\xdd\xf8\xec\xfc\x76\xf0\xfd\x45\x89\x20\x4a\xcf\x07\xa7\x7f\xb9\x3f\xbf\x69\x7f\x3e\xfc\xef\xf3\xdb\xbb\xdb\xb6\xa7\x37\xc3\x8b\xe1\xe0\xb6\xfd\xeb\x0f\x83\xf3\x8b\xfb\x9b\xe1\xd2\xf5\x58\x3a\xda\xe5\x8a\x8c\x84\x45\x82\x2c\x16\x14\x59\xae\x21\x8a\x35\x44\x5e\x7c\x74\xec\xb0\xa9\xaf\x13\x74\x6f\xed\x02\xd4\x36\xee\x42\x92\x7c\x43\x46\xa1\x89\xa9\xc4\x93\x84\xc4\xb5\x96\xdc\x1a\xb6\xb5\x84\x4b\x83\x7a\xd2\x1a\xb8\x17\x39\x35\xcf\x8b\x0c\x2f\x40\x90\x00\xac\x08\x8b\x1b\xfa\x30\xfb\xd0\xda\x03\xd3\xbc\x8b\x3e\x92\x52\x4f\x51\x2e\x04\x61\x2a\x59\x18\x81\x5b\xd6\x1a\x75\xdb\xd7\xd6\xac\xbd\x53\x7d\x83\x73\x2c\x4d\xe4\x55\x69\xfc\x82\x24\x04\xcb\x86\x31\xdb\xdd\xef\xb6\x2c\x7e\xaf\xac\x45\xc7\x5c\x46\x53\x4c\x93\x5c\x90\xca\x69\xe1\x69\x86\x05\x95\x9c\x0d\x3f\xeb\xbb\x4c\x1f\xe4\x2b\xf8\x9c\x8b\xcd\x4e\xcc\xf0\x2f\x21\x05\x5f\x96\xff\xf9\xf1\xae\xfc\xaf\xd2\x99\xbf\xb8\x2b\xff\x6b\x39\xad\x07\x0d\x57\x29\xfb\x10\x7d\xbc\x3b\x41\x1f\x21\xa4\x4b\xa0\xbb\x39\x36\x14\x7b\x71\x77\x82\x2e\x88\x94\xf0\x4b\xf1\xb1\xa2\x2a\x81\xb9\x7d\x4f\x19\x16\x0b\xe4\xa6\x6f\xb2\xc8\x31\xf8\x4a\xdc\xd2\x54\x17\x8f\xfd\x2d\x67\xa0\xfe\x17\xab\x77\xc1\x67\x34\xc2\xc9\x76\x8b\x38\xb8\x2c\xf1\x81\xab\x9b\xa5\x4b\x11\xbe\x5d\x5f\x8b\xc1\xe5\x19\x64\x68\xbb\xa1\x36\xcc\xfc\x92\x48\x4d\x24\x11\x67\xb1\xf5\x1f\xe9\xdb\x7f\x11\x08\xf5\x7f\xe3\x90\xe5\x9e\x4b\xad\x6a\x0e\x2e\xcf\xd0\x31\xba\xba\x19\xb1\x2b\x11\x1b\x63\x2a\xd1\xd2\xb0\xa1\x39\x2a\x11\xe3\x0a\xd1\x34\xe3\x42\x61\xa6\xb4\x22\x00\x62\x80\x5d\x11\xc3\x01\x4e\x79\x9a\xe6\x0a\xeb\x83\x56\x5b\x54\x66\x4c\x2a\xb7\x44\x9d\xc7\xe0\x9e\x69\x58\x43\x23\x27\x14\x73\xc9\x84\x6e\x5f\xcb\x28\x65\x3d\x9c\xc6\x35\x55\xd6\x35\x81\x85\xc0\x65\x69\xe2\x1d\x55\x24\xad\xbe\xdf\x31\xbc\xf8\x5f\x8d\x46\x86\x53\x93\xce\x43\xc4\x40\x44\x73\xaa\x48\xa4\xf4\x11\xdc\x88\x26\xee\x2f\x7f\xbc\xbc\xfa\x39\x94\x20\xde\x0d\x3e\x9d\xfd\xe9\xdf\x4b\x3f\xdc\x7c\xaa\xfd\x30\xfe\xe9\x4f\xb5\x5f\xfe\x7f\x4b\xe9\xa9\xda\x53\x4d\xcf\x0f\xe6\x72\x08\x22\x35\xd8\x95\xdd\x54\x11\x4d\xf1\x8c\x20\x99\x67\x9a\x02\xe4\x51\x79\x7f\xb5\x48\x79\xc1\x71\x4c\xd9\xcc\xa4\x57\x5f\x50\x45\x04\x4e\x3e\xe1\xec\x83\xb3\x81\x6f\xb0\x3a\xff\xf7\xb6\x94\x0c\xff\xee\x97\xc1\xa7\x30\x9d\xfe\xdd\xf5\xcd\xd5\xdd\xd5\xd2\x59\x97\x5a\xa8\x1f\x23\xfd\xf8\x04\xfe\x17\x1d\x23\xdd\xba\x97\x7c\x53\xa2\xb0\xd6\x08\xd0\x57\x26\x25\xd4\xa7\x70\x51\x96\xc0\xa9\xc9\x04\x4d\x29\x5c\x29\xc6\x0a\xf8\xb5\x11\xae\xbd\xf6\xe0\xcf\x8d\xf9\xc0\x24\x7d\xdb\x4b\x99\xc5\x58\xc4\xe8\x6f\xb2\x8a\xcd\x00\xc6\x67\xf3\x03\x89\xd1\x21\x9a\x2b\x95\xc9\x93\xe3\xe3\xa7\xa7\xa7\x23\xfd\xf6\x11\x17\xb3\x63\xfd\xc7\x21\x61\x47\x73\x95\x26\x06\x8b\x42\xaf\xc2\x09\xba\x16\x5c\x5f\x21\xa0\xa0\x13\x41\x71\x02\xa9\xe8\x13\xc3\xff\xf8\x14\xfd\x1a\x71\x41\x8e\x8a\x8d\xb1\x86\x29\x7b\x8f\x58\xe3\xd5\xb1\x7e\xa9\x81\x99\x54\xf7\x13\xc5\x24\xa2\xb1\x15\x33\x08\x8b\x38\x58\x2f\x8d\xbf\x43\xb7\xe7\xf2\x68\x89\x75\x36\xfb\xe5\x0c\x94\x15\x1c\x93\x00\x4a\x42\xf1\x32\xc1\x69\xc5\xe7\xdc\xa8\xad\xb9\x56\xd1\x21\xba\x19\x6e\x55\xf7\x6a\xa6\x27\x1c\xf1\x04\x4d\xf2\xe9\x94\x88\xd0\xd7\x7d\xa0\xb5\x19\x2a\x91\x20\x11\x4f\x53\x90\x18\xf4\x57\xb9\x34\x54\x0d\x2b\x66\x47\x7b\x34\x62\xb0\xff\x5a\xcd\x01\x0a\x88\x39\xb0\x3a\x46\x48\x8c\x30\x5b\x98\x6e\x26\xf9\xb4\xe4\x4b\x07\x8c\x17\x1c\x23\xaa\x46\x6c\x90\x24\x48\x90\x94\x2b\x12\x86\x69\x83\xe3\xad\xb4\xe0\xc0\x22\x05\xc9\x12\x1c\x39\x10\x80\x84\x47\x38\x41\x53\x9a\x10\xb9\x90\x8a\xa4\x61\x03\x5f\x81\xad\x46\xaf\x19\x95\x28\xe6\x4f\x2c\xe1\xd8\xce\xa3\xfa\xd9\xd7\xe5\xd3\x38\x74\xf8\x1b\x43\x21\xb8\x80\xff\xf9\x91\xb2\x78\x67\x1c\xea\xfe\x76\x78\x13\xfe\xfb\xf6\x97\xdb\xbb\xe1\xa7\xf5\xb8\x8f\xa7\x2c\x18\x1e\xe8\xf0\x27\xe8\xd6\x2c\x02\x17\x5a\x22\x12\x2d\x93\xfa\x64\x49\xa9\xf8\x81\xc7\x1b\x72\xdf\x4f\x83\xcb\xfb\x41\x89\xa3\xdc\x9e\xfe\x30\x3c\xbb\xaf\xe8\x03\x76\x7e\x25\x19\xde\xa8\x7f\xe1\x6f\xa7\x3f\x9c\x5f\x9c\x8d\x1b\x14\xc6\x77\x37\xc3\xd3\xab\x9f\x86\x37\x85\x6e\xd7\xb8\x44\x95\xc1\x54\x99\xd5\x9d\x61\x4a\x73\x1e\xa3\xc9\xa2\x19\x6d\x45\x4b\xce\x09\xf8\x73\x0b\xbc\x21\xd3\xea\x09\xf0\x26\x07\x7c\x53\x7c\x91\xf2\x98\x1c\xd8\x77\x00\xa6\xc6\x18\x57\x8c\xc4\xdc\xdc\xb0\xee\x1d\xb3\xc0\x50\x61\x10\x64\xfc\xc2\x9d\xa0\x01\x92\xfa\xc5\x5c\x1f\x6a\x41\x67\x33\x30\x1c\x56\x86\x6a\x5a\xb3\x9f\xc2\xf2\xc2\x77\x66\xff\x33\xc1\xe1\x9c\xeb\x6e\xad\xc5\xd9\x5b\x25\xcc\x87\x06\x65\xb7\xd4\xa2\xc0\x60\x70\x68\x18\x9a\xdb\x2c\xbd\x08\xad\xeb\x65\xce\x63\x91\x58\x01\x6c\x4b\x1a\x7b\x67\x26\xc8\x23\xe5\x79\xf0\xa9\x45\xcd\x29\xed\x78\x63\xf3\xc5\x02\xc0\xb2\x19\xa3\x48\xa5\x19\x4f\x1e\x8d\x2d\x68\x16\xf6\x08\x2d\x4c\x05\x4f\x1b\xda\x28\x1f\x93\xf3\xab\x5b\x25\xb0\x22\xb3\xc5\x99\x65\x19\x9b\x1f\x8f\xb3\xab\x9f\x2f\x2f\xae\x06\x67\xe3\xe1\xe0\x63\xf9\xc4\xfb\x27\xb7\x77\x37\xc3\xc1\xa7\xf2\xa3\xf1\xe5\xd5\xdd\xd8\xbd\xb1\x94\xe4\x5b\x3a\xa8\xdf\xd3\xe5\x17\x4f\x90\x66\xb9\xc0\x1a\x1d\x9c\x65\xc0\x1f\x27\x64\xca\x85\xe1\xf3\xa9\x0b\x7f\xb0\x22\x8c\x5b\x5b\xab\x8b\x55\x66\x71\x02\x96\xb1\xa6\x26\x8d\xd5\x5b\x09\x82\x53\xb8\x27\x30\x43\x43\x16\x1f\x5e\x4d\x0f\x6f\xcd\x8f\x29\x16\x0f\x44\xf8\x4f\x9f\x04\x55\x8a\xb0\x92\x4a\x87\xdd\x90\xbd\x92\x58\x74\x70\x84\x6e\x34\xdf\xd7\xef\xfb\x4b\x4d\x13\x7b\x4c\x14\xa6\x89\xb4\x83\x2d\xad\xeb\x09\xba\xc0\x62\x56\xd8\xe1\xbe\xe2\xd3\xa9\x69\xec\x6b\x33\x0c\x7d\x87\x95\x66\xd1\xc0\x7b\x35\x69\xb8\x7b\x11\xfa\xb3\x2f\x7b\x79\xb8\x4e\x55\xf7\xd9\x76\x34\x75\x7f\x0d\x2b\x6e\x34\xf6\x92\x6e\x68\x9f\x34\xd0\x1a\x4c\xdc\x3c\x5e\x7e\xc9\x34\xb7\x5d\x27\xa7\xf2\x8b\x0d\xe4\x64\xb2\xf8\xf4\xce\x4f\xb5\xb6\xd9\x40\x4b\xe4\x33\xb5\x06\x83\x70\xdc\x15\x12\x2a\x9a\x01\xf3\x2a\xce\x32\x82\x85\x6c\xda\xed\xb2\x18\xd8\xb2\xf7\xa6\xa7\xb0\x0f\xbb\xc9\xae\x9f\x03\xc4\x19\x18\x1c\xbc\x10\x51\xa1\xc8\x0e\x34\x60\xda\xaa\x51\xc0\x35\x40\x99\x5d\x59\xd8\xb0\x4f\x54\x6a\xa5\xd1\xfc\xf8\xbd\xc5\x33\xdb\x8c\x20\x3e\x0c\xce\x2f\x2a\xc2\xc5\xf8\x6c\xf8\x61\x70\x7f\xb1\xdc\x4c\x58\xfa\xae\xba\xc5\xe8\x10\xe9\xe7\x65\xdf\x3b\x9d\x9a\x3b\xc3\xa1\xb2\x19\x95\x96\x30\x30\x5a\xd9\xa4\x3b\x63\xaf\x8e\x49\x96\xf0\x45\x4a\x18\x98\x78\x4a\x37\xa1\x5e\xcf\x29\xa6\xf6\x6a\x09\x06\x0b\x56\x1c\x6b\x76\x83\x6b\xec\xd0\x41\xc1\x91\xd8\xdf\xbc\x65\x24\xb8\x0a\xeb\xbe\x36\xde\x33\xfb\x9f\x5b\x85\xd5\x86\x67\x6c\x70\x7a\x77\xfe\xd3\xb0\xac\x1f\x9e\xfe\x70\xfe\x53\x93\x54\x33\xfe\x38\xbc\x1c\xde\x0c\xee\x56\x08\x27\x95\x26\x9b\x84\x13\xa9\x07\x5c\xf5\x9e\x52\xe9\xa3\x8a\x22\x83\x27\x87\xa8\x92\xe8\x91\x4a\x3a\xa1\x80\xbe\x67\x3d\x91\xf7\xe7\xc0\x59\x21\xcd\x92\xaa\x85\x13\x5f\x4c\xbf\xe5\x7d\xd4\x9c\xd4\xb6\x6f\xcc\x0e\xa1\x7f\x12\xac\x7c\x66\x73\xdc\xa4\x4f\x10\xe8\xb6\x8f\xa0\xb4\x05\x9f\x31\x2d\x48\xb3\x19\x11\x66\x38\xe0\x7d\x09\xc7\x12\x3c\xd7\xa3\x0a\x85\x95\x62\xd5\xbc\xd0\x3a\x23\x8c\x08\x80\xf7\xf2\x9d\x18\x41\x4a\x10\xf6\x5e\xcb\x5c\x59\x42\x23\xaa\x92\x05\x8a\xc0\x86\x05\xe6\xcc\x14\x33\x3c\xb3\xc2\x01\xa8\x39\x15\x92\xf8\x8b\x81\x28\xbc\x9a\x5a\xd3\xfe\x1d\x25\x1b\x1e\xb3\xfb\xcb\xb3\xe1\x87\xf3\xcb\x32\x09\xfc\x70\xfe\xb1\x24\xc2\x7e\x1a\x9e\x9d\xdf\x97\x6e\x73\x2d\xc9\x2e\x97\xeb\xab\xcd\x36\x1c\x45\xff\xd2\x09\x3a\x33\x9f\x9e\xe8\xc5\x6d\xc0\x5f\xf4\xca\x6f\x65\x1d\x6e\x5c\x58\x9f\xfb\x63\xc8\x94\x68\xf4\x4b\x74\x35\x21\x59\x1f\x64\xc9\x86\xd4\x1c\xaa\x50\xeb\xfb\xb2\xea\x54\xae\x87\x72\x58\x47\xa4\xee\xe4\xa8\xb0\x2c\x85\x31\x0c\x60\x34\x68\x33\x62\x35\xb8\xb5\x0a\x86\xfd\x13\xb8\xa8\xd3\x5c\x2a\xe3\x4a\x04\xe2\x44\x0f\x7f\x96\x7a\x41\xc1\xd5\x78\x84\x6e\x09\x19\x31\x67\x3d\x98\x51\x35\xcf\x27\x47\x11\x4f\x8f\x0b\xf0\xcf\x63\x9c\xd1\x14\x6b\x49\x9a\x88\xc5\xf1\x24\xe1\x93\xe3\x14\x4b\x45\xc4\x71\xf6\x30\x83\x28\x1a\xe7\x4e\x3d\xf6\xcd\xce\xf8\xef\x2e\xfe\xf8\xcd\xe1\xc5\x9f\xbf\x79\x57\xb7\x90\xb5\xed\xff\x90\x45\x38\x93\x79\x62\xa3\xee\x44\xb8\x36\xee\xc8\xe7\x64\xd5\x7e\x5f\x96\xb7\x6b\x3b\xfd\xf5\xf4\xfa\xbe\x64\xb1\x2e\xff\xf3\xd3\xf0\xd3\xd5\xcd\x2f\x25\x4e\x79\x77\x75\x33\xf8\x58\x62\xa8\xc3\xeb\x1f\x86\x9f\x86\x37\x83\x8b\xb1\x7b\xb8\x8d\xed\xed\x47\xc6\x9f\x58\x79\x69\xa4\xe3\x80\xb5\x9e\x4e\xd0\x07\x2e\xd0\x8f\x7e\x27\x0f\x27\x58\xc2\x15\xe3\xee\x2c\x79\x80\x32\x1e\x03\xe3\x45\x24\x9b\x93\x94\x08\x9c\x58\x9b\x81\x54\x5c\xe0\x99\xb9\xe9\x65\x24\xb0\x8a\xe6\x48\x66\x38\x22\x07\x28\x02\x6a\x98\x1d\xc0\xa6\x80\xaa\xc5\x67\x55\x3b\xdf\x4d\xce\x14\x4d\x89\x53\xc1\xed\x3f\xef\xcc\x66\x6c\xb0\x39\x57\x77\x3f\x94\x85\xbd\x0f\x17\xbf\xdc\x0d\xc7\xb7\x67\x3f\x2e\x5d\x4f\xf3\x59\x69\x64\xb7\x10\x80\x74\xca\x93\x3c\x65\xe1\xdf\x9b\x8f\xed\xfc\xf2\x6e\xf8\xb1\x3a\xba\xab\xc1\x5d\x99\x32\x6e\xca\x41\x72\xef\xbe\xbf\xba\xba\x18\x96\x5c\xc2\xef\xce\x06\x77\xc3\xbb\xf3\x4f\x25\xfa\x39\xbb\xbf\x31\x50\x9f\xcb\xa6\xe9\x46\xd0\x30\x51\x3d\xad\x70\x9a\xbb\x66\x85\x9d\x38\xd1\xc0\x06\xa5\x9b\xb3\x7c\x18\x00\x3d\x99\x70\x30\xb0\xea\x1c\x7a\x93\x6a\x64\x46\xda\xc8\x0e\x55\x79\x9b\x50\x3b\x3b\x5e\xba\xd1\xcb\xb8\xf2\x9d\x1f\x82\xc1\xd9\x35\xca\x36\x4e\x12\xfe\x64\xc2\x81\x53\xaa\x6f\x65\x0b\xfb\xa7\x5f\x91\x85\x87\xf0\xa8\x81\xe3\x95\xb7\x85\x44\x82\xa8\x4f\x3c\x67\x6a\x73\x92\x1b\x5c\x96\xf8\xce\xf0\xf2\xa7\xf1\x4f\x83\x32\x05\x9e\x5f\x2c\x67\x35\x61\x13\x0d\x57\xf1\xe0\xf2\x17\x7f\x09\x43\xd0\xf8\x81\xd7\x50\x8d\xec\x1a\x25\x54\x8b\xbd\x11\xd6\xda\x6b\x02\x12\x0d\x22\x14\x4c\x0e\xa9\x9e\x1c\x04\xa9\x66\xc6\x9f\x64\xf8\x93\x19\xe4\x89\xfb\xa3\xd2\x9e\x84\x75\x01\x6b\xaa\x8b\xc9\x87\x76\xac\x56\xcd\x10\x61\x8f\x54\x70\x00\x8b\x46\x8f\x58\x50\x2d\x8d\x9b\x96\xf5\x5c\x4f\xe0\x7f\xd7\x6b\x13\x0c\xa3\x15\xc6\x75\xcb\x85\x3a\xf3\xc1\xc0\x9b\x59\x43\x9a\x82\x62\xeb\xe1\xb0\xcd\x86\x8e\xfa\xb7\x0d\x9b\xb3\x65\xd0\x70\x79\xc2\x7f\x4f\xce\x28\x4e\x34\x03\xd8\x9d\xbc\x38\xb8\xbc\x3d\x2f\xcb\x8f\x65\x35\x23\xe0\xcb\x1b\xcb\x8b\x60\xa8\x34\x23\x77\xca\xc4\xed\x5f\x2e\x8c\x76\x01\x88\xe2\xe6\xdc\x06\x8a\x85\x85\x66\x31\xd2\x44\x86\x85\xac\x7c\x21\x11\x40\xf0\x15\x01\x57\xfa\xce\x82\x70\xa6\x47\x4e\xe3\x11\x23\x9f\x33\xc2\x24\x04\x07\x98\xfb\xac\xf0\xb5\xcb\x23\x74\x3e\x05\x96\xa0\x5f\x67\x28\x67\xd6\x01\xa6\x2f\x5c\x33\xc8\x03\x2d\xca\x16\xe8\x30\x81\xf9\x88\x11\x17\x2c\x55\x0c\x7e\xc4\x7e\xf6\x4e\x34\x78\x34\xe5\x9a\x01\xe9\x5d\xb4\xed\x9d\x20\xcc\x24\x3d\x40\x5a\x61\xa9\xee\x29\xa4\x1f\x68\x85\xd2\x86\x70\x69\x4e\x63\xff\x7c\xf9\x6b\xa0\x16\x27\x1c\x5e\x06\xcd\x77\x41\xe5\x2a\x68\x11\x8d\x13\xe3\x31\x19\x77\xbf\x13\x22\x2e\x88\xf5\xb3\xac\x7d\x0d\xac\x62\xec\x77\x58\x3e\xd4\x7c\x0f\xe7\x4c\x2a\xcc\x22\x72\x9a\x60\xb9\x61\x10\x92\xb3\x71\x1c\x94\x25\x8e\x9b\x9b\xfb\xeb\xbb\xf3\xef\x57\x70\xf9\xea\xc7\xf5\x30\xa0\x28\xc9\x9d\x7b\x6e\x22\x38\x8e\x91\x66\x9f\x33\x6e\x5c\x81\x56\xf0\x2f\x70\xf5\x4d\x6e\x90\x0f\xa8\x2c\x61\xfa\x17\x29\x0d\xd6\xce\x11\xba\x12\xa8\x5d\x08\x14\xe9\x95\x40\x81\xc9\xc3\x6d\x35\x78\x16\x4d\xb9\x21\x6b\xdd\xca\x12\xac\xa6\x5c\xa4\x86\xcb\x97\x26\x6d\x1a\x5f\xde\x28\x65\x8a\x08\x91\x67\x8a\xba\x42\x09\x55\x29\x55\x6f\xd9\x05\x9f\x7d\x22\x52\xe2\x19\xd9\xc6\x01\xdd\xa4\x3c\xdc\xfe\x14\xfe\x13\x1c\xcc\x5d\x64\xff\xd2\x08\x5d\xe4\xbb\xa3\xa7\x2b\xf6\xc1\x04\xf2\x5c\xf3\x84\x46\x1b\x06\xdc\x7d\x18\x9c\x5f\x8c\xcf\x3f\x69\x25\x7e\x70\x37\xbc\x28\x89\x12\xf0\x6c\xf0\xe1\x6e\x78\x63\x11\xe2\x07\xdf\x5f\x0c\xc7\x97\x57\x67\xc3\xdb\xf1\xe9\xd5\xa7\xeb\x8b\xe1\x8a\xc8\x9c\xd6\xc6\xeb\xd6\xd5\xea\xab\x27\xb5\x5f\x60\x87\x35\x2f\x0b\xed\x65\x90\x79\x86\x69\x02\x4e\x70\x6e\x9c\xe1\x18\x31\x1e\x1b\x0c\x2e\xe9\xac\x33\x1e\x96\x1d\x9d\xab\xf7\x49\x82\x70\xae\x78\x8a\xc1\x6b\x93\x2c\x46\x0c\x4f\x34\x6b\xc5\x49\x12\x84\x77\x89\x9c\x31\xcd\x62\x75\x63\xa6\xfe\x41\x94\x10\xcd\xce\xb3\x20\x61\xd0\xfa\x0d\xa6\x94\x41\xa4\x6d\x8a\xc5\x83\x2b\xe6\xe8\xd3\x30\xfc\xa1\x90\x08\xcb\x11\x33\xd8\x60\x56\x5a\xe9\xb0\xc2\x27\x9d\xde\x6a\x5d\x9d\x14\x3f\x10\xbd\x2a\x69\x1e\xcd\x51\x26\xf8\x4c\x10\x29\xad\x6d\x39\xc2\xcc\x04\x20\xd8\xd7\xf5\x35\x34\x62\x8c\xeb\xa5\x70\x26\xec\x98\x64\x84\xc5\x84\x45\xd4\xa4\x06\x82\xef\xde\x9b\x36\x67\x02\x67\x73\x24\x39\x38\xbd\x61\xd9\xc1\x7e\x65\x3e\x72\x37\x99\x45\x43\x83\xc7\xa1\x05\x5a\xe4\x9a\x4f\x5c\x81\x9c\x68\x56\x19\x3e\x76\x97\xa1\x73\xbb\x18\x3b\x60\x9a\x25\x44\x99\x4a\x18\xb0\xe4\xb0\x19\x7a\xad\x4b\xfb\xa1\xb7\xa9\x69\x13\xf4\x85\xed\xc6\x8c\xa5\x1d\xd1\x51\x83\x65\xdb\x1e\x29\xf4\x03\x66\x71\xa2\x5b\x71\x3e\x8c\xf2\x59\x84\x54\x94\x81\xa6\x1a\x77\x1a\xb7\xb9\x45\x23\x9c\xcb\x6d\xae\xd1\x4a\x3e\xa7\xb1\x0a\x1e\x16\x41\x21\x40\xde\x36\x99\x13\x56\x37\xd3\x2c\x12\x27\xdc\xae\x92\x79\x3d\x37\xd5\xdd\x10\x8c\xa6\xe5\x9a\xcd\x04\x65\x11\xcd\x70\xb2\x91\xee\x57\x09\xc6\xb7\x31\xee\x5f\xd1\xa9\x26\x9f\xaf\x6b\x6e\x5b\x45\x44\x0a\x49\xce\x76\x98\x7e\x0b\xd7\xb0\x24\xd9\xac\x06\x22\x8b\x68\x12\x2c\x78\x6e\xfc\x71\xb0\x2e\x24\x6e\x38\xaa\x47\x4d\xdb\xad\x4f\x06\x2e\x07\x40\x6f\xb0\xd9\x26\xf2\xa7\x6d\xfd\x2a\xad\xd8\xde\x4d\x30\x1e\x4e\xae\x9b\xdb\x6c\xda\x81\xe0\xe1\xbf\x96\xd1\xce\x27\x9c\x69\x9a\xb1\x35\x31\x70\x31\x47\xab\x24\xd9\x9a\x7f\x2e\x7e\x26\xf0\x9d\xfb\xbc\x90\xee\xbb\x51\x2c\xa1\x0d\x80\xaa\x77\x52\x8a\x21\x08\xf2\xd4\x2d\x8d\x4f\x73\x2d\xcb\x22\x0c\x51\x08\xe8\x2b\x72\x34\x3b\x42\xae\xc2\xc9\x01\x1a\x5c\x5f\x0f\x2f\xcf\x0e\x10\x51\xd1\xd7\x2e\x66\xd1\x06\x2c\x8d\x98\xe2\x56\x5a\x59\xb8\xea\x34\x29\x11\x33\x52\x9a\xb3\x8b\x6e\x82\x50\xe5\x19\x95\xca\x86\xcf\x6a\xbe\x12\xd4\x11\xa2\x69\x55\xcc\x36\x14\x92\xab\xf9\x36\xa4\x81\xa5\xcc\x53\xad\xcb\x8e\x29\x4e\xc7\x82\x27\xdb\x30\x85\x33\x98\x0a\xa8\xcb\x3e\xc5\x9f\xe2\x14\xe9\x66\x6d\x28\x88\x77\x39\x7a\x91\x4e\x0b\x46\x9a\x2f\xeb\x7b\x33\xb8\xb7\x9c\xf7\xc1\xc6\xa3\x51\x17\x02\x01\x10\x00\x2d\xac\xa2\x30\x1b\x8f\xad\xa5\x7e\x8c\xa3\x48\xab\xdc\x3b\x9e\x54\x50\x9c\xca\xb9\x04\x6c\x47\xcf\x36\xcd\x55\x74\xee\x86\x99\x69\x0e\x06\xc1\xc0\xf5\x5a\x2e\x0d\xfd\x4e\x16\xb5\x5e\x5d\xf9\xa8\x7b\xe9\x4d\x2a\xe6\x12\x96\x04\x76\x52\x9a\xf2\x53\x6a\x4e\x2c\xf4\x68\xd8\xa5\x4b\x88\xd1\x0d\x2f\x78\x2e\x9a\x18\xdd\x88\x9d\x91\x4c\x10\x2d\xe9\x57\x1d\x28\x9e\xa6\x6f\xca\x94\xd8\xd3\x75\x4f\xd7\x6f\x9e\xae\x4f\x4d\x15\xb2\x81\xaf\x3a\xb7\x95\x00\x67\x1a\x1b\x67\x9c\x27\xe3\x0e\x36\x91\xee\x2b\x5e\xf2\x84\x55\x6a\xb2\x01\xac\x00\xcf\x41\x3e\x2a\x5d\x9b\x5c\xdf\x75\x41\x8a\xad\x1d\xde\x92\x65\x70\x2e\xb3\xa0\x1a\xd4\x36\xe7\xbd\xa9\x95\x65\x2d\xa1\x67\x17\x73\x4e\x8d\x7c\xd3\x54\x64\xab\x7c\x98\x9c\x28\x42\x59\xad\xd4\xa1\xa1\x67\xa8\xdb\x0f\x72\xc7\xdf\x73\xae\xb0\xfc\xfa\x68\xc4\xb4\x10\xf5\x40\x16\xc6\xdc\xaa\xc5\x94\xdf\x6b\x59\xfc\x50\x12\x26\x21\xdc\xfb\xf7\xc6\x3d\xa7\x49\xdc\x99\xab\x8d\x6a\x6a\x2a\x2c\x96\xeb\x7f\x41\x88\xae\x6d\xd4\x4a\x49\x45\x00\x74\x51\x34\xcc\x3d\x33\xc3\x9f\x11\x05\x29\xd6\x8a\x2a\xd0\x99\x62\x53\xc2\xb1\x36\xf4\x95\xa6\x2b\x43\x15\x82\x83\x9f\x24\xce\xb7\x63\xfc\xb2\xde\xc6\x4a\xce\xe8\xb5\x85\x5b\x1b\xf3\x7e\xec\xec\x46\x91\xe0\xb5\xba\x88\x58\x22\xb3\xd3\x13\xc3\x0e\x9c\xff\x9a\xb0\xa3\x27\xfa\x40\x33\x12\x53\x0c\x11\xf0\xfa\x5f\xc7\x7a\x5e\xbf\x3b\xbd\xb9\xba\x1c\x17\x99\x3c\xff\x35\x62\x83\x44\x72\x9f\xa5\x80\x18\x67\x3e\xdc\x3e\x13\xc4\x89\x84\x76\x2e\x60\x75\x2d\xcc\x88\x23\xd6\x36\x82\x98\x47\xf2\x08\x3f\xc9\x23\x9c\xe2\x7f\x70\x06\xae\xf4\x01\xfc\x79\x9a\xf0\x3c\xfe\x19\xab\x68\x7e\x0c\xe7\x5a\x1d\x93\x47\xc2\x94\x71\x53\xe9\xe5\x8a\x21\x79\x57\x42\xb4\xfe\xef\xf4\x98\x8b\xa4\x22\xa9\x35\xd9\x88\x64\x0a\xfd\x3f\x82\x4c\x38\x57\xcd\x97\x14\x9f\x4e\x25\x59\xeb\x42\x2a\x94\xb4\xdb\x2b\xf4\xe7\x3f\x7d\xf3\xad\x26\xa1\x4d\xd6\xf8\xfc\xf6\x6a\xac\xbf\xff\xdd\x99\xfd\x5e\xae\xc1\xee\xae\xb2\x82\xb5\x39\xe2\x31\x81\xf3\x39\x83\xdb\x4f\x80\xf3\x02\xd8\x1b\x90\x43\xb1\x8f\x4d\xdc\xed\xcc\xc0\x1c\x6c\x95\x35\xb4\xc5\xad\xfe\x31\xe1\x13\xb0\x0b\xe5\xa5\x02\x69\x4b\x22\x3c\xb6\xb4\xa7\x9f\x51\x99\x25\x78\x51\xeb\x61\xd5\xb2\x5f\x6a\xee\x94\xe1\x88\x14\xf8\x0c\x2e\x18\x2b\xe2\x69\x0a\x01\x82\xce\x73\x12\xd3\x29\x44\x0a\x2a\x7d\xe7\xa3\x09\x51\x4f\x10\x97\xea\x7e\xf5\xb2\x8a\x33\xc8\x6a\x56\x06\xec\x72\xa4\x17\x39\xce\xc1\x9b\x36\x7a\x77\x80\x46\xef\x62\xf2\x48\x12\x9e\xe9\xd3\xac\x7f\x20\x2a\x6a\xda\xc4\x61\x8a\x69\x72\xc9\x95\xbf\xf9\xb6\xd9\x4f\x41\x22\x9a\x51\x7d\xba\xc6\x44\xb7\xfb\xac\x29\x61\xcd\x07\xec\x6e\x4e\x3c\x8e\x14\x8c\x01\xe1\x38\xd6\x44\x0c\xd5\xe2\xdc\xf0\x0a\x13\x3b\x0b\xa6\x5e\xaa\x82\xb4\xbe\xdc\xa6\xa5\x04\xe8\x31\x6c\xb3\x2c\x56\x34\xee\x80\x37\xbc\xec\xf4\x24\xb5\xfb\x65\x9c\xa9\xdb\x77\x5c\x54\xee\x5a\x4a\xff\xb6\x10\x61\x80\xe0\x60\x2d\x96\xad\x16\x9e\xea\x01\xd4\x6b\xd1\x6d\x9c\xe5\x95\xb9\xd5\xdf\x2d\x1d\x9a\x0c\x21\xd4\xa2\xb0\x9e\x28\x58\x17\x6c\xee\x40\x35\x5d\x81\xac\x1c\x71\x94\x70\x59\x4e\x25\xec\x3c\xe8\x53\xfb\xe9\xb2\x71\x0f\x43\x63\x4c\x9e\xf8\x2c\xbe\x4e\x74\x37\x68\x58\xf8\x0a\x56\x86\x61\x13\xca\x2a\x10\xf6\xed\x03\x44\xc1\x19\x05\x92\x6d\x52\x24\x56\xb0\x18\x15\x52\xe2\x88\x15\x26\x3d\x89\x9e\x48\x02\x5e\x80\x88\xa7\x19\x48\x40\x76\xb8\xb6\x25\x7d\x81\x2b\xac\xc8\x01\xe2\xb9\xd2\x8d\x99\x90\x25\x77\xc7\xd9\x78\xa8\x42\x2a\x34\xaa\x89\x8d\x0d\xf0\xd8\x5d\x86\xd6\x0d\x2b\xa4\x0c\x7d\x24\x0a\x5a\x01\x6c\xc4\x70\x82\xa6\xf2\xf6\xd2\xa3\x74\x5a\xdb\xb6\xb5\x4f\x94\x9d\xc9\x1a\x3b\x5f\xe4\x95\x7d\x9f\xf0\xc9\xd2\x7d\xbf\x82\xc6\xd1\xfd\xcd\xb9\xf3\xa1\x14\xe6\xe5\x00\xdc\xa9\xa4\x70\x0d\xaf\x6f\x86\xa7\x83\xbb\xe1\xd9\x11\xd2\x7a\xdd\x47\xa2\xfc\x74\x21\xfc\xdc\xc3\x04\x9a\x91\xdb\x44\x35\x26\x15\xc1\x71\x0b\x75\x13\x21\x4a\x41\xe2\x2b\x18\x47\x39\x8b\x6d\x39\x61\x43\x0e\x19\x65\x26\xa3\x0f\xf2\x2e\xab\xf3\xb4\x8e\x8b\x55\x27\x10\xcc\xc8\xe3\xb7\x63\xc4\x37\xe3\x4d\xeb\x8e\x8b\x55\xe4\x53\x76\x78\x3c\xf7\x64\xe0\x68\xa9\x39\xa1\x02\x75\x9a\x96\x21\xaa\x71\xf7\x39\x05\x11\x00\x9f\x70\xb6\x3c\x3a\x17\x3f\x95\x88\xd6\x48\x32\x81\x69\xe3\xb9\xcf\x81\x63\x6b\x63\xc3\x0a\xb7\x9f\x60\x21\xef\x1b\xde\xea\xf9\xa6\x09\x88\x91\xb5\xea\xf9\x47\x23\x56\x19\x84\x75\xf3\x49\x04\x67\x07\x7e\xa1\x0c\x95\xae\xc4\x03\x34\xa5\x9f\x6d\xa3\x85\xfb\xdf\xbd\x1a\xd8\x83\x5a\xdc\x4d\x73\x5c\x3f\x53\x6b\x88\x0d\xd7\xf0\xfd\x52\xf7\x07\x97\x4a\x4b\x5d\x5a\x72\x15\x44\xeb\x17\x24\x46\xd0\xad\x0f\x46\x58\x29\x32\x28\x2c\xf4\xa2\xe0\xb5\xf4\xad\x02\xe6\x35\xc6\x8a\x1c\x2a\xba\x32\x3e\xdc\x86\x10\x41\xb0\x11\x56\x41\xb6\x74\x71\xf3\x4c\xc8\x0c\x33\xe7\xb9\x6e\x19\xae\xbb\xf2\xb6\x60\x55\x5a\x82\xc5\x10\x3d\x07\xf2\x15\x44\x46\x95\xc6\x21\x33\x58\xcf\xa5\xe3\xb0\xc6\xc1\x7d\x58\xb6\x27\xec\x6d\x95\x2d\x83\xcd\xb3\x78\x9f\x06\x9b\x60\xa9\x90\x1d\x53\x9b\x26\x19\x48\xf8\x3b\x00\xbe\x58\x56\x60\x37\x54\xcd\xba\xda\xe3\x34\x09\x95\x95\x10\xa2\x14\xb5\xd5\x5f\x73\x49\x6c\x12\x5d\x4a\xc4\xcc\x09\xc2\xa6\x32\x97\x3f\xdb\xb6\x44\x97\xbb\x25\x42\x66\x02\x31\x0c\xf5\xa6\x8f\xd0\x80\xd5\xd2\x89\x9d\xd9\xba\xb4\x5e\xe6\x4e\xc2\xc9\x13\x5e\x48\x94\x09\x93\x79\x67\x02\x1b\xdc\xe4\xc1\x9f\x58\xfe\xc8\x5b\x8a\x94\x8b\x2c\x41\xa0\x4a\xaf\xf6\x29\x04\x05\xa7\xbb\x73\xbb\x8e\x3a\x51\xc5\xe9\xde\x54\x13\xda\xab\x9a\x1d\x58\x9d\x22\xe3\x68\x8e\xd9\x8c\x8c\x6d\xb2\xe1\x46\xda\x92\x6e\xe7\x14\x9a\x39\xb3\xad\x34\x5f\x4e\xd7\x46\x61\xb2\x10\xbb\xe6\x55\xa7\xd3\xc1\x21\x90\x0a\xcf\x08\x32\x23\x5a\xa6\x98\x14\xd0\x01\xa1\x41\xdd\x62\x31\x81\x9e\x60\x5b\x1d\x96\x83\x0c\xda\x84\x77\xb0\x0c\x5f\xe0\x09\x49\xb6\x8e\x05\xd8\xc8\x4a\x07\x5d\x5b\xe4\x49\xc5\xf5\xd2\x40\xb0\x04\x41\x4f\x73\x22\xaa\xec\xd8\xd9\xb6\x45\xde\x14\x3a\xb1\x6c\x9e\xa5\x62\x78\x5b\x4c\xd4\x41\xa9\x6e\x32\xd5\x36\x80\xd5\xf0\xda\x0b\x80\x48\x9b\xec\x23\xe1\xf5\x57\x35\x09\x6e\x36\x90\x00\x0f\xb5\x65\x1c\x5b\x03\xa2\xae\x9c\xca\xc6\x39\x18\x1d\x0b\x0d\x9c\x4f\x11\xe3\x8c\x20\x2a\x8b\x97\x55\x39\x5a\xcc\x67\x30\x6a\x11\xdf\x18\x5f\xea\xe5\x5d\x9f\xdb\xd2\x52\xe4\x96\x78\xdb\x80\x0b\x7f\x67\x44\x2b\xaa\x58\x2c\x00\x01\xc5\xf0\xe1\xb2\x4c\xb7\x72\x9c\x3b\x17\xb8\xef\x1c\xc0\x4d\xe0\xc8\x54\x1c\x81\x18\x59\x19\x1c\x32\x30\x31\xf6\x25\xfb\x91\xcd\xe2\x1b\x31\x6f\xd9\x00\x42\xa4\x12\xa5\x38\x83\xd8\x73\xc6\x55\xf1\x95\xc9\x4a\x55\x7e\x0b\x0f\x9c\x20\x2e\x0d\x4c\x79\xcb\x0a\xac\x32\xed\xb8\xeb\xb7\x58\xd7\x32\xfa\x87\x43\x2e\x9a\xd1\x47\xc2\x1c\x4d\x1f\xb8\x33\xa1\x07\xe5\x3a\x4d\x16\x87\x18\xbc\xb0\x24\x0e\x0d\xd7\xcb\x39\x92\x2d\xed\xba\x07\xf6\xc8\xee\x4b\xa6\x37\x3e\xaf\x59\x28\x4d\x0e\x79\x09\xfc\xcf\xf9\xcd\x43\x2a\xb5\xb0\x46\x26\x50\x1e\x4b\xf4\x7b\xc6\xd5\xef\x03\xe0\x27\x67\xbc\x30\x95\x7f\xad\x09\xea\xa0\x86\x68\x0b\x87\xd6\x12\x0e\xc2\x41\x02\xf2\xca\x95\xdf\x16\x7f\xad\x88\x0b\x78\x56\x69\x74\x58\x0f\x12\x6c\x83\x04\x37\xa5\x32\x76\x66\xb1\x79\x89\x9a\xf6\xc8\x90\x81\x20\x2e\x19\x3d\xe5\x82\x54\xca\x75\x18\x7e\xee\xa3\x68\xd3\x4c\x35\x66\xa2\xd5\x45\xa3\x06\x83\xa7\xa9\x5c\x50\x9c\xf4\x92\xa1\x53\x1e\x8d\xd8\x2d\x21\xed\x70\xf6\x7e\x2f\x7e\x85\x86\x60\xac\x4e\x6a\x5c\x42\x69\xbb\x08\xa9\x4d\xcb\x60\x23\x4b\xa8\x66\x05\x46\x54\xb3\x5d\x62\x93\x30\xd8\x36\xb9\xdc\x3b\x29\xc2\xba\xcc\x6d\x20\x48\x47\x23\xf6\x81\x0b\x7b\x05\x4b\x0b\xc3\x38\xc1\xd1\xc3\x21\x61\x31\xc2\xb9\x9a\x1b\x30\x22\xeb\x57\x58\x58\x6a\xd0\x92\x06\x90\x8d\xcf\x34\xa2\x32\xc2\x22\x76\x80\xa0\x8f\xdc\x8d\x62\xc4\x82\x46\x00\xe8\x11\x70\xb0\xa1\x1a\x50\x9b\xaa\x49\xa0\xf0\x40\xdb\x5a\x34\xd5\xb9\xa9\x55\xb9\x59\x7e\xce\x4a\x75\x7b\x00\xa2\x92\x11\x69\x45\xf6\xca\xea\x9c\x3b\x6b\xa3\xd3\xef\x64\x58\xf9\xdc\xbf\x79\x60\x35\x0a\x63\x92\xb2\x33\xd0\x92\xce\x37\x8e\xd7\x96\x40\x95\xa6\xb9\x80\x18\xa5\xa6\x36\xbf\x8a\xe6\x34\x29\x7c\x17\x5f\x1f\xf8\x61\xea\x26\x13\xf2\x48\x12\x03\xe9\x17\x09\x08\x5c\x30\x56\xc3\x6f\xd0\xff\x31\xb5\x5f\xd0\xb7\x23\xf6\x11\xd8\x70\x92\x2c\x00\x70\xc4\xb7\x8c\x55\xa5\x99\x87\xc6\x01\x28\x1b\x29\x85\xca\x03\x31\x7b\x3d\xc7\x8f\x64\xc4\x5c\x33\xff\x07\x3d\xa0\x3f\xa0\x6f\xdb\xd4\x3b\x17\x7f\xf0\xcc\x76\x8e\x0f\x81\x77\x3f\xb8\xe5\x2c\xa3\xb4\xfc\xc6\x99\x41\x4a\x46\xc8\x86\xc4\x23\x8f\x1b\x46\xd9\x23\x8f\x6a\x41\x2e\xe1\xa9\xc5\x82\x30\x35\x66\x3c\x26\x63\xd2\xe0\xd2\x5c\xc2\x24\xb4\x10\x70\xc9\x63\xb2\xd2\x21\xe9\x99\xe9\xcf\x60\xba\x91\xf9\xc4\x6f\x07\xe4\x3f\xf8\x60\x77\x6f\x7d\x28\x53\x5a\xf3\xc8\x3d\x38\xcf\x26\xe3\xde\xd4\x99\x7a\x65\xe5\xb3\x03\xb8\x10\xec\x00\x9a\x1d\x7a\x09\x56\x2e\x44\xbc\x7a\x1c\xab\x8e\x00\xfd\xb2\x9e\xb9\xbd\xac\x02\xd8\x21\x80\x86\x15\x74\x46\xb5\xfc\xde\xdd\x61\x0b\x9c\x70\x13\x6f\x86\xc1\x60\xe9\xe4\xce\x28\x96\xc2\xe5\xa1\x1d\x7a\xfa\x2b\x9c\x90\x13\x9e\x57\x05\x78\xbb\x00\x54\x86\xc1\xeb\x56\x56\x5f\x68\x3e\x3c\x33\x01\x92\x64\x4e\x4d\x4a\xc2\xe0\xf4\x02\xe9\xd3\xc1\x53\x93\xb7\x0b\x8b\x96\xab\x39\x17\xf4\x1f\xad\x01\x5c\xed\x32\x7a\xe1\x69\x2d\xe2\xdd\xcc\x38\xcb\xd2\x3a\x10\xab\x11\x29\x54\x49\x2b\x69\xd2\x99\xd0\x24\x07\x88\x1a\xcd\x66\xa7\x79\x62\x70\x2d\x23\x2e\x62\x53\x9c\x4e\x96\xa2\xeb\xf4\x7b\x5e\xbc\xc7\xca\x37\x48\x2d\x92\x87\x45\xce\x34\x16\x9c\xa5\x02\xe8\x5f\x72\x92\xef\x28\x40\xd1\xa2\xe1\xbf\x50\xe4\x47\x55\x0d\xc0\x33\x59\xc4\xec\x9a\xb5\xd1\xbc\xb9\x58\xdf\xbf\xeb\x99\xca\x20\xa4\xd7\x59\x16\x7d\x86\xac\x51\xc9\x4d\xdd\x94\xb5\x2c\x3a\x37\x06\x19\x70\x07\x26\x9d\x97\x88\xe7\xa8\xcb\x48\x0d\xec\xc7\x92\xdf\xa3\x0f\x70\xad\xb2\x88\x67\xb2\x93\x38\x88\xc5\x8a\xf4\xf1\x8c\x26\x93\x0d\x98\x5c\x5d\xa8\x5e\xb6\xde\x81\x01\xc5\xb3\xb5\x86\x58\x73\xc5\x91\x9e\xfb\x93\xa0\x90\x40\xbf\x28\x5e\xf6\x25\x82\xdc\x75\x11\xf2\x18\x2d\xa5\x18\xb1\x16\xe2\x3a\xdc\x12\x2e\x9a\x79\xfc\x1a\x06\x08\xdb\x50\xb9\xeb\xba\xdf\xbe\xed\x44\x18\x96\xb4\xaf\x47\xa2\x9e\x3d\xb7\xf2\x30\x78\xa0\xd4\xd7\x31\x20\x7a\xd1\xe6\xe5\x4e\x86\x27\xc7\x71\x84\xa3\x79\xeb\xa4\x26\x9c\x27\x04\xb3\x36\xe9\xb5\xf1\x71\xf5\x88\x18\xec\x17\x60\xdd\x49\x02\x00\x48\x6e\x09\x6c\xd1\x8c\x42\x7c\x67\x31\x00\xd7\x19\x1e\x6e\x32\xdd\xdc\x40\x15\x61\xce\xf2\x43\xd9\x2c\x21\xd5\xb5\xb2\x08\x83\x07\xb6\x93\x24\xca\x93\xa0\x6a\x46\x46\x84\x1e\xb5\x5e\xe2\x47\xc2\xb4\xce\x60\xc7\xe1\x9c\x19\x4f\x2e\x5e\xdc\x63\x65\x1f\xf8\xae\x9d\x3f\x4d\x2a\x2e\x48\x3c\x62\x70\x70\x79\xf9\xb0\x6a\x5a\x95\x5a\xcd\x08\xed\x52\x1b\x9f\xce\x40\x88\x58\xfb\x78\xde\x96\xcd\xc4\x6b\x9f\x49\xd3\xf7\x18\x62\x0c\xb6\x76\xad\x05\xee\x97\x22\x93\xc5\x6c\xac\xcb\x56\x7e\x21\x23\x32\x44\x6d\x94\x93\x28\x83\xa0\x8d\xb6\x6c\xd9\x67\xbd\x4b\x0a\x74\x50\x77\x1b\x74\x1c\xca\x52\x57\x75\x47\xc7\x33\x58\x27\x97\x9d\xdb\x0b\x1b\x71\x5b\x76\xd9\x9a\xb0\x3f\x1e\x44\xad\xb8\xfa\x37\x4a\x60\x48\xde\x80\x90\xfb\x9f\x8d\x86\x4d\xa5\xb1\x80\x39\x14\xd0\x34\x53\x0b\x0b\x1a\x0f\xf7\xa2\x85\x93\x56\x73\xcc\x6c\x42\x7c\x93\x7b\xb8\x7a\x47\xc6\x25\x07\x71\x53\x67\xd0\x91\x35\x2b\x34\x36\xe9\x16\x3a\x4c\xb0\xaa\x24\xb4\xb4\x45\x83\x98\xfa\x3b\x63\x9c\xb4\xda\xb2\x76\xc0\x34\x01\x7d\xa7\x48\x62\xb1\xd8\x38\x4a\xe4\x44\xf3\x2e\x9c\x24\x95\x79\x61\x28\xa1\xab\x3c\x06\xff\xa4\x28\x14\xd4\xdd\x59\x9d\xe0\x09\x59\xcb\x3d\x7d\x61\x3e\x58\x4a\x45\xf0\x4a\x51\xe2\xb5\x53\x56\x74\x18\x7a\xd7\x98\x43\xbe\x6a\x60\x61\xe6\xf9\xd2\xbb\xa9\x9c\xbd\xbd\xd9\x10\x25\x89\x72\x41\xd5\x62\x6c\x8d\x7e\xdd\x99\xd6\xad\xfd\xf2\xd4\x7e\xd8\x45\xa3\x3e\x41\xae\x3f\x67\x64\x84\x7b\x4a\x50\x03\x30\x6c\xa7\xd0\x65\xbb\xb5\x96\xdc\x98\x5b\xba\x6c\x61\x5d\x72\x6b\xb7\xa1\xea\x2e\x36\x1d\x9e\x05\x2e\x1d\xf3\xa9\x4b\x1b\xed\xbe\xb0\x55\x44\xd7\x35\xac\xa5\x0e\x9d\x2a\x13\x94\x0b\x0b\x9c\xda\x25\xa8\x2d\xc5\x9f\xc7\x19\x16\x38\x49\x48\x42\x65\xba\xb9\x6d\xf7\x8f\xdf\x2d\x1d\xed\xa9\x01\xf8\x95\x16\x2e\xfb\x33\x4d\xf3\x34\x28\xcd\x0e\xa8\x42\x01\x36\x88\x75\x97\xd8\x14\x57\x37\xc0\xe2\xa2\x61\x8a\x8a\x00\xed\x65\xc4\x02\xdc\x2f\x6b\xaa\xc0\xd1\x1c\x4a\xe6\x4e\x31\x15\x8c\x48\x79\x84\x2e\xb9\x22\x27\xe8\x13\xce\xee\x40\x50\x33\x15\x37\x66\xc6\x3a\x8e\x25\xd2\x52\x6b\xce\xa8\x3a\x18\x31\x0b\x16\xe6\x56\xe5\x38\xe2\xcc\x00\xc6\x44\xb0\xb0\xbe\x09\x30\xf7\x3a\xe4\x14\x65\x40\xf8\x35\x95\xb4\x2c\xb6\xc0\x4f\xe3\x20\x7a\x75\x6c\xb2\x03\xd6\xa0\xe3\x1b\xfc\x64\xe2\xb5\xa1\xc2\xa4\xf9\x7a\x89\xe4\x6e\x03\xa2\x2c\xc0\xb2\xc1\x49\x72\x81\x23\xdc\xc8\x85\xc8\x43\xc3\x9b\xe8\xd4\xaf\xe8\x11\x39\x42\xdf\x27\x7c\x22\x0f\x90\xf4\x98\x62\xae\x00\xa6\x3c\x30\x0e\x2a\xf8\xb7\xc9\xe4\xf9\xda\xad\x7e\xc1\xf7\xa1\x2a\xc2\x94\x7e\x46\x09\x7d\x20\x48\xfe\xf1\xe4\xf8\x38\x5d\x1c\x4e\xf2\xe8\x81\x28\xfd\x17\xc8\x14\x8d\x2b\xe4\x12\x6c\x71\x53\xba\xee\xaa\xd5\xa9\xa7\xfa\x76\xa2\x48\x0b\x12\x21\x09\xc0\xca\xe9\x2b\xdd\xd7\x9d\x71\x99\xa1\x9c\x35\x17\xd5\xb0\x53\x16\x79\xdb\xf1\x2a\xe1\x51\xbd\x8c\xb6\x62\xea\xea\x84\x30\x58\xd3\x04\xcf\x2a\x2a\xcb\x1a\x4a\xca\x55\x4a\x2d\x15\xe9\xb9\x43\xbc\x85\x3e\x65\xe5\x28\xb3\xf7\xce\x1d\x09\x6e\x45\xeb\x6e\x39\x1a\xb1\x81\x44\x4f\xc4\x94\xcb\x81\x94\x32\xf0\x4e\xe4\x54\xce\x7d\x42\x19\xd8\x4b\xa1\x51\x83\x16\xa4\x7b\xf2\x8a\xa3\xd3\xac\x9c\xff\xc6\x6a\xa0\x50\xf4\x53\x37\x0c\x19\xe3\x2e\x90\x10\x3d\x09\x9c\x65\x44\x8c\x98\x45\x7e\x01\x7c\x33\xce\x6d\x90\x48\x5b\x34\x79\xaf\x51\xee\x97\x46\x39\xa8\x84\x96\x43\x05\xa9\x14\x94\x1e\x59\x14\xca\x70\xf6\x29\xaf\x72\x96\xae\x66\x00\xbb\x82\x8f\x63\x4e\x64\x60\x78\x46\xde\x7e\x94\xd0\x29\xd1\x37\xe6\x88\xe9\xa5\x0f\x8d\xe4\x06\x33\xcb\x41\x68\xe9\x4e\x23\xc1\xa5\xb4\xd1\xe2\xa6\x9d\xe5\x39\x3f\x5b\xc0\xf3\x1b\xe0\x2f\x53\x18\xb3\x0a\xd4\x1f\x3c\x73\x90\xfd\xf6\x61\x73\xbd\xc4\xb6\xa6\x56\x02\xf4\x17\x6b\xb1\x06\x44\xff\xf1\xe9\xc5\xb9\xc7\xa5\xae\x74\x5d\xc7\xe8\x0f\xc1\xd2\xda\x51\xfa\xeb\x33\x0e\xf0\xfa\x2b\x4d\x2c\x41\xec\x5f\xbd\x59\xe5\x18\xd5\x6d\x32\xe1\x2b\x5b\xbf\xea\xce\xaa\xd0\xcc\xaa\x50\xea\x1d\x6d\x53\x0b\x2b\x8c\x40\xc8\x79\x6e\xaf\x30\x08\x0b\xfa\x2d\xa9\x70\x9a\x85\x69\x82\x0e\x0a\xc4\x4e\xd3\x1c\xb5\x36\xc6\xfd\xa2\x10\x65\x11\x36\x11\x18\xd5\xc1\xd5\xb6\x62\x3d\x2f\xcd\x9d\x45\x3e\xdb\x45\xe8\xed\xcb\xe5\xdd\x26\x8b\x22\xd2\x4c\x5a\x79\xc3\x57\x26\x6f\xb6\x55\x4f\x88\x47\x79\x6b\xdd\xd0\x6d\x13\xeb\x9c\xfe\x86\x04\xc1\xd2\x86\x10\x40\xfe\x59\x25\x37\x65\x0d\x93\xa6\x1f\xb3\xc9\x60\x3d\xf4\xb8\x8a\xc1\x55\x63\xa1\xc2\x23\x77\x10\xa9\x10\x04\xea\xbb\x1b\xac\xea\xf3\xca\xed\x02\xb0\xe2\x82\xe0\x78\x11\xac\x88\x77\x92\x9b\x9e\xc1\xa4\x23\x69\xaa\x95\x4e\x10\xa7\x19\x3f\xe4\x99\x93\xb3\x4b\x6f\x01\x28\x26\x9d\xea\x1b\x2b\x70\xb1\xeb\x2f\xd8\x21\x14\x2e\xd6\x7a\x49\x43\x7c\xa1\x6b\x04\x6e\x69\x80\xca\x9e\x13\x7b\xc3\x8d\xde\x0d\xbe\xbf\xba\xb9\x1b\x9e\x8d\xde\x15\x11\xe5\x2e\x65\xca\x49\x98\x1e\xb3\x8f\xb3\x11\xf3\x41\xa0\x1e\xd3\x08\xf6\x12\xe1\x38\x2e\x10\xe5\xac\xe2\x63\xe4\x8c\xa5\x1c\x39\x38\x15\x2b\xc3\x3f\x97\x34\x73\x0f\x79\x33\xfb\x7a\xb2\x96\xb8\x7b\x4a\x27\xc7\x64\xff\x2c\x49\xd3\xd8\xd1\x65\x13\xc2\xb1\x28\xa3\x1f\x12\x5f\xc9\x97\x91\x27\x27\xdf\xc3\xed\x7c\x8c\xcd\x25\xbc\x1e\xb7\x73\x1b\xb2\xc1\xa6\x7e\xa0\x9f\x49\x7c\xd3\x22\x55\xed\x24\x0b\xa3\x53\xf4\x5a\xe3\x2e\xe4\x8c\xae\xa3\xa5\xfa\xa9\xdc\xeb\xef\xba\xb3\x25\xc3\xde\x2a\x88\x29\x00\x97\xa2\x10\x46\x11\x11\x0a\x53\x86\xa6\x70\xb0\x59\xb4\x40\x80\xc5\x41\xc0\xef\xfa\x1d\x4a\x29\x83\x6c\xf7\x65\x4b\x7b\x5f\x9e\xc7\x3a\xa5\x32\xcf\x2f\xef\xcb\x95\xbd\x7f\xb8\xba\x2f\xd7\x69\x1b\xfc\xb2\x54\x56\xad\xb4\xb0\x2c\xc0\x25\x98\x62\x91\x39\x67\x81\x63\xfc\xca\x34\x4d\xf4\x23\x51\x3f\x69\xbe\xcc\xd9\x2e\xc2\xca\xad\x9c\x05\x0e\x27\x32\x7e\x34\x0d\xaf\x41\x06\x76\x28\x4b\x72\x07\x9c\x24\x07\x3d\x20\xdb\x43\x98\xc8\x7e\x64\x2a\x92\x0d\x74\x73\xa0\x32\xba\x00\x2d\xad\x2f\x71\xa6\x97\x6b\x04\x6f\x5b\x58\xf5\xb0\x39\x3e\x35\x1f\x77\x0a\x18\xbe\x09\xc3\x84\x75\x5b\xc5\x52\xa2\xc1\xf5\x79\xc3\x5a\x5f\x54\x6d\xf2\x5f\x16\x7c\x6a\xe2\xdd\x03\xbb\x46\x4e\x0d\xf2\xbd\xf6\x02\x34\xd5\xce\x74\x3b\xbc\x54\xe3\x45\xbd\x2e\xbb\x66\x9f\xf5\x1a\xde\x42\x9e\x2d\xe5\x71\x5a\xc5\x60\x37\x20\x32\xc5\x32\xac\x89\x22\x13\x0e\xc8\xc6\xd5\x87\xc8\x29\xf5\xa0\xcd\x83\x10\x49\xc5\xd4\x84\x75\x7e\xe0\x9d\xa1\xcb\x14\xb3\xe9\x02\x2f\xf3\x93\xa1\x68\x8f\x3e\x00\x78\x0a\xae\x00\x80\x0b\xb6\xb4\xc9\xc0\xe1\x74\x43\x6a\x5b\x0f\x91\xa6\x18\x9f\xb3\x27\xda\x22\x36\x38\xc3\x56\x29\x06\x09\xdf\x21\xf3\x35\x01\xb9\x1f\x8d\x58\x10\x01\x20\x8d\x4c\xae\xcf\x88\x03\xc3\x84\x0a\x2b\x9a\x9d\xda\xac\x07\x7f\x33\x97\x76\xa0\x9a\x73\xac\xe6\x65\x38\xcb\x5a\x3f\xf6\x74\xca\x39\x76\x99\x5d\x4e\xbd\xb7\x81\x55\xa1\xf1\x03\xda\x0b\x00\xec\x6c\xc7\x60\xdf\x03\x8d\x1a\x07\xf0\xe8\x41\x36\x70\xcc\x89\x64\xef\x95\xcf\x9d\xa3\x89\x85\xe0\xc4\x55\x7b\xab\x16\x39\x30\xb5\x2d\x2f\x3f\xe0\x3b\x80\xbb\x59\x57\xaa\x0d\x8e\xd5\x4a\x1b\x8a\x73\x9a\x01\x25\x84\xc1\x1d\xd0\x69\x1b\x36\xcd\xe7\x8c\x44\x9b\x60\x72\x5c\x63\x81\x53\xa2\x88\x58\x16\xdf\x51\x2e\x5e\x04\xb1\x0b\x6e\x07\x6d\xbf\x66\x17\x0d\xb2\x63\x15\x02\xd4\xab\x5e\x17\xab\x30\x36\xfc\x2c\xd6\x82\x13\xd2\xd3\xf8\xc9\x42\x59\xae\x39\x0b\xdb\x4f\x31\x0d\x1b\xbe\x12\x40\xaa\x6c\x3b\xa7\x97\xc1\x96\xb8\xab\xa1\x34\x94\xe2\x2f\xf6\x04\x54\x62\xf5\x28\xdb\xd0\x24\x56\xf1\xd2\x9d\xf0\x6e\x17\x32\xee\x72\x12\x2b\x87\xaa\x14\x8c\x0e\x54\x02\xf2\xbe\x01\x56\x68\x46\x84\x00\xa1\xa5\x29\xe4\x2c\xf0\xa3\x58\xbc\xb0\xc2\xda\x68\x25\xab\x2a\x98\x71\x65\xb9\x56\xf0\xb8\x5d\x65\xcb\xf7\x12\xcd\xae\x25\x9a\x35\x6c\x7b\x86\x3a\x89\xa8\x00\x77\xd8\x22\x43\x36\xe3\xba\x3c\x41\x48\xe6\xb0\x57\xa4\xad\x54\x02\x57\x3f\x65\xfe\x5f\x65\x0e\xee\x88\x3a\x24\xd5\xa6\x2c\xb5\xa3\xc0\x3f\x02\xee\x91\x24\x94\x06\x6c\xa0\x02\x8c\xd6\xc4\x95\x19\x13\xf4\xf9\xa5\xf1\xae\x40\xb6\xe8\x82\xe7\xe8\x89\x4a\xad\x0b\x8f\x18\x04\x5e\x79\x53\xb5\xe2\xb6\x54\xf2\x01\xbc\x05\x79\xe5\x32\x9f\xa4\x54\x21\x1c\xcc\xb0\x64\x2f\x3b\xb0\xe7\x59\x7f\x00\x33\x6e\x4c\x5c\x6e\xc2\x3c\x59\x71\x68\x36\x30\xfe\x14\x8d\x6c\x9b\x9b\x1c\x04\x89\x3e\x6f\x76\x72\xa0\xf1\x84\x1a\x66\xe3\x99\xeb\xd3\x93\x51\xb3\xb5\xc1\xa2\x30\x02\x54\x26\x95\xaa\x72\xb7\x58\xec\xc5\x15\xa9\xc9\xc5\x46\x74\xca\x4d\x2e\x5e\xdf\x45\x72\x72\x1b\x2c\xf6\xb2\x64\x35\xf7\x49\x8b\x71\xd6\x25\x41\x2a\xee\x22\x91\x43\x49\xe9\xba\x55\x52\xda\x37\x98\xa8\x22\xc2\x7a\xf3\x78\xdd\x75\xd4\xc1\x22\xe1\x25\xa4\xa2\x20\x7f\xad\x0c\xb2\x41\xaa\x9c\x9f\x71\x05\x49\x0a\x11\x94\x0c\xab\x25\xce\x8d\x58\xb3\x04\xb2\x9c\x27\x6e\x1b\xf3\xbe\x53\x38\xa9\xe0\xfc\xb9\x59\x58\x8b\xd6\xcf\x3e\x6a\xc8\x28\xcb\xb6\xf8\x57\x55\xc4\x2c\xfc\x4f\x2d\x0a\x08\x08\x1e\x9b\x64\x70\x36\x9c\xca\x8e\x11\xe9\x2b\xcf\x85\xbd\x74\x77\xa8\xda\xd5\xb8\x73\xe7\x00\x7e\x2f\x23\x5b\x6e\xec\x22\x50\x9d\x1a\x5f\x71\x23\x6e\x52\xd4\x04\x50\x1a\x77\x86\x2d\x59\x4d\xf7\xd6\x8d\x1f\x80\xeb\xd1\x0e\x1d\x9b\x30\x0c\x8f\x78\x5c\xd9\x92\xd2\x84\x6d\xb1\xb8\x67\x98\xf4\xba\x85\x68\x02\x57\x98\xb0\xe1\x93\x34\xb4\x1b\x40\x05\x1a\x1b\x75\x56\xe1\xc3\x5e\xb4\xcb\x59\x4c\x04\x23\x58\xcd\x5f\x2e\x68\xfd\x74\x5b\xe3\xf4\x8b\x05\xb0\x9f\xee\xa4\x0a\x59\x25\x28\x7c\xcd\x78\xf0\x35\x82\xab\x8b\x9a\x34\x35\xc5\xb1\xa9\xfa\x63\x81\xe9\xb1\x0e\x95\x6e\x15\xd7\xde\xac\xcc\x3d\x4f\x84\x7f\x83\xd5\xa7\x16\xdb\xaf\x0f\x7b\x58\xc9\x67\xc5\x92\x7c\x11\xa1\xf4\xcf\x1f\xdd\xbd\xac\x66\x50\x1e\x04\x7c\x43\xe1\x26\x85\x29\xb3\xdc\x6b\x59\x8c\xb7\x29\x93\xdf\x14\xd6\xbd\xf7\x09\x03\x5f\x7c\xbe\x40\x1f\x3d\xde\x47\x8f\xf7\xd1\xe3\x6b\x45\x8f\x2f\x33\x33\x7a\xcf\x17\x14\x79\x2e\x55\xe6\x30\xeb\xb8\x42\x5b\xdb\x3c\xaa\xdb\x59\xea\xc2\x90\x18\xfb\x8b\xfd\xa1\x31\x2a\xa6\xf6\x59\x75\xb6\xa1\xd5\x90\x2d\xaa\xc6\x77\x2c\xe2\xc4\xc2\x67\xd9\x98\xd5\xb2\x95\x67\x99\x41\x72\xc4\x7e\xe0\x4f\xe4\x91\x88\x03\x84\x15\x4a\xb9\x56\xd2\x83\x28\x14\x20\xb8\x12\x12\xb3\x89\x36\xc0\xe8\x12\xa7\x24\x1e\x82\xaa\x17\x44\xb6\x59\xb3\xa8\x75\x68\x36\xa1\x44\x02\xe0\xa1\xd9\x06\x17\x9d\x30\x62\x26\xda\xcc\x44\x38\xc1\x9d\x4c\xdd\xc4\x80\xae\x7f\xef\xdd\xad\xbf\x3f\x42\x77\xfa\x1e\xa0\xb2\x3c\xde\x00\x34\xaa\x6d\x6c\x23\x36\x13\x3c\xcf\xbc\xa5\x8a\x4f\xc0\x44\x66\xd8\x47\x83\xbb\x15\x06\xe3\x7c\xad\x11\x8e\xb5\xc6\xbb\x9c\x70\x5e\x25\x10\x71\x23\xe4\x95\x90\x80\x34\x97\xf0\xd1\x55\x36\xda\xd9\x78\x49\x03\xbc\x89\x65\xf8\xd1\xcf\xe4\xc2\x3d\x23\x12\x6c\x2f\xde\xb6\x5d\x4a\x7f\x2d\xa7\x58\x37\x8e\x73\x99\xe5\xd1\x7b\x07\x9c\x05\xbd\x39\x7b\xbb\xe8\xdc\x46\x56\x99\xdc\x3a\xcb\x8f\x9f\xcd\x26\xd9\x39\x80\xb2\x8d\x5f\x5c\xe7\x22\xe3\x20\xf1\x24\x0b\x97\x6d\x6e\x01\xaa\x32\x9e\xe5\x26\x7a\x8c\x86\xc1\x44\x8d\x94\x4d\xa5\xfa\x84\x55\x34\xd7\xfc\xbd\x00\x6a\xda\x51\x54\x5d\xc1\x95\x9f\xd7\x4e\xd9\x30\x83\xd3\xb0\xf7\x16\xc3\x7d\x07\xbb\xb5\xb9\x5f\x5d\x84\xb5\xbb\xb1\x53\xdd\x5f\xa9\x56\x63\x60\x7d\x74\x9f\xd8\x27\x7a\xa2\xab\xa8\x68\xd5\xf8\xbb\xd1\x56\xb9\x50\xd0\xce\xe3\xf5\xb6\x40\xbe\x38\xb3\x38\x43\xc5\x8b\xc8\x4a\x4c\x8d\x2c\x27\x17\x74\xb3\x44\x10\x0b\xee\xfd\xa8\x05\x72\x6f\xd7\x4c\x71\xa6\x85\x75\xc5\xf5\x2d\x29\x66\x46\x5e\x14\x44\xe5\x42\xdf\x23\xb9\xa0\xee\xec\x57\x52\x59\xdb\xa9\x03\xec\x80\xc7\x61\x21\x98\x08\x07\x35\xb2\x8c\x5b\x1d\x47\x2a\xc7\x3e\xfc\x0f\x68\x22\xa1\xec\x41\x77\x66\xd2\x76\x9d\xfb\x5a\x38\x31\xaa\x61\x4f\x57\x12\xf6\x16\xbb\xdc\x5e\xf1\x75\xd5\x49\xa3\x6c\x16\x60\xba\x35\xdb\x62\xbb\x40\xb6\x37\x7e\xd9\x0d\x76\xbe\xf1\x53\x27\xfb\x6c\xf2\xed\x12\xcc\x99\x8d\x0b\x01\x97\x42\x9d\x6d\xb8\xa9\x95\x9e\x42\xb4\x3d\x6b\x27\x03\xd0\x4c\x53\x56\x19\x5b\x69\xea\xbf\xfc\x5f\xa6\xc4\x8f\x59\x9a\xff\x42\x5c\x8c\x98\xf9\xfd\xc0\xc3\xeb\xeb\x17\x0a\xdc\x4a\x9c\x92\x02\xd9\x4f\x94\x31\xc0\x00\x09\xc1\x62\x38\x19\x8c\x52\x8f\x2e\xae\xc7\x10\xd4\xb0\xae\x55\xd3\x4d\x31\xc3\x33\x40\x44\x3d\x80\xf8\x33\x10\x57\x0b\x91\xdf\x90\xb4\x29\xd3\x06\xdc\x4a\x33\x4b\x9b\x72\x59\x54\x9b\x84\x3e\x8d\x28\x6b\x01\x19\x8b\x20\x86\x66\xea\x77\xa5\x8e\x37\x93\xd8\xef\x06\xb7\x3f\x8e\x6f\x86\xb7\x57\xf7\x37\xa7\x25\xb1\xfd\xf4\xe2\xfe\xf6\x6e\x78\xd3\xf8\xac\x48\x57\xfc\xcb\xfd\xf0\xbe\xe5\x91\x6b\xe0\x62\xf0\xfd\xf0\x22\x7c\xe5\x2f\xf7\x83\x8b\xf3\xbb\x5f\xc6\x57\x1f\xc6\xb7\xc3\x9b\x9f\xce\x4f\x87\xe3\xdb\xeb\xe1\xe9\xf9\x87\xf3\xd3\x81\xfe\x32\x7c\xf7\xfa\xe2\xfe\xe3\xf9\xe5\xd8\x05\xf7\x86\x8f\x7e\xbe\xba\xf9\xf1\xc3\xc5\xd5\xcf\xe3\xa0\xcb\xab\xcb\x0f\xe7\x1f\x9b\x66\x31\xb8\xbd\x3d\xff\x78\xf9\x69\x78\x79\xb7\x54\x11\x69\x5e\x8d\xd6\xea\x93\xc1\x45\x16\x18\x67\x02\x31\x69\xb2\xb0\xa4\x4d\xff\x01\x2e\x82\x6b\x43\x8f\x87\x07\xee\x2f\x53\xd0\xf5\x50\xb3\x40\xe7\x7d\x2a\xb8\xc7\x88\x79\xf7\xa0\xbf\x54\x15\x9e\x49\x97\x7d\x5a\x1a\xed\x09\x1a\xc0\x59\x01\x85\xa1\xd4\x29\x60\x4e\xf8\x91\x3a\x87\x32\xd0\x61\x42\x53\x0a\xbe\x65\x74\x88\xaa\x1b\x5e\x6e\xd0\xce\x09\x86\x60\xbd\x63\xf1\xb2\xd3\x20\xab\x89\xad\x40\x29\x27\xc8\x71\x68\x62\xd4\x76\x03\x99\xb9\x60\x38\xa5\x91\xf9\xa1\x82\x1a\x89\x0a\x84\x84\x6a\x8b\x25\x02\x2b\xb7\x3c\x27\xe8\xc7\x3f\x17\x83\x02\x4f\x81\x35\x10\xe4\xb5\x42\x60\xf6\x81\xc8\xcd\xaa\xae\x22\xcf\x52\x4f\xee\x98\x5b\x13\x2e\x9c\x5b\x5b\x2f\x16\xdc\x3a\x39\x0b\x50\x92\x4a\x3e\x1e\x5b\x2f\x1e\x1d\xa2\x0a\x8d\x9f\xa0\x5b\x40\x68\x90\x85\xea\xae\x77\x31\x4b\xf2\x19\xad\x95\x8b\x9e\x90\x39\x7e\xa4\xdc\xa1\xee\x9b\xe2\x04\xb0\x8e\x56\xb4\x42\x87\xa8\xf5\xa0\x9c\xa0\x41\x1c\xcb\x32\x83\x2b\x51\x8e\x63\x99\x87\xe5\x61\x87\xc0\x46\x2c\xf6\x6c\xb3\x42\x47\xc5\x91\x83\x15\xdb\x3d\x06\x45\x9d\x1d\x96\xef\xde\xad\xf0\x54\xe5\xc3\xd8\x91\xf2\x78\x23\x61\xe0\x0e\xcb\x87\x86\x2a\xf4\x8d\xf7\xab\x43\x03\xd9\xae\xc7\xf6\xd2\xf7\x8d\x9d\xfa\x95\x1d\xc3\x41\xdb\xac\xcf\x56\x30\xdb\x15\x5d\xba\x19\x27\x95\x8a\x43\x9d\xfb\x2b\x55\x2c\x6a\xec\x6c\xa7\x5e\x95\x66\x69\x0c\x8e\xe4\xd8\xd3\xff\x1a\xf3\xb8\x86\x4f\xaf\xfc\x97\x4b\x45\xb6\x71\xb0\x6e\xeb\xfa\x5a\x6a\x79\x9a\xd6\xdf\xb2\x94\x0e\x77\x84\x4a\xd3\x5d\x18\x04\xbc\x78\x1a\x81\x5b\x0d\x53\x66\xab\x88\x10\xef\xf7\x71\x75\x73\xf5\x39\xf6\x95\xad\xf0\x84\x3f\x96\x94\xcb\x94\x48\x89\x5b\x30\x2b\x02\x93\xd8\x36\x8c\xc1\x9f\x50\xfb\x61\x47\x7a\x72\x67\xf2\x4e\x7f\xb5\xcc\xe8\x73\x13\x6a\xc6\x6e\xa2\x5a\x60\x8d\x5d\x3c\x2b\xba\x32\x59\x6d\x9a\xbf\x1c\x14\x21\x2b\x5c\x04\x91\x3c\x6d\x6e\x96\x8e\x66\xb5\xea\x82\x35\x16\x87\x09\x5d\x65\xeb\x47\xba\x04\xad\x6f\x0c\xe4\x6b\xfd\x17\xb8\xbc\x3e\x6b\x50\x5d\xc9\xaf\x18\x16\xce\x35\x35\xe2\x4d\x55\xfe\x60\xa4\x07\x08\x9b\x64\xc2\x42\x9a\x92\x79\x34\x37\xde\x1c\x7d\x65\x1c\x8c\xd8\x53\xb0\x21\xa5\x70\xdb\x41\xd8\x12\x80\x20\x7e\xd6\xc7\x8d\x3e\x96\x82\x98\x41\x64\xa4\x10\x51\x1b\x10\x82\x71\xbc\x15\x55\x6f\x56\x10\x78\xb0\x5f\x5b\x90\xfa\x06\x25\xce\x1a\xaa\xf0\x37\x15\x3a\xf3\x73\x0b\xea\x8b\x6d\xa1\x29\x77\x1d\x42\x50\xe2\xac\x69\x04\x3b\xa8\x70\xf6\xa2\xa8\xc4\x3e\x29\xd2\xe4\xd0\xa6\x13\x0b\x53\xa0\xa7\xeb\x56\xfb\x0f\x6e\x46\x7f\x30\x7e\x87\xbc\x05\xd7\x22\x68\xcd\x03\x13\xa3\x43\x2d\xb3\xba\x7c\x6b\x1b\xf0\x20\xd1\xa1\x01\x3b\x7b\x0f\xf1\x8c\x83\xeb\xf3\xf7\x07\xe8\x7d\x98\xd3\xf5\x7e\xa3\x03\x68\xc7\x6d\xab\x9c\x81\x36\x55\x0a\xec\x2f\x1f\x3b\xd8\xab\xca\x49\xb4\x7b\x66\x0f\x22\x6a\x3b\x87\xfa\xcb\xd2\x37\xe0\x04\x86\xaa\x5d\xc6\x4f\xea\xc3\x8a\xad\x0b\xc8\xc8\xb8\x54\x36\xac\x5d\x3c\x62\x93\x45\xd5\xc9\x73\xe0\xbd\x3c\x9d\x4f\xe9\xd6\x95\xa8\x74\x7b\xf5\x24\xe0\x1d\x87\xbb\x2e\xbf\x0f\x56\xa4\x15\x0f\x4c\x64\x33\x9f\x06\x5c\xac\x2d\x1a\xa0\x8f\x13\x6f\x9a\x55\xc9\x5e\xe6\x16\xb3\x71\x53\x56\xc9\x3f\x6f\x8d\xdc\x3a\x04\x57\x0f\x9a\x56\xc4\xc6\xd5\xb7\x08\xd7\x3d\x95\x3d\x2f\x95\xed\x22\xaf\xa0\x3c\xb8\xf5\x2f\xd0\x53\x23\xc7\x05\xcd\x38\x83\xab\x56\x26\x3c\x83\x2f\x95\x2b\x5b\x5d\xe7\x73\x4d\x9f\x6f\xb0\x26\xab\x9d\xbe\xb7\x26\x70\xc0\xb8\x5d\xeb\x63\xad\x0e\x75\xa0\x6c\xed\x14\x4e\x4d\x0e\xa1\xa2\x29\x39\x40\x9c\x25\x8b\x20\xd8\xc1\x9e\x57\x20\x37\x13\x0b\x34\x27\x54\xb8\x4e\x2c\xcc\xdc\x5a\x49\xe7\x6b\x4a\xe3\x6d\x34\xb2\x45\xa4\xc9\xe5\xe0\xd3\xf0\x6c\x3c\xbc\xbc\x3b\xbf\xfb\xa5\x01\x42\xb0\xfc\xd8\xa1\x08\x06\x2f\xdc\xfe\x72\x7b\x37\xfc\x34\xfe\x38\xbc\x1c\xde\x0c\xee\x56\x20\x0c\x2e\xeb\xac\x0d\xbd\x2e\x97\x4d\xea\xdb\x3a\x08\x76\xce\xcc\xdb\xd0\x7b\x1d\x67\x30\xe8\x84\x92\x16\xac\x41\x93\x60\xcf\x62\x22\x50\x4c\x1e\x49\xc2\xb3\xc2\xac\xda\xb8\x60\x01\x08\x61\x43\xfb\xcb\x80\x08\xa1\xcd\xea\x1a\x9f\x20\x53\xa2\x2a\xa8\xd2\xe9\x1b\x04\x91\x0f\x0b\xc2\xde\x2b\x44\x3e\x67\x09\x8d\xa8\x0a\x12\xf0\xb8\xb0\xee\x15\xe3\x3e\x84\x28\xd0\x15\xc4\xb5\xb3\x68\x94\x9d\xeb\xfc\xa1\x27\xbd\xae\xed\xfb\x13\xe5\x41\xb1\x56\xd6\x3d\xd9\x81\x62\xdf\xe2\x34\xae\x61\x76\x6d\x30\xba\xe7\x30\x0f\xd4\x33\x61\x6c\x12\x5d\x0b\x9e\x57\xf3\x20\x57\xdf\x86\xcb\xe2\x64\x4a\xe7\x7a\x79\xa0\x4c\x37\x4a\x7d\xe5\x70\x97\x52\x3d\xc0\x1d\xe0\x5b\xd8\x18\xf1\x35\x03\x16\x6a\x65\x2e\x98\x89\xed\xc4\x48\x90\x94\x2b\xad\x80\x99\x88\x80\x03\x2d\x54\x51\x9c\xd0\x7f\x00\x12\x94\x20\x47\x41\x04\x05\x24\xda\xc5\x61\xc4\xa5\x45\x69\x38\x1a\xb1\xb3\xe1\xf5\xcd\xf0\x54\x33\xa4\x23\x74\x2f\x01\xe4\xa9\x34\xf5\x33\x4b\xde\x46\x1c\x0b\x23\x19\x28\x93\x8a\xe0\xb6\x60\x30\x22\x04\x17\xdd\xf9\x83\xef\x6f\x08\xdf\x35\x93\x37\x3c\x2b\xd9\xa6\x9c\x01\xe0\xb2\xb5\x98\x6b\x10\x9b\xbf\xf3\xd4\xa7\x1b\xfc\x54\x5a\x91\x10\xe4\x02\x24\x91\xf2\xaa\x3f\xe3\x6a\x03\x86\x63\xf7\xf9\x95\xfa\xbc\x86\x6f\x97\xcd\xf3\x0e\x42\xec\xa4\x2a\x00\x21\x0d\x66\xa4\x2f\xd6\x51\x99\x67\xab\xa8\x28\x5e\x03\x10\xa3\x42\xfa\x13\x32\xc3\x0c\x89\x9c\xb1\x0a\x42\x68\x68\x69\xab\x07\xcd\xac\x7b\x54\xf5\x9a\xe1\x94\xe7\x0c\x94\x06\x08\x63\x6d\x18\x8c\xcc\x08\x53\x2b\x06\xf3\x5a\x70\x27\x95\xa1\xee\x2f\xe2\x49\xc3\x40\xdb\x40\x4f\x9a\xfc\x49\x50\x31\x76\xbd\x6b\xd9\x05\xe5\x95\x9c\x4a\xfa\x50\xf9\xfb\xb9\x59\xcb\xc6\xf2\x61\xeb\xee\xee\xb0\x7c\x58\xdd\x55\x4c\xa2\x87\x75\x2f\x9b\x6a\x06\x64\x62\x0b\xee\xd6\x8c\x7d\x0b\xfd\xd4\x56\x94\x80\x3a\xcb\xd1\x03\xfa\xe1\xee\xd3\x05\x9a\x52\x2d\xf7\xea\x6b\xe5\x12\x6b\x19\xfb\x5e\x24\xbe\x88\xbd\x91\x41\x72\x91\xf8\xbb\x17\x36\xde\x89\x52\x81\x94\xa0\x6f\x34\x3c\x23\xce\xd8\x2b\x2c\xa6\x5d\xa5\xa2\x84\xc0\x2c\xe6\xa9\x99\xc7\xb1\xcc\xa7\x53\xfa\xf9\x48\x61\xf1\xf5\x1a\x12\xcd\x69\xc9\xc1\x56\x21\x23\x1b\x3e\x69\x21\x16\xc1\xaa\xb0\x52\x4e\x18\x3e\x12\xa6\x76\x22\x64\x43\x13\x0d\x19\xde\xdd\x4c\xe5\xa6\xbc\xde\xf9\x59\xc1\xa1\x7d\x99\xf7\x20\x34\x47\x09\x0c\x97\x95\xcd\xaa\xb1\x7e\xe1\x36\x6f\xf5\x63\x67\x07\x28\xbc\x5a\x5f\x97\x15\xf1\xdd\x76\xb5\x8b\x32\xbb\x45\x6c\xa6\x83\x28\xdf\x10\xf3\x45\x12\xa3\x8a\x07\x58\x03\x56\xc3\xaa\xee\xb9\xe9\x73\x8e\x65\xb5\xcb\x95\x5b\xbe\x01\xc0\x49\xa9\x99\x8f\x04\xf2\xff\x76\x11\x4d\xbd\x4e\x9e\x37\x0c\xe4\x5e\x24\x10\x07\xbc\xd4\x14\x63\x4a\xfc\xea\xe3\xeb\xc5\x13\xdc\x41\xd0\x34\x83\xd1\x92\x0f\xc9\x04\x81\xa2\xf3\x27\xe8\x3a\x21\x5a\x7c\xc8\xb5\x08\x91\x27\x89\x03\x83\x5a\x2e\xe2\xac\x05\x60\xf6\xec\xf3\x0a\x04\xe8\x25\x13\x73\x60\x68\xcb\x67\x16\xac\xc1\xee\xb3\xf3\x83\xf5\x05\x3b\x28\x58\xc3\xca\xaa\x10\x30\xe0\x85\x09\xfe\x04\x7b\x08\x2e\x71\x63\xfa\x0f\xcd\xe6\x05\x91\x73\xde\x9a\x11\x17\xce\xf6\x79\xe6\xe0\x96\xf2\x19\x27\x61\x23\xef\xc6\x6d\xc1\xc1\x1d\x2e\xe7\x33\xd3\x44\xa3\x48\xb0\x6c\x8a\x1e\xc5\xde\x87\x30\x58\x68\x4e\x1b\xca\x66\x87\x06\x8e\xb9\xc2\x5e\x14\xc2\x64\x15\xf6\xf7\x42\x22\x5f\x18\x07\xa2\xff\xbc\xb0\x82\x16\x71\xed\x54\xc9\xa2\xe2\x13\xd2\x77\xfa\x7a\x5c\xd6\x66\x3f\x14\x4d\xe8\x01\x37\xb3\x36\x0b\x60\x0f\x72\x9b\x8d\x6d\x91\x25\x80\x2f\xbb\xc5\x66\xca\x8d\x3a\x45\x3b\x03\xdd\xd6\x8f\x03\x62\x59\x91\xf0\xf5\x5c\xee\x9c\x12\xb5\x94\x26\xd0\x43\x46\xad\x0f\x19\x65\xab\x19\x78\xda\x03\x80\x37\x25\x20\xa3\xbb\xf0\xd8\x54\x2f\x79\x6b\x65\x5d\x95\x6a\x53\xda\x9d\x4e\x79\x35\xa5\x2f\xf4\xb9\x3f\xdb\xd2\xe5\xa3\x27\xb3\x18\x43\xa6\xe2\x36\x61\x1f\xa5\xf9\x1b\x73\x35\xb4\x49\x62\x64\xd2\xd2\x0d\xa0\xad\x5d\x3b\x6f\xaa\xcf\xb0\x20\x4c\x8d\xd8\x8d\x1e\x85\xf9\xa2\x70\xfd\x17\xd5\xea\x49\x51\xdb\x71\x8a\xb0\xfd\x0a\x16\xbd\x2d\xf2\x4a\x8e\xcd\x4b\xa0\x0b\x3d\x63\xf6\xf4\xf7\xe6\x1d\x93\xcc\x6e\xc1\x5c\xf4\x54\xe9\xb4\xd0\x1b\xb5\xb0\x17\xcd\x29\xe4\x92\xc7\x44\xda\xcb\x83\x2a\x0b\x16\xe0\x45\xe5\x9c\x38\x58\x5d\xf8\xcc\xf3\xaf\x26\xe6\xea\x34\x53\xe6\x2c\x42\x72\xc4\x82\x3e\x96\xa0\x30\x1a\xed\x70\x43\xb1\x1f\xf6\x99\xc6\xde\xd3\x02\xff\x34\x3b\xc4\x05\x9d\x51\x16\x14\x6a\xb1\xd3\x4b\x71\x06\xf6\x44\x73\x06\xf9\xd4\xdf\x3f\x77\x36\xac\xfd\x08\x46\xfc\x3f\xff\xfd\xd7\x23\xda\x66\x6e\x97\x63\xbb\x02\xfb\xb0\x93\xeb\x6d\x4b\xb8\xf3\x01\x3c\x44\x0b\xec\x80\xcc\x27\x1e\xbb\xb9\x14\xaa\x5f\xfc\x6a\x2f\x37\x4d\x34\x5c\xcd\x8d\x7f\xb1\x4c\xee\x60\x8c\x17\xf9\xf2\x5b\x36\x60\x71\x85\x07\xba\x70\x33\x06\x51\x9e\x0e\xfc\xdf\x44\xe7\xe9\xf6\x2b\x17\x4a\x85\x41\x05\x28\x6d\xdb\x44\xc3\xcd\xb1\x7c\xbe\x90\x87\xc6\x8a\x2a\xc6\x4a\x19\xde\x91\xab\x82\x1f\xcc\x20\x4d\x16\x9d\xde\x95\x5c\x12\x61\x0e\xb4\x87\xf3\x41\xf5\xa2\xcb\x10\xfb\xb6\xc2\x87\x43\x52\x4c\xd7\x8a\xd3\xd6\xef\x37\x23\xe4\x95\x8c\xb8\x78\x46\xc4\x38\xce\x4b\x41\xb9\xab\xda\xbe\xd6\x1f\x9d\xe5\x6a\xb1\xba\x7d\x99\xe0\xe8\x61\x1d\x54\x42\xfd\x7e\x4b\xb3\xab\x05\xc3\x20\x74\xa2\x2c\x1c\xb6\x60\xfe\x91\x0a\xe6\x9f\x8d\xe5\x2b\x69\xed\x70\xd1\x30\xa8\x9a\x1d\x08\xf7\xf6\x26\x32\xc8\xc4\x30\x72\x34\xc9\x0b\x2b\x87\xc7\x7a\x8f\x8f\x46\xec\x83\x29\x96\x00\x8a\x87\x19\x40\x04\x89\x14\xe4\x73\xc6\x25\x29\x65\xf6\x34\xe0\xb7\xdb\xcc\x3c\x3b\x8c\x66\x99\xb4\x52\xb5\x7c\x2b\x91\xf4\xd5\xd1\x1b\xeb\x1b\x5e\x9f\x72\x33\x05\x6e\x25\xf5\x44\x34\xa3\x9a\x76\xc6\x8d\x27\x6d\xfd\xa9\x77\x2d\xff\x51\xc4\xca\x00\x8e\x8f\x4a\x16\x07\xc8\x4f\xaf\x42\x10\x09\x79\x24\x60\xa6\x84\x31\x86\x28\xfd\x65\x53\x53\x0b\x3b\x59\x75\x80\x8a\xb4\x3a\x60\x0b\x28\xae\x8e\xa0\x9c\x7c\xd4\x44\x8b\xe5\xb4\x8a\xad\x33\x80\x9a\x1c\xfe\x6b\x48\xa1\x83\xb0\x5a\xc1\x82\x28\x44\x3e\x2b\x62\x8b\xed\xdd\xb9\x1c\xad\x7a\x58\x37\x6a\x4e\x33\x69\x17\x91\x76\x4f\x15\xb5\x89\xd8\xcc\x5c\x97\x84\x16\xbb\x7b\xdf\x26\x65\xcd\x31\x8b\x6d\xa6\xa1\x95\xa5\xb5\x4c\x01\xb3\x33\x76\x20\x1f\x83\x6d\xf3\xe5\x02\x98\x67\xd3\xa6\xc1\xa3\x86\x8b\xcc\xe9\x45\x5a\x32\x07\xb7\x35\x17\x5a\x40\xcd\x99\xa2\x89\x26\x0e\x3b\x06\xad\x35\xe7\xcc\x03\xad\x41\xc4\x70\x1b\x96\x17\x95\x92\xb2\xd9\xd8\xae\xa4\x4b\x9a\xeb\x76\x31\x94\x69\xea\x93\x69\xca\xfc\xf8\xbd\x6b\x68\xb9\x9d\xd7\x90\x35\xe0\x2c\xb9\x74\x3d\x10\xac\x19\x77\x93\xb1\x00\x59\x2e\xcb\x6f\x4c\x63\xb3\x14\xd4\xd4\x74\x85\x89\xae\x63\xa4\x00\xb1\xae\x9e\x1f\x5f\x5c\x21\xd2\xa6\xe0\x99\xc4\x1a\x88\x80\x56\x2d\x39\x86\xb2\x35\xb7\xf0\x9c\x79\x11\xcd\x16\xed\xf1\x19\xd4\x95\x34\x45\xec\xba\xb3\x61\xde\x38\x49\x26\x38\x7a\xf0\xca\x86\x57\xb9\xb9\x70\xa0\xe7\x5a\x40\x85\xaa\x4e\x86\xb8\xf4\x40\x23\x90\x6e\x42\x2f\x8c\x41\x48\xb1\xc3\x2e\x3a\x37\xab\x66\x21\x9e\x0c\x24\x8e\x19\xbd\x89\x19\x8f\x49\x96\xf0\x45\xda\x72\x9f\x55\x53\xb3\xb6\x89\x80\x68\xcb\x0c\xdb\xe9\x55\x56\x61\x7a\x6b\x5f\x66\xb5\x3c\x8f\x1d\xe0\xf5\xac\xc1\x25\x3f\x26\x7c\x02\x56\x3e\xab\x65\xbb\xdc\x85\x20\x84\xbe\x7a\x9e\xd7\xcd\xa8\xa8\x9e\x48\x2a\xb3\x04\x2f\x96\xf5\x60\x62\xf9\x9f\x77\xdf\x4c\xee\xf7\x6a\x23\x58\xf7\x28\xd8\xc6\xcf\x9f\x03\x81\xf5\xc2\x49\x02\xe6\x5d\xc3\xbf\x2a\xc6\x24\x93\x44\x75\x94\x09\xae\x05\x05\x3e\x62\x0a\xcf\xdc\xe6\x5a\xe1\x92\x3f\x31\x22\xe4\x9c\x66\xa5\x6a\x6f\x5b\x87\xdd\x5a\x8a\xb6\xff\x31\x41\xa6\x6b\xf0\x4e\x9e\x1d\x1a\xe4\x07\x4d\x1f\x32\xc3\x51\x61\xfc\x8b\x12\x2c\x25\x9d\x2e\x02\xc0\x06\x1f\xc1\x08\x69\x31\x65\x6d\x39\x28\xb0\xd4\xc4\x68\xcc\xf8\x76\x93\xb1\xbc\x7d\xb6\xd6\x7d\xf9\xf8\xd1\x38\x44\xc6\xd2\xf7\x49\x1d\x9d\xc3\xdd\xd4\x16\xa5\xa3\x15\x49\xd3\xa4\x66\x6f\x96\x61\xbc\x14\x54\xa5\xdd\x8c\x50\x08\x93\x76\xd8\x56\x91\xf1\x40\x0a\x21\xc8\x88\x2a\xa5\xa8\xc1\xe6\x6b\xc5\xc9\x99\x3f\x35\x71\x7a\x10\x06\xc8\x55\x2f\x3e\x3e\x40\x72\x2b\xf0\xa2\x2e\x74\x71\x46\x12\xb2\x93\x48\xd6\x0d\x88\xa4\xea\x61\x0f\xc8\x63\x29\x69\x14\x20\xe9\xab\x8d\x0b\x1b\x04\xd8\xb6\x40\xa0\x34\x0f\xfd\x67\x33\x50\x1b\x63\xdb\xb4\x8b\x60\xff\x82\x55\xee\xaa\xbb\x34\x61\xa9\x99\x16\x2c\xc9\x15\xdd\x94\xe8\xaa\xe8\xd4\xcb\x2b\xfb\x48\x6a\xaf\x1c\x8a\x5a\x1b\xd7\x47\xd2\x25\xe2\x60\xe5\x01\xd8\x88\x03\xd5\xf9\x74\x37\xba\xb0\x7e\x42\xc5\xd1\x8c\x28\x53\x58\xdb\x57\x0f\x7f\x4b\x34\xb1\xb3\x40\xfa\x1d\xad\x7e\xf3\x21\x5f\xef\xd4\xde\x12\x25\xdd\x95\x50\x83\xa7\xb3\x9b\xb3\x87\x5b\xb0\x1f\xc7\xd2\x08\xae\x5f\xbc\xdc\xb2\x75\xf2\xb9\x1d\x99\x4d\xc1\xfe\x0d\x09\x54\x66\x8e\xb1\xfd\xc2\xa7\x5b\x97\x80\x86\x70\x09\x9c\xcd\xac\xd1\xeb\x73\xbd\x2a\x69\x7f\xe9\xa2\xd7\xfa\x34\x5e\x1d\x55\x41\xdd\xbd\x3c\xb8\x9e\x3c\xe8\xc0\x0b\xf7\xf0\xf2\x6f\x3b\x06\xfb\x79\xff\xec\x81\x70\x58\xbb\x12\x77\x27\x22\xbe\x21\x32\xd9\x0b\x49\xb1\xb6\x15\x2f\x25\x2f\x1e\x3a\xf4\x98\x02\x8b\x65\x7f\xb7\x68\x3f\x4e\xf2\x8d\x75\x03\x3d\xdf\x05\xbb\x9a\x5e\x76\x42\x1f\x00\xa4\x88\x21\xdf\x34\xb7\x95\x19\xe0\xf0\x06\x21\x63\x35\xdf\xc3\x8a\x60\x3c\x3b\xbc\x4e\x61\x78\xb5\xe5\x7c\x8e\xed\xb5\xc9\x45\x9d\x37\xf7\x39\x49\x6d\xdd\xb1\xec\x42\x47\x79\x66\x2f\x8e\xa5\xc6\xe0\x83\x3e\x26\xb6\xdb\x2d\xda\x00\x59\xe2\xb6\x6c\x97\x87\xac\xa9\x6c\xd5\xf6\xe9\xd1\x2e\xe5\x6c\x9c\x09\x32\xa5\x9f\x37\x12\xc5\xaf\xe1\x53\xab\x5e\xea\x65\xae\x14\xc2\x02\xf7\x0c\x14\xce\x0a\xe2\xf6\xec\x4a\xdb\x62\x39\x23\x56\x64\x9c\xd9\x74\xb3\x07\xb2\x40\x5c\x94\x7e\xda\x14\x5c\x6f\xf7\x45\xbb\xcc\xbe\xce\x95\xca\xe4\xc9\xf1\xf1\x8c\xaa\x79\x3e\x39\x8a\x78\x6a\xc2\xcd\xb9\x98\x99\x3f\x8e\xa9\x94\x39\x91\xc7\xdf\x7d\xfb\x6d\xb1\xc5\x13\x1c\x3d\xcc\x0c\x5c\x49\xdd\xef\x54\xda\xf2\xdb\x7a\x61\xdb\xf5\x4b\x3d\x08\xce\xc6\xe4\xb3\x26\x52\xb9\x29\x90\xcd\xbd\x24\x12\x0d\x7e\xbe\x45\x72\xc1\x14\xfe\x7c\x82\x3e\x51\x06\x02\xc8\x0f\x3c\x17\x12\x9d\xe1\xc5\x21\x9f\x1e\xa6\x9c\xa9\x39\xfa\x04\xff\x6b\x7f\x7a\x22\xe4\x01\xfd\x42\xb0\xb0\xfb\x6b\x4b\x22\xf9\xea\xba\x73\x0c\xb9\xb8\x12\x91\x47\xbd\xc2\xdf\xfe\x07\x4a\x4d\xcb\x27\xe8\x9b\xe3\x6f\xff\x03\xfd\x1e\xfe\xff\xff\x8f\x7e\xdf\xa2\xa9\xad\x07\x85\x03\x85\x33\x6f\xca\xee\xb8\x83\xca\x4a\x6d\x50\x4b\xf8\x54\xf0\x62\xa7\x1a\x5b\x7e\xa0\xd1\x03\x9f\x4e\xc7\x8a\xa6\xc4\xe4\x06\x8d\xb1\xa8\xc1\xa8\x6e\x88\x2b\x48\x6d\xe5\x53\x41\x0d\xdc\xb6\xab\xad\x60\x3b\x35\x99\xd0\xee\xb8\xc9\xbc\xa8\xfc\x08\x41\x20\xa5\x6a\x9a\x54\xc2\x57\x24\xd6\xa7\x62\x9d\x80\x0f\x67\x9d\xa9\xd7\x67\x2f\x90\x03\xc2\x6a\xbe\x3e\x70\x2b\x8c\x42\x34\x81\x1a\x76\x21\x1b\x8f\x43\x2d\x3c\xf2\x8b\x89\x79\x83\xa9\xbd\x56\xbc\x9b\xac\x75\xbe\x3a\xd4\xed\x96\x8b\xad\xe4\xe5\x07\x52\x8b\xb9\xed\x58\x47\xc4\xd5\x90\x0c\xeb\x4a\x43\xd2\x29\x17\x1e\xdf\xd3\xe8\xb5\xb6\xda\xd8\x6a\x2b\x14\x15\x26\x38\xa8\xdb\xa1\xd7\x53\x3f\xf3\x9f\xac\x1a\x26\x44\x0a\xb9\xb7\x8b\x3a\x4a\x30\x5a\x7d\xc5\x69\x96\xd8\x30\xe2\x06\x10\xb0\x55\x1b\x7a\xeb\xf3\xbe\xa1\x71\x08\x5b\x83\x90\x7d\xe6\x24\x13\x9b\x93\xdc\xb8\x9f\x00\x8d\xb4\x0b\xd4\xb4\x1a\xca\xf6\x16\x7c\xce\x98\xca\x0a\x16\xe1\x40\xda\x2b\xd8\xec\x02\x6b\xee\xb1\x21\xd0\x9c\xa9\xb6\x71\x80\x04\x86\xc8\x2f\x35\xc7\xcc\x28\x51\x53\x1c\x51\x36\x3b\x08\x30\xc6\x20\x55\x3a\xe4\x59\x4d\x2b\x79\x87\xe5\xc3\x6e\xa3\x99\xb6\xae\x3e\x46\xe3\xa2\x02\x8e\x45\x05\x30\xd6\x53\x5a\x03\x58\x52\x58\x3e\xb4\xc1\x62\xd4\x30\x79\x96\x8c\xce\x2f\x85\x43\xf2\x59\x36\x3e\x97\x7a\x49\x42\xa1\x0d\x00\xb7\x5d\xdd\x49\x8b\xd0\xe5\xb2\x67\x30\xdc\x34\x34\x21\x71\x15\x9a\xae\x3a\xfe\x55\x84\x60\xd4\xe2\x20\x6e\x06\x90\xcb\x52\xad\xf8\xc5\xc6\x3c\xcb\x16\xe6\x28\xe9\x9b\x0b\xcb\x07\xe9\x4b\xe0\x21\x99\xe2\x24\x39\x40\x82\xe4\xd2\x94\x60\x94\x24\x99\x1e\x3a\x10\xf1\x18\x25\x7c\x46\x23\x9c\xa0\x49\xc2\xa3\x07\x39\x62\xfa\x2a\x61\x33\x73\x03\x66\x82\x47\x44\xca\xe0\xee\x2d\xd2\x32\x6d\xb2\x0c\xd4\xbf\x53\x44\xa4\x94\x51\xa9\x68\xe4\x2e\xd5\x22\x13\xda\x54\x3b\xd5\xda\x50\xc4\x4d\xd5\x3e\x18\xae\x96\x05\x88\x81\x35\xcb\x99\x2d\x37\x01\x0c\xdd\xa2\x15\xb9\x30\xd0\x36\xea\xdd\x01\xf8\x92\xdb\x9e\xb1\x2a\x9f\x86\x15\xf4\x7c\x6a\x3f\x83\x33\xb4\x8c\x62\x6e\xca\xe4\xec\xa9\xc1\x93\xb9\xc7\xf4\x75\x44\x51\x04\xb9\x96\xee\x36\x1f\xfb\xb9\x67\x58\x30\x30\xe4\x16\x04\x98\x55\x34\xad\x57\x11\x2e\x45\xa8\x70\x52\xf5\x8b\x51\x16\x25\x79\xec\x6b\x5c\xe9\x4b\xe2\x51\x13\x89\x5b\x1e\xbd\xf6\xfa\x2a\x39\x40\x58\xa2\x27\x92\x24\xfa\xbf\x26\xc6\xf5\xd0\x43\x4e\x6b\x7e\x68\x60\xc1\xa1\x13\xc7\x22\x5b\x29\x0a\x26\xb1\x27\xa5\x19\xfd\x25\xbd\x2e\x5b\x5c\x29\x48\xe8\xe5\x59\x93\x3d\xea\x95\x6e\x85\xe7\x2b\x8d\xad\x4c\xb6\x80\x33\xd2\x3e\xa8\x8e\xf6\x0a\xd1\x94\xd0\x6b\x28\x0e\x9e\x3e\xd2\xa2\x0c\xa9\xed\x6d\xa9\x3d\x43\xcf\xa8\x93\x31\x23\x24\x8a\x8d\x0d\x74\x95\xa9\xd4\x12\xe3\xa9\xa9\x5f\x6d\x26\x04\x52\x6d\x1e\x45\x84\xc4\x8d\xe1\x90\x7a\x44\x7b\x07\x3f\x77\x8d\xd5\xdc\xe4\x58\xa7\x5c\x99\x2a\x78\x06\x7e\xce\x19\x5a\x0c\x5e\xd9\x24\xe1\x13\xb8\x90\x00\x99\xce\xe5\x68\x06\xf9\x5d\x66\xde\x24\x46\x5f\x05\xf7\x8b\xcf\xff\xff\xba\x19\x27\xad\xb4\x22\x7b\x80\x4a\x57\xb5\xf0\xb4\x62\xd3\x95\x0b\x39\x1d\xa1\xeb\x0a\x68\x45\x58\x08\x19\xeb\x6b\x63\x29\x00\xca\x2b\x21\xd9\x55\x26\xf1\x7c\x3b\xb4\x26\x92\x5d\xa9\xcf\x1d\x20\xd9\x55\xe6\xd9\x12\x44\xce\x67\xcf\x9a\xfc\xaa\x27\x75\xc1\xbb\x67\x24\x19\xf0\x24\x23\xe2\x95\x48\xd0\x1d\xc8\x45\x13\x21\xee\x17\x4a\x5f\xa5\xdc\xd9\xeb\xa2\xf4\x55\x06\xb3\xcf\x28\x7d\x95\xa1\xee\x2f\x4a\x5f\xc3\x40\x3b\xa0\xf4\x19\x2f\xf3\x58\x13\x75\x37\xa6\x00\x19\x16\x93\x7c\x7a\x0b\xf7\xee\xd2\x31\x9e\x1a\x0f\xb6\xb9\xc6\x9c\x28\x69\x41\x6b\x61\xb4\x36\x19\xaf\x2d\x2e\x07\xcb\xad\x68\xcf\xbb\x81\xa8\x34\x5a\x7c\x96\x60\x56\xbe\x3a\xa0\xa2\xb9\x20\x91\x26\x3f\xc3\xa8\x94\xc0\x4c\xc2\x54\x0f\xac\x75\x49\x8f\xc2\x18\x54\x23\x9c\xd9\xe4\xe6\xb6\x5a\x12\xfb\x93\xc6\xb9\x1e\x00\x22\xe0\xb2\x95\x58\x7d\x27\x54\xa5\x4f\x15\x38\xf6\x39\x7f\xb2\x92\x23\x90\x9f\x21\xc6\x56\xd2\x83\x4e\xc7\x56\xa1\x6f\x5b\x31\xca\x14\x99\x55\x45\xfa\xe2\xb0\x50\xa6\xfe\xf8\xdd\x4a\x0e\x64\x60\xe7\x9c\xe9\x20\x00\x45\xb7\x48\x17\xbe\xfc\x0a\x89\x6d\x4d\x76\xa9\xb5\x6b\x3d\x1d\x73\xa3\x4a\x94\x62\xea\xf4\xfc\x5c\x82\x2f\x69\x4e\xe5\x88\x99\x7c\x23\x5b\x0a\xec\x08\x7d\x80\x4a\x8f\x38\xcd\x12\x72\x80\xfc\xfc\xa8\xa6\xa0\x51\xfe\xcd\x37\x7f\x24\xe8\x1b\x94\x12\xcc\x4a\xf6\x0d\xd0\xea\xf5\x95\x07\xb8\x66\x6a\x4e\x46\xac\x71\x2b\xd0\xf0\xb3\x29\x1e\xe3\x02\xce\xce\xd9\x94\x3b\x7b\x09\x54\x30\xc3\xd1\x1c\xc9\x7c\x62\x4a\x70\x06\xf6\x2d\xa7\xe7\x5d\xf0\x19\x78\x4a\xe1\x26\x76\x83\xde\x18\xcf\xb1\xc2\x70\x3a\xe2\x39\x96\xa6\xd6\xe3\x39\x36\x9f\xbe\xbd\xc5\x73\xac\xec\x79\x37\x3c\xc7\xa6\x2d\xdf\x00\xcf\xb1\xd4\xcc\x17\x83\xe7\x58\x59\xd1\x2f\x06\xcf\xb1\x32\xaf\x1e\xcf\xf1\x0b\xc1\x73\x5c\xcd\x47\x1a\x11\x0b\x9b\x0f\xef\x7a\x88\x85\x8d\xfa\x55\x3b\x8b\xd8\x16\x1e\x06\xa4\xb9\x17\x46\x2c\x2c\x4d\xa0\x8f\xce\x5a\x3f\x3a\xab\x91\xf8\x6c\xdf\x7a\x78\x2e\x64\xab\x7a\x91\x75\xc4\x2c\x2c\xed\x4f\x67\xd3\xe7\x2e\x28\xf1\x79\xe3\x01\xc1\x03\xd3\xd5\x1c\x32\x28\xad\xa2\xb4\x48\xa7\x5a\x32\x72\x58\x53\x46\x73\x0a\xbd\xcf\x3d\xe5\x6e\x10\x57\x58\x59\x5e\xef\xb3\x31\xb4\xb8\x4b\xe3\x7c\x43\x19\xef\x2d\xe8\xd5\xa5\x5e\xad\xe9\x1c\x71\x83\x00\x27\x49\xb3\x61\x90\xa6\x74\x57\xcd\xae\xba\xc8\x3c\x92\x0e\x68\x53\xb5\xac\x32\x7d\x3d\x99\xe1\x18\xd9\xb8\x92\x4c\x07\x69\xfe\xe6\xcb\x19\x95\x4a\xb4\x46\xd6\xd4\x46\xb8\x8d\x1b\x36\xcb\x37\xc1\xec\x98\x6d\xf6\x59\x4a\x52\x2e\x56\x85\xf5\x34\x7e\x69\x0b\x10\x6c\xf2\x29\xc9\xe6\x24\xd5\x42\xd0\x78\xdd\x46\xba\xee\xb7\x4f\x39\xb4\x99\x2f\x26\xcc\xae\x44\x04\x81\x93\x55\xbf\x1b\x1b\x3c\xbb\xce\xdb\xbd\xed\x36\x5b\xc4\xbd\x35\xad\xf8\x0e\x71\x74\xb9\xb5\xc4\xbe\x54\x72\xa5\x03\x7d\x37\x06\x6b\xf8\x58\x99\x0d\xc3\x31\x5a\x50\x0c\xeb\x1d\x82\xb7\x56\x12\x71\x18\xca\xa8\x25\x0f\x69\x7d\x04\xa5\x75\x77\xba\xcd\x16\xcb\x9e\x8b\xd6\xa8\xc1\x2e\x76\xbd\x48\xe5\x38\x01\xc5\x29\xac\xd2\x55\xa5\xef\xc9\xa2\x21\x0d\xa9\x9b\xe1\x98\x32\xf5\xa7\x7f\x5f\x27\x8c\x02\x84\x7c\xbb\x6e\x50\x59\x04\x47\x11\x91\xc6\xd4\x68\xa3\x4a\x4d\xd5\xfb\x5c\x24\xdb\xec\xaa\x3e\x1c\x7a\xde\x9a\x65\x7a\x68\xd0\xb8\x20\x1e\x73\x01\xcf\x05\xcf\x67\x73\x67\xcd\xd0\x54\xa8\xa7\xd6\xb4\x97\x3f\xd5\x4c\x86\x6b\xef\xe5\xf7\x39\x4d\x36\xb3\x15\xdd\x96\xca\xad\x7c\x3c\xbf\x43\x72\xee\xe9\x7f\x02\xcd\x36\x6e\x6c\x7d\xd0\xdd\xfb\xb4\xdf\x7a\xb3\x35\x74\x73\xe0\xe0\xf0\xa6\x3c\x49\xc0\xf0\x2a\x49\xfa\xd8\x56\x35\x1f\x26\x7c\x47\x37\xac\x0d\x0e\x5f\x83\xfb\x46\x2a\x9c\x66\x9d\x24\x9a\x6b\x23\x6c\x49\xe4\x46\x5f\xf5\xdd\x9a\xa8\x2e\xce\x08\x6b\xb2\xf6\xfc\x5c\x2f\x12\xf0\xc6\x62\xeb\x5c\xac\xd7\xce\xe2\xeb\xdc\x92\xbc\x70\x8c\x5d\xd3\x3c\xd6\x60\x01\xa5\x90\xf3\x82\xc7\xbb\xe0\x05\x23\xc7\x0f\xf4\xfc\x46\x6c\x50\x0a\x4e\x77\xe5\x38\x27\x8b\x22\xba\xd5\x88\xc4\x21\x27\x01\x6c\x75\x6b\x27\x00\x93\xbe\xfe\x0b\x04\x77\x83\xe4\x68\xa2\xef\x5c\x84\x1d\x84\xe6\x92\xf8\x10\x47\x8b\x28\xa1\x51\xa0\x02\xce\x04\xce\xe6\x4d\xec\xc6\x2d\x7b\x0f\x41\xf1\x5a\x10\x14\x6d\x05\x43\xd6\x09\x2d\x76\x74\xc5\x70\x4a\x7a\x68\x8c\x26\x68\x8c\x03\x9f\xfc\xcd\x8a\xd2\x27\xaf\x98\x53\x5c\x3f\x77\x3d\x3e\xc6\x2b\xe0\x63\x6c\x72\xf8\x0a\xf0\x8b\xd2\xb1\xeb\x31\x3b\xde\x75\xc2\xec\xf0\x97\xe0\x5e\xc1\x30\xb4\x9f\xc7\x57\x4e\xef\xaf\x0f\xec\x35\x31\x3a\x1a\xc4\x85\x75\xe4\xa6\x65\x20\x1d\xcb\xe8\xa2\xd3\xba\xbc\x2e\x64\xc6\x7a\x2b\xb3\x16\x1a\x46\xe3\xdd\xb5\x27\xd8\x18\xed\xdb\xb0\x27\xe7\x66\x97\x09\x20\xeb\xd5\x76\x0b\x93\x40\xd6\xd1\x6e\xd6\xcb\x07\xf1\xf4\xf0\xb6\x72\x42\x8a\xc2\x3a\x9b\xe5\x85\x0c\x9c\x4b\x95\x08\x34\xe7\x49\x6c\xa2\x96\x82\xd5\xf2\x1d\xf8\x68\x64\xbf\x40\x6e\x33\x6e\x33\x12\x19\x6d\xab\xa8\x8e\xb3\x2c\xfb\xc3\x6f\xe2\x5b\xcf\x00\x09\xe4\xdf\xdd\x66\x81\x84\x2b\xbb\x69\x26\xc8\x8a\xc1\x2d\x13\x3d\x36\xcc\x06\x09\x7a\x5c\xea\x74\x72\xb3\xeb\xe4\x78\xaa\x12\xcb\x06\x31\x41\xb5\x32\x46\xdb\x23\x65\xa4\xf8\xf3\x38\xc3\x02\x27\x09\x49\xa8\x4c\x9f\x2d\x30\xf1\xb4\xec\x7d\xd4\x67\x55\x70\x63\x9f\x61\x79\x3a\x31\xa4\xe8\x06\x62\x8b\xa7\x29\x8e\x44\xce\x42\x9c\x1f\xbf\x31\xc8\x15\xd7\xca\xe1\x5e\x00\x93\x4e\x34\x87\x4a\x7d\x53\x4c\x05\x23\xb2\xb5\x2e\x1a\x89\x72\x41\xd5\x62\x6c\xcb\xcc\x75\x3f\x70\xb7\xf6\xcb\x53\xfb\xe1\x72\x87\xad\x4b\x91\x76\xfd\xf9\xb2\x76\x19\x11\x50\x33\xc3\x55\x7f\x08\x4a\xe9\xd9\x14\x78\xe2\x0b\x6f\x40\x28\x66\xed\xda\x6e\x0b\x21\xc6\x4f\xe3\x20\xab\x63\x1c\x55\x89\x63\xd5\x61\x6d\x02\x61\x59\x36\xc9\x67\x86\x21\x69\x71\x8a\x3e\x03\xe4\xbe\x0d\xdd\x36\x4d\xeb\x01\x07\x9e\x4d\x30\x16\x16\x1b\x13\xe4\x65\x5b\xa5\xaa\x65\x9c\x98\x31\xae\x9a\x8b\x2d\x2d\x19\xec\x20\xf8\xaa\xc3\x88\x83\x4e\x76\x34\x6c\x7d\xd0\x85\xc8\x33\x45\x27\x75\x9c\x90\x1d\x96\xe0\x1b\x24\x90\x91\xec\x6c\xfc\xa5\x6e\x4d\x5d\xbe\x12\x27\xb6\xb3\xd3\xf2\xbf\x05\xd5\x71\x70\x2b\x94\xcd\x12\x52\xca\x25\xba\x4a\x29\x50\xa1\x39\x3f\x60\xfd\xd5\xd4\x59\xb6\xcd\xbe\x77\xd1\x0b\x18\xaa\xfb\x19\x13\xd1\xd1\x88\x0d\x24\x7a\x22\x88\x11\xb3\x84\x4d\x75\xfb\xbc\x49\x19\x0a\xa1\x4c\x88\xee\xc9\x87\x5a\x68\xe1\x81\x2a\xe9\x6b\xf1\x98\x3e\xa6\x38\x91\xe4\x40\x37\x0c\x25\xfc\x14\x87\x18\x40\x8c\x9e\x04\xce\x32\x22\x46\xcc\x46\x94\x83\xb7\x83\xf3\xc4\xb4\xdf\x16\xe9\x68\xd7\x80\x8c\x23\x1c\xcd\x5f\x68\x8f\x30\x24\x04\x44\x73\x12\xbb\xd4\xda\xf2\xf6\xb8\x79\x1b\x83\xf5\x1a\x9b\x75\x3e\x75\xb5\x64\x0e\x6c\x27\x49\xa4\x39\x8a\x2f\x2d\x9a\x11\xa1\x47\xad\x69\xf8\x91\x30\x44\xa7\x6e\x1c\x36\x14\x05\x3d\x81\x5b\x48\x93\xfe\x23\xa6\x89\xc9\x55\x77\x5d\x3b\x21\xd0\x98\xdf\x47\xcc\x78\x6f\x59\x54\xca\x92\xa3\x8c\xca\xb9\xe6\xd4\x39\x38\x04\x41\xcd\x58\x4b\xf2\x8c\x63\x59\x36\x32\x1a\xf5\x8d\xfe\xa3\x64\xde\x38\x2c\x65\x00\x45\x01\x16\x0a\xc4\xfe\xb9\x72\x36\xcb\xe4\xcc\x3e\x92\xbc\x1e\x49\xde\xbc\x36\xfb\x18\x4d\xee\x0f\xcb\xba\x11\xe5\x6d\xdb\xbf\x0b\x09\x72\x87\x91\xe5\xaf\x1c\x82\xfd\x3c\xd1\xd7\xaf\x1b\x2e\xff\x1c\x91\xf2\x7d\x3c\xf9\xdb\x8b\x27\x6f\x3f\xb6\x6b\xc5\x94\xaf\x00\xf7\x71\xbd\x6c\x1b\xc0\xeb\x01\x67\x9e\x35\x88\xd7\x87\x4c\x04\x5f\x74\x0c\xe4\x2d\x10\x71\xfa\x60\xde\x67\x0a\xe6\x6d\x58\xe2\xf5\x02\x7a\x37\xb2\xad\xbc\x7c\xac\x61\xb5\xc2\xf9\x73\xc6\x1b\xae\x08\xb1\x91\xf9\x64\xfc\xec\x47\xaf\x71\xce\x5d\x4f\xe0\xcf\x9e\x28\x8c\x48\x24\x34\x9d\x4d\x48\x1c\x83\xfd\x5e\x71\x5b\x9f\xb2\xa0\x1d\xa7\x87\x69\xe6\x8b\xa5\x26\x76\x9c\x70\x36\x93\x34\x36\x99\xf5\xa6\x12\x7a\x49\x4b\x84\x8c\x52\xd8\xdf\x24\x21\xc2\x99\x7f\x05\xfa\x4a\x52\x2d\xf7\x07\x26\x61\x81\x62\x4e\x24\x7b\xaf\x8c\x56\x86\xd9\x02\x3d\x30\xfe\x94\x90\x78\x06\x3b\x54\x1d\xcc\x21\xa2\xe4\x00\x51\xe5\x3f\x13\x90\x82\xca\x73\x35\xd2\x63\x87\xa0\x1e\x23\x02\x12\xfb\x6d\x50\x89\xd5\x37\xf3\xf5\x11\x42\xe7\x0c\x4d\x71\xa4\x0e\xca\x35\xe0\x63\x6e\x4a\x6b\x6a\x35\x27\x98\x78\xd1\xc8\xb3\xc5\x9a\x36\xc6\x96\x56\xa8\xcd\x9d\x37\x4d\x00\x83\x84\xe2\xad\xc2\x82\x1e\xf1\x36\xc0\x79\x9f\x72\x69\xfd\xc7\x88\x33\x7f\x98\x2c\x3a\x85\xc7\x0a\x85\x0a\x83\x06\x77\x93\xf1\xb8\xd5\x4c\x53\x99\xca\xba\x63\x29\x62\xb8\x6c\x61\x43\x6b\x63\x87\x76\xcd\x72\xc7\xfc\x89\x49\x25\x08\x4e\xad\x5d\x53\x33\x6f\xf0\xff\x9b\x08\x2e\x3d\x7a\x2a\xcc\xa5\xbd\xce\x16\x5f\x50\xf6\xa0\x77\xb7\x40\x47\x85\x3a\xb1\xd0\x73\xd3\xa6\x65\xfa\x0e\x21\xa7\x9c\x19\xdf\xc6\x36\xfb\x27\xe9\x8c\xe1\x64\x4d\xb5\xb1\xb6\x72\x75\x77\x84\x33\x07\xd9\x0b\x58\xdf\xcb\xc6\x4e\x81\x4c\x8f\x6b\xa9\xe5\x95\xf9\x86\xce\x10\x8c\x62\x92\x11\x16\x13\x16\x2d\x80\x44\x18\x00\x0f\x08\x86\x13\x84\xe1\x3b\x9c\x1c\xa1\x33\x13\xe9\xee\x65\x26\x7b\x51\xc2\x15\x99\x62\x46\xa7\x5a\xf4\x02\xfb\x91\x1d\xe5\x88\x99\x61\x3a\xf3\x6d\x50\x7c\xd7\xaf\x58\xc3\xce\x7c\x4f\x19\x2e\xa5\x16\x6c\x70\x9e\x92\x7c\xad\x58\xd7\xc0\x10\xb4\x68\x83\x0c\x56\x78\x15\x8a\xef\x1a\x9b\x81\x24\x94\x2d\x46\x13\xa8\xaa\xaf\x2f\x21\xb3\x48\x18\x29\x0c\x36\xe2\x39\x49\xb2\xa0\xf4\x67\x86\x85\x92\xee\x68\x1b\x14\x4b\xcd\xb7\xd3\x9c\x19\x08\x03\xa3\xbb\x3f\x59\xb0\x42\xeb\x1e\x28\x1a\x3f\x1a\xb1\x73\xf5\x5e\x6a\xce\xc7\xd9\x2c\x59\x20\x1c\x3f\x52\x59\x60\x08\x47\x9c\xc9\x3c\x25\xa2\x52\x51\xdb\xc4\x8e\x21\xec\x48\x53\x8f\x4d\x4b\xd1\x8f\x38\xa1\xb1\xee\xd6\xdc\xda\x33\x34\x21\x53\x2d\x91\x64\x58\x48\x67\x63\x6a\x70\x12\xda\xcd\x8d\xf5\x5a\xbd\x1a\xb7\xfc\x29\x64\x88\x28\x2d\x78\x27\xb6\x5a\xe5\x71\x95\x73\xda\x55\x5f\xc2\x35\x27\xb5\x49\xa1\xe5\x22\x83\x5d\x85\xb3\x55\x18\x1b\x0e\xe7\x29\x37\x41\x21\xba\x1f\x27\x9d\x9a\xc1\xad\xc5\x01\x2a\x13\xb4\xa3\x36\xa6\xcb\x90\x6b\x12\x0a\xd7\xb5\x54\x58\xd1\xc8\x0a\xc2\x5c\xd8\x8b\xc3\x5e\x2c\xed\x5b\x7b\xb6\x25\xa6\xac\x8c\x70\x52\xdf\xe1\x25\x7e\x28\xf3\xfe\x72\xde\x6a\x8f\x9b\x69\x7b\x69\x0e\x46\xc4\x93\x64\x1d\x84\xe0\xca\xcc\x4f\x8b\xcf\x97\x8f\xa8\xe8\x47\x6f\x80\xdb\x0b\x38\x35\xc6\x9b\x87\x13\x2b\xf3\x49\x65\x77\x29\x7c\xc9\xdc\x6e\x0b\xeb\x2d\x1c\x31\x3e\x35\x05\x1e\xdb\xfc\x7c\x99\xe0\x29\x5d\x07\xfb\xcb\xb8\xbe\x6e\x5c\x5c\xde\x8a\x88\x0c\x17\xbd\x07\x95\xd9\x0d\x79\xd9\x1e\x21\x82\x1b\x33\x23\x01\x2e\x39\x43\x29\xce\x36\x5a\xf0\x55\xf6\x8b\x01\x4a\x8d\xf1\xc8\xae\x9e\x34\xe5\xff\x1f\xc8\x02\xa0\x81\x92\x27\xbc\x28\x32\x55\xda\x50\x9d\xd8\x5a\xe4\x70\xaf\x5f\x3f\x67\x53\xbe\xc6\xe1\x2c\x32\x4b\xec\xe9\xc3\x8e\x66\x83\xf3\xe7\xa3\x24\xcd\xee\x9b\x35\xed\x72\x1e\x4f\x9b\x88\x7a\xed\x93\xe9\x56\xf0\x39\x95\xa9\x90\x89\x84\x7a\xd4\x3a\x77\x6b\xf9\x68\x05\x2d\x22\x18\xce\xf2\xa5\xfa\x54\xa2\xc3\x9d\xaf\x51\xa5\x1d\x64\x74\x76\x17\x5e\x73\xdd\xdc\xea\x0b\xac\x99\x3d\x24\x9d\x16\x6b\xcb\x54\xba\xf5\xd0\xa9\x5c\x8f\x1e\x93\xaa\xf9\x84\xae\x84\xde\x5c\x47\x57\x9c\x6a\x49\xc8\xa8\x0f\x85\xaf\xde\x06\x2d\x4f\x69\x42\xe4\x11\x3a\x6f\xd0\x1b\x5d\xc8\xb0\x77\xb1\x99\xe0\x29\x27\x3d\xe5\x82\x06\x75\x53\x9c\x8c\x84\x28\xa0\x3b\x87\xd6\x28\x41\xf4\x98\x23\xe3\x0d\xe3\x06\x8a\x0a\xe2\x95\x04\xd5\x3c\xcb\x08\xab\x0a\xa4\x68\xcd\x0b\xa8\xcd\x3f\x36\x32\xbc\xff\x80\x1b\x2f\x32\xb6\xa5\xa1\x8a\x51\xb5\x6c\xe9\x2e\xf0\xe0\xbb\x47\x64\xbb\x5e\xef\xf4\x17\xf5\xbd\x69\x1c\xe1\x5d\xb9\xf5\xb5\x47\xe7\xa5\xfc\xf5\x5d\x7b\x1f\xe0\x53\x67\x67\xc4\x68\x2a\x08\x98\xa2\x53\x9f\xe2\xc8\x62\x22\xa4\xe2\x1c\xee\xbb\xdb\xb3\x1f\x8f\xef\xcf\x11\x51\x11\xd4\xea\x1f\xb1\x48\x3e\x1e\x68\xf1\xf8\xef\x39\x51\xfa\xe7\x96\x14\x00\x9a\x12\x26\x81\x13\x50\x55\x4b\xae\x6e\x5e\x48\xb7\x30\xfa\xbf\x67\xe5\xef\x97\x90\x7c\x2d\xa1\x04\x68\xd7\x81\x85\x03\x99\x02\xd0\xac\x59\x5a\xd9\x40\x31\x46\xc5\x1b\x36\x15\x9b\xd9\x20\x80\x94\xfd\x2d\x67\x6b\x0a\x5d\xa7\xc5\x47\xc1\x28\x5a\x64\xba\x34\xc3\x80\xc4\xb6\x5e\x64\xaa\xf9\xa6\xb1\xf5\x55\x4c\xa4\x48\xd4\x71\x2a\x7b\x51\x97\x07\x29\x41\x08\xb0\x10\x4f\x4f\xf6\xae\xb7\x89\x91\x7e\x62\xc1\x47\x47\x23\xf6\xc9\x99\xc6\x8b\x5f\xa5\x6b\xc2\x44\x3b\x7b\x80\xba\x72\x2b\xd0\x6c\x4c\xa5\xff\x01\x60\x86\x65\x9e\x28\x53\x30\x62\x4a\xb5\x96\xee\x06\x6a\x9e\x34\x71\x09\x81\x59\x34\xbf\xe4\xf1\x76\x88\x5b\xd3\x31\x49\xd6\x91\x44\xcf\xa7\xc3\x44\x6a\xfa\x8e\x1e\x5a\x4e\xe7\x26\x25\x51\x8a\xc9\x80\x1c\xe8\x40\xf3\x8d\x8e\x63\xec\xb1\x89\x29\x3f\x41\x10\x18\x53\xab\xf1\xc4\x26\x65\x50\xef\xa2\x95\xd4\x8d\x2d\xd5\x04\xf2\xf9\x20\x1d\xe8\x05\x61\x35\x62\x22\x67\x00\x81\xea\x5d\x2b\x18\x49\x22\xa8\xf1\x71\x44\xce\x2c\x63\x8d\x64\x33\xcd\x26\xb4\xe4\x07\xfe\x35\xce\x40\x3f\xe3\xb9\x84\x98\xc0\x94\x28\x7d\x41\x7d\x05\x65\x96\x8c\x73\xeb\x00\x65\x82\xa6\x54\xd1\x47\x22\xbf\x6e\xd8\xba\x53\xac\x70\xc2\x67\x03\xa1\xe8\x14\x47\xea\x0e\x6f\xa5\x81\x63\xdb\xcc\xa6\x81\x12\x6e\x18\xe8\xfc\x4c\x2f\xfe\x8c\x30\x22\x60\xa2\x5a\x27\x6f\x3e\xc2\xf0\x64\x23\xce\x0d\x45\x1f\x22\x03\x93\x2f\xbd\xc5\x02\xe7\x8a\xa7\x5a\xbf\xc5\x49\xb2\x00\xf8\x7b\xfd\x64\x8e\xe5\xdc\x6d\xb4\x09\xec\xe9\x72\x37\xd9\xc5\x3d\xc5\xd1\x9c\xdc\x2a\xac\xf2\x46\x63\x70\x65\x94\xef\x08\xcb\xd3\x77\x27\xe8\x7f\x8a\x39\x9e\x0e\x4e\x7f\x18\x8e\xcf\xce\x6f\x07\xdf\x5f\x0c\xcf\x82\xf9\xd8\x27\x9f\xce\x6f\x6f\xeb\xbf\xfe\x70\x7e\x57\xff\xf1\xfa\xea\xfa\xfe\x62\x70\xd7\xd4\xca\xc5\xd5\xd5\x8f\xf7\xd7\xe3\x0f\x83\xf3\x8b\xfb\x9b\x61\xc3\xa7\xf7\x77\xed\x0f\x6f\x7f\x3c\xbf\xbe\x1e\x9e\xb9\x55\xf9\x6b\x70\xba\x20\xe0\x07\x82\xf1\x9a\xa7\x51\x3d\x80\x87\xa8\xfc\xe2\x09\xba\xaf\x02\x73\xda\xa8\x19\x93\xd9\xf8\x84\xa5\xe6\x61\x10\x1c\x35\x62\xc8\x7d\xae\x17\xa5\xed\x53\xe3\x57\x8c\xe6\x04\x25\x9c\x3f\xe4\x99\x65\x6d\x26\x3d\x82\x71\x63\xf8\x21\x32\x68\xed\x87\xf3\xbb\x93\x3a\x40\xa8\x6f\x2c\x00\x30\x70\x67\x00\xc6\x85\x1d\x3b\x05\x5b\x4a\x26\xc8\x23\x1c\x56\x6f\x2a\x0d\x7a\xf0\x3b\xb3\xac\x1f\xd3\x1a\x66\xaa\xd2\x4d\x1c\xdb\x9a\x5a\x6e\x62\x41\xc3\xe5\x7d\x5d\xb6\x9a\x7e\x39\x0c\x22\x3a\x9a\x90\x08\xe7\xc6\xfb\xaa\xef\x29\x21\xb8\x08\x07\x5c\xd0\xc3\xee\x1a\xb5\x74\xd4\xd8\x60\x65\xcf\xf4\xc4\xe5\x03\xcd\x32\x12\xbf\xab\xcb\x2f\xe5\xe2\x4b\x12\x4e\x9f\xee\x33\x38\x93\x5a\xaf\x07\x9d\xdf\xc1\xf9\xce\x2d\xec\x3a\x95\xc6\xc3\x54\xf8\xdc\x00\xa9\x4e\xdf\x09\x1e\x76\x95\x82\x3f\x18\x2b\xf4\x44\x20\xc9\x26\xb7\x78\xe6\x46\xf7\xd6\x67\x1b\xba\x33\x9e\x0c\x57\x44\xa3\x94\x7c\xd3\xca\x8c\x77\x21\x70\xeb\xef\x25\x69\x62\xc4\x5b\x64\x4a\x9c\x99\x46\x81\x3b\x3b\xe7\x3c\x8c\xb8\xc5\x67\xe4\x6e\x83\x06\x0b\xf9\x12\xf9\xaa\x7e\x23\xad\xb8\x2c\x34\xdb\xee\x32\x1e\x97\x1d\x5a\x42\xf0\xeb\x3e\xb0\x12\xca\xdb\xca\xb5\xba\xe3\x31\x5e\x68\xe2\x80\xa8\x18\x99\x67\x19\x17\x0a\xb5\xb4\x61\xbc\x23\x66\x7c\x70\xe7\xd8\x79\x78\x1e\x07\x8d\x68\x09\x43\x36\x80\xec\x76\x4b\x98\xb3\xeb\x5a\x30\x8e\x10\x79\x03\x14\x41\x8f\xc6\x9d\x96\x54\xea\x12\x85\x36\x09\xbf\xdb\xc4\xc2\x65\xfa\x82\xef\x5a\x1c\xa2\xa9\xf7\x2b\xd7\x42\xe3\x96\x27\x64\xaa\xc6\x8d\x5e\x9f\x25\x06\x4e\xdd\x22\x6b\xcb\x31\xa6\xb3\xf9\x0e\x5a\xec\xae\x25\x7c\x67\xfd\xa5\x5a\x35\x08\x2c\x04\x82\x73\x65\xe4\xd3\x42\x87\x41\x6e\x35\xc1\xbc\x60\x3b\xb5\xd1\xc1\x5e\x08\xd4\x32\xff\x03\xe3\x4f\xcc\x5b\xf6\xe5\xd1\x88\x0d\x31\x94\x58\xf3\x8a\x88\x0b\x1a\x06\x2d\x60\xa5\xfc\x5f\xaa\xd8\xf4\xa2\x61\x25\xed\x10\x56\x05\xdd\xdb\x72\x94\xc9\x02\x15\x55\xb9\x4a\xdf\x75\x39\x3d\xc6\xea\xed\x44\x40\x33\x61\x5b\x4f\x46\x91\xcc\x5a\xe6\xcd\x3c\x0b\x07\x2a\xb8\xdd\x75\x57\x47\xe8\x67\x67\xf9\x81\x08\x9d\xa2\x9a\x9c\x32\x37\x4e\x82\x17\x0e\xa3\xa7\x69\x61\x77\x01\x7b\xb3\xeb\x98\x9d\xe5\x0b\xec\x53\xfc\x1b\x56\xb9\xa4\x80\x33\x66\x2c\xb2\x6b\x04\x28\x9e\xfa\x8f\x6e\xc9\xf2\x08\xe6\x0f\x50\x1c\xc6\x3a\xac\x41\xe8\x60\xc9\xe2\x7f\x99\xcd\x32\xb9\x09\x0e\xf6\xdd\x16\xeb\xb0\x1e\x54\x7d\x7e\xc0\x03\x68\x52\x17\xd0\x94\x26\x09\xc8\x01\x47\x68\x00\xb5\xd5\x20\xb4\x5f\x5f\x85\x2e\x0e\x8c\xce\x18\x5f\x15\x7a\xd2\x42\x4c\x51\x40\x4c\xb7\xed\xc4\x24\x81\x9a\x8a\xcc\xae\xdd\x50\xd4\x0e\xb2\x7c\x35\x6f\xc1\x75\xc8\xbf\xee\xb9\xbd\x6b\x28\xef\xaf\x11\xc6\x55\x1b\x6e\xf0\xe1\xbf\x9a\x87\xfe\x31\xc7\x02\x33\x05\xc1\x49\x56\x74\x17\x24\x08\x92\x25\x9f\x21\xfc\x8f\x19\x43\x30\xfc\x14\x6e\xae\x73\xf9\xcf\x28\xa4\x72\xc4\x07\x88\x1e\x91\xa3\x03\x5b\x20\x59\xe6\x93\xe2\xcd\xb9\x96\x1c\x46\xac\x16\x22\x72\x84\x06\x89\xe4\xf6\x0b\xc2\xa2\x04\x6a\x19\x06\x71\x54\x9e\xf2\xad\x5b\x69\xb2\x00\x05\x05\xb6\xb2\x68\x9e\xdb\x07\xc1\x87\x23\x86\xa5\xf1\x89\x27\x70\xd2\x8b\xdf\x9b\xea\x95\x96\xe2\x24\x9e\x11\xaf\xb6\x76\x0d\x3d\xdb\x26\x99\x42\x16\xcb\x36\x08\xde\x80\x8d\x29\x42\x77\x82\x9c\x5c\xf4\x15\x56\x28\x21\x58\x2a\xf4\xed\xd7\x6b\xc5\x86\xb8\x09\x16\xdc\xd5\x1e\xdf\x22\xa4\xd9\xc5\x44\xb6\x15\x5d\x86\x42\x43\x08\x23\x46\x9e\xc2\x80\x1d\x0e\x31\x56\x8f\x54\xe6\x50\x1e\x32\xc8\xc2\x30\x05\xfe\x4c\xae\x16\x84\x95\x1a\x95\xa9\x85\x8f\x38\xf4\x39\xeb\x3e\xb5\xc3\x6a\xa0\x2c\xab\x3c\x51\xa3\x9e\x01\x48\x43\x11\x9d\x38\xc7\x6a\xc4\x2c\x67\x75\x61\x23\x41\x29\xaf\x41\x92\x94\x23\x02\x31\x04\xbd\x32\x3d\x61\x28\x6e\x79\xe4\x17\xe8\x12\xd4\x2f\x1f\x44\x56\x2e\x74\xed\x0f\x8b\xd6\xd4\x46\xcc\x67\xc0\x87\x6d\x37\x4a\x3b\x4d\xf6\xe5\x17\x14\x82\x1b\xba\xbf\x30\x55\x46\x3b\x08\xc3\xed\x55\xe0\x97\xf8\x63\x6a\x36\xfd\x25\xb2\xf1\xae\x3b\xe8\x2e\x2a\x37\xdb\xc7\xe1\x9a\x7d\xe2\x0d\xe6\xf6\x96\xcd\x0d\x64\x8b\x6d\x14\x70\x1f\xcd\xf8\x52\x1e\xdf\xd2\xd0\xcf\x63\xc8\x4e\x58\xcd\x05\x8b\x68\x7f\xc7\x3a\xc0\xd0\x4d\xe3\x20\xf8\x38\x88\xcc\x84\xe0\x74\xc7\xf8\xec\x9b\x2d\x9e\xd7\xec\x6d\x4f\xff\xa0\x98\xbf\x9b\x8a\x0f\x82\xab\x4f\xbc\x5d\xd8\x1b\xc4\x7f\xc3\x11\x04\x50\x42\x4f\x2e\x74\xb3\x9e\xa2\xef\x80\x0d\x31\x18\xf3\x1b\xc5\x43\x5b\x30\xf8\x08\x0d\xe1\xa2\x71\xf5\x83\xf1\xd4\x39\x24\x82\x97\x47\x4c\x6b\x26\x2e\xa3\x37\x68\xbf\x4c\xe2\x4d\x27\xc0\xc0\x83\x6c\xe5\xcb\x49\x57\x83\x30\xb7\x69\x13\x0e\x9d\x04\xda\x00\x94\x59\x34\x9c\x9d\xa0\x98\x47\x0f\x44\x1c\x0b\x12\x53\x79\x02\xbe\x75\xd5\xea\xd4\x4b\xb5\xb6\xbd\xb5\xa4\xd1\xb5\x96\x7f\xbd\xf2\x6e\x0a\x45\x71\x21\x2c\xdd\x95\xbb\x3a\x40\x74\x0a\xea\x84\x0b\x75\x35\x69\x2b\x2e\x01\x9a\x30\x25\x16\x19\xa7\x4c\x79\x53\x56\x65\x21\x9c\xa6\xa1\x85\xb6\xb6\x20\x6d\xb1\x8b\x18\x9c\x0d\xa7\x7d\x37\x27\x92\xb8\x80\x03\x33\x29\xc5\x91\xf1\xb2\x18\x76\x91\x61\x35\x97\x90\x63\x53\x5e\x03\xab\x74\xc1\xa7\x7a\x85\x70\x06\xf1\x0a\xc6\x4a\x51\x7c\xe4\x33\x41\xa4\xa2\x49\x32\x62\x8c\x90\x58\x22\x48\x87\x79\xdf\x98\xcb\xa5\x3f\x3d\x40\x38\x8e\xd1\xff\xfe\xea\xc3\xc5\x2f\x77\xc3\xf1\xf9\x25\x18\xad\xcf\x2f\x86\x5f\x1f\xf8\x1f\xaf\xee\xef\xfc\xaf\xc6\xc2\xf2\x48\x04\x4a\xf1\x03\xa8\x78\x4c\x1a\xf9\x0f\xf2\x25\xc2\x91\xba\x2c\x37\xfd\x44\x12\x17\xe9\x6a\xc5\x14\x0f\xaa\x63\xf7\xb0\xb5\x9a\x9d\xb1\xf9\xad\xa1\xfc\xde\xf8\x4f\x96\xd3\xa0\x23\x1e\xdf\x85\x13\x03\x53\xc2\x20\x1a\xdb\x5a\xfb\x0a\xdd\xb7\x20\x38\xc2\x66\x94\xb5\xc5\xe3\x11\xf6\xf8\x9c\x42\xfc\x8f\x64\xf1\x93\x56\xaf\xaf\x31\x15\x9d\x69\x6f\xc8\x1e\xa9\xe0\x0c\xa6\xe6\xcd\x5a\xfe\xc4\x68\x3d\x1d\xcb\xea\xa1\x92\x46\x16\x86\x18\x8d\xac\x35\xe6\xb3\x09\x1a\xe4\xd5\xa7\x6b\x01\x07\xc8\x67\x25\x5c\x3e\xa5\xc7\xb5\x70\xc9\xfd\xfe\xa2\x29\x68\x70\xc4\xee\xae\xce\xae\x4e\x10\x49\xf0\x84\x0b\xc8\xaf\x32\x21\x41\xae\x09\xbb\x60\x50\x47\xde\x37\x54\xca\xa5\x3d\x40\x59\x91\x4b\x1b\x1a\xd1\x8e\x4c\x1b\xab\xca\xcc\x72\x51\xcf\x44\xdd\xad\x0a\x68\x27\x7b\xcd\x45\x97\xeb\x5f\xbf\x06\x4b\xc7\x33\xad\xc8\x55\x38\xaf\xbd\x9b\xa7\x04\x9b\x0a\x8f\xc6\x2d\x64\x6d\xf9\x36\x80\x35\x49\x4a\x05\x63\xf4\xc1\x91\x47\xd6\x05\x5f\xbc\xc9\x19\xfa\xf1\xcf\x12\x4d\x72\x35\x62\xe5\x36\x38\x43\x83\x9f\x6f\xd1\xf7\x58\x45\xf3\xaf\x47\xec\x4a\xab\x99\x3f\xfe\xb9\x25\xe9\x7f\x6d\xbc\x1a\xbd\x26\x67\x58\xe1\x0b\x8e\x63\xca\x66\x4d\x60\x35\x05\x9c\xf7\xf0\x6e\x70\x82\xae\xac\x0e\xef\xf3\x74\x0b\x80\xa9\xa0\x21\x60\xc8\x30\x11\xc7\x45\x80\x95\xb3\x32\xa0\x87\xd1\xcc\xe0\xc2\x1a\xb1\x3b\x83\xd2\xa3\xb9\x2a\x55\x28\xe3\x16\x52\x5e\x6b\x65\x06\xbf\xc8\x98\xb2\xad\x25\x51\xaf\x0e\x90\xb1\xdf\x0c\x2b\x8f\x81\x3c\x53\x67\xf6\x23\x06\x0a\xba\xcf\x9d\x4c\x78\x84\x13\x88\xc9\x3b\x0c\x6c\x7a\x5a\x6d\xe7\x39\x24\xb2\x41\x30\x0c\x5b\x94\x43\x67\x7d\x6e\xa5\x17\xca\xc2\x8d\x02\x03\x00\xec\xa3\xf5\xc6\xa6\x5c\x73\x1c\x83\xce\x01\xc6\xb7\xc4\xac\x8e\xfe\xd0\xa3\x75\x98\x65\xd1\x4f\x1d\x3f\x82\xca\xb7\xc6\xad\x88\x23\x30\xdf\xb3\x05\x84\x6f\x03\x0c\x35\x87\xd0\x8f\x82\x3b\x5b\xa2\xac\xed\xa2\xbf\x13\x83\xcf\x46\xcc\x44\x0a\x96\xf6\x25\xcc\x33\x0f\x7a\xe7\x0c\x02\x19\x8b\xeb\xd2\x0b\x18\x99\x0d\x6c\xb4\xb2\x7e\x26\xc8\x61\x4c\x14\x11\x29\xd8\x7b\xc2\x35\xd5\x37\xec\x11\xba\x09\xd5\xeb\x98\x47\x79\xea\xb0\xf6\x20\xe1\xcf\x46\xc0\xd9\x4b\xd4\x53\x88\xb9\xd8\x57\x51\x3c\x16\xd1\x9c\x2a\x02\x59\x79\x9d\xf5\x63\x43\x30\x83\xf0\xd3\xba\xa4\xde\x2e\xf8\x02\xef\xd8\x2e\x6a\xcd\x34\x34\xce\xca\x2d\x95\x5a\x5b\x0d\x15\xb6\xa2\x6e\xc3\x65\x81\x07\xc6\x05\x08\x5b\xe4\x73\xc6\xc1\xc8\x6d\x72\xaa\x78\xfc\x5e\xa2\xf3\x6b\x2d\x01\x69\x8d\xd7\x9f\xc1\x5c\x2a\x13\x5c\x06\xe9\x3a\xe6\x6b\x93\x2e\x70\x80\xbe\x31\x25\x49\x23\xf4\xd9\xfd\xf1\xa7\xff\xf8\x8f\x3f\xfe\x69\x9d\x74\x12\xa7\x90\x43\xbb\xc5\x1a\x79\x74\xff\xb2\x48\x14\xee\x40\x9d\x53\x6d\xb1\x0b\xf6\x00\xb6\x2d\xff\x26\xb8\x3f\x41\xec\x10\x9e\xd9\x13\x2e\xc3\x93\x89\x4a\x47\xb3\x88\x24\x90\x44\x1d\x94\x39\x84\x17\x76\xad\x44\xff\xbf\x96\xc0\x6a\x8c\xf5\x51\xd9\x2c\xc6\x89\x26\x5e\xbc\xd6\x8d\xa0\xaf\xac\xfd\x4f\x81\x03\xf1\x6b\x77\xc1\xf1\x24\x26\xc2\x96\x33\x76\x26\x3b\x6f\x48\x04\xe6\x40\x3e\x67\x09\x8f\x1d\x60\x96\x24\x19\x06\x01\x42\x33\x83\xa3\x11\x1b\xba\xea\xb6\xb6\xb6\x3e\x7c\x64\x3c\x2f\x53\x1c\x19\x9c\x28\x89\xbe\xfa\x7c\xa2\x7f\x3b\x40\x8b\x13\x08\x22\x3d\x40\xff\x38\xb1\x69\xfd\x58\xa8\xb1\xfe\xe9\x6b\x27\x6b\xdb\x26\x60\xd0\x54\xa2\xf7\xc7\x8f\x58\x98\xa2\x78\xc7\x66\x44\xef\x2d\x67\xf5\x65\x4a\x42\xd9\x3c\xe1\xfc\xc1\x06\xd8\xd6\x3e\x3c\x76\x10\x21\x40\xde\xde\x6f\x62\xb6\xde\xe7\x3b\x2a\x74\x68\x6b\xf3\x1e\x65\x13\x74\xf4\x37\xc9\x19\x3a\x5a\xe0\x34\xb1\xbf\xba\xa7\x36\xfe\x17\x4b\xe4\xaa\x33\xbb\x20\x9f\x64\x61\x2c\xa5\xdf\x27\x7c\x02\xb3\xfa\xe4\x66\x6a\x22\x68\x61\xa0\xc5\xed\x53\x5c\x58\x76\x22\x56\x92\x32\x40\x07\x29\x57\xe6\x15\xe0\x71\x4d\xb3\xfa\xec\x87\xf4\xdf\xc6\x2f\x0c\x8b\xe2\x92\xf8\x8c\x71\xd8\x47\xaf\xe9\x46\x3f\xa3\xaf\x2c\x0b\xfa\x5a\xdf\x31\x36\x5c\xd9\x2c\x43\x53\x07\x0b\xdf\xc1\x2f\x41\x07\x94\x21\x93\x96\xb9\xe4\xcb\x7f\x1c\x1f\x1d\x1d\xf9\xaf\x2f\xf5\x54\xfe\x5f\x44\x95\x24\xc9\xd4\xb4\xe4\x6e\xb0\xc5\x88\x7d\x72\x50\xbc\xce\x78\x5d\x80\x0f\x41\x55\xe5\x88\x27\xe8\xb0\x30\xe8\xc6\x3c\x92\xe8\x77\x5a\xac\x0d\x96\x12\x7e\xd4\x7a\x5c\x0b\x30\x98\xc1\xfe\x7b\xa1\x43\x65\x0d\xe2\xd5\x63\x15\xe2\x8d\x78\xc5\x16\xcb\x10\xd7\x19\x68\x41\x53\xce\xb1\xc5\x24\x11\x42\xbf\x4c\x3e\x2b\x78\xd4\x02\xf9\xd2\x18\xca\xde\x7c\x53\xd6\xd8\x6d\x81\xfc\x62\xc8\xba\x65\x01\x2c\x30\x87\xe5\x0c\x66\x9e\x07\xa1\xfb\x44\x5f\x2e\x2c\x04\x87\x95\x79\x9a\x62\xb1\x38\x2e\x4e\x5b\x9d\x38\x0b\xa4\x77\xe0\x31\x89\x5b\x00\x70\xe1\x26\xf6\x68\xd9\x28\x06\x2b\x5e\xba\x1b\xcd\x9f\xdd\x08\x4a\xcb\x40\x40\x9e\x29\xac\x44\x58\xc4\x63\x4b\xd7\x45\xf6\x69\x59\x62\xf1\xef\xd4\x65\x15\x17\x11\x23\x0b\x63\x1c\x53\x26\x33\xda\xbe\xe1\x3e\x6e\x61\xdf\x7c\x0c\x65\xbf\xc8\x6c\x0d\xf7\xe8\xf9\xd5\xad\xfb\xa6\xfb\xa5\x0b\xeb\x50\x16\xd9\xb1\xd3\x12\x9d\x45\x42\xe0\xa7\xe2\xfa\x85\xd8\x0e\x63\x9d\xc9\x7d\x6e\xae\xf9\xf7\x29\xbf\xa6\x89\xbe\xb5\x80\xc6\x8f\x46\xac\xf4\xf3\x01\x22\x09\x4d\x29\xf3\xb1\x75\x86\xb9\xf3\xa9\x91\x9e\x1f\xa8\xd2\x5b\x26\xe3\x07\xcd\xc1\x1c\x00\x45\xa0\x52\x0d\xd8\xc2\x91\x8e\x77\x4c\x59\x0b\x44\x2e\xf5\xb8\x0a\x1d\x5d\x0b\xb3\xba\x89\x43\x2b\x90\xd2\x80\xf0\xe0\xfc\x8e\x98\x6e\xcd\x9d\xa5\x22\x5c\x38\x68\x2f\x68\xee\xd0\x41\xa4\x06\x1c\x00\xfa\x28\xc5\xfc\x7a\xf9\xb7\x41\x40\x19\xb2\x3c\xdd\x36\xd9\xc4\x86\x0f\xbf\x96\x99\xee\x5a\x10\x77\x53\xd9\xc4\x25\xc2\xf2\xd4\x1d\xa8\x35\x28\x6e\x68\xc5\x9f\x98\x44\x09\x36\x00\x00\xba\x21\x88\x7c\x3c\x30\x0e\xd2\x2c\xe8\xcb\x5c\x2f\xa6\x1b\x83\xba\x9e\x10\xf6\x95\xf9\xf7\xd7\xbe\x0e\xfe\x81\xbd\xcf\x85\x74\x98\x90\x76\xcf\xa1\x6a\x0f\x89\x8d\x0d\x1d\xf0\xf3\x66\x58\xc4\xc6\x5a\x1e\x6a\x15\x26\x83\x57\xcb\x5f\x0b\x9e\xa3\x27\x2a\xe7\x23\x76\xc7\x9d\xc1\x11\x31\xee\x11\x08\x0f\x40\x19\xad\xf5\x87\x25\x30\x01\x18\x75\x13\x05\x68\x26\xbc\x55\xae\x11\x44\xc1\x8e\x19\x8f\xc9\x76\xb8\x10\x77\x85\xaf\xc2\xf9\xaf\x05\x31\xf9\x60\x70\x53\xb4\xa5\xd3\x9a\x02\xff\x5b\x74\x0c\x4b\x80\x6c\x3b\x50\xa1\xed\x89\x6d\x0a\xb9\xe2\x6f\x35\x68\xc5\x69\x9c\x41\x36\x70\x69\xed\x3d\xae\xdf\xb6\x9b\x10\x95\x53\x55\x56\xae\x80\xbf\xfa\xcc\xdc\x23\x58\x76\x1f\x60\x8c\xd1\x4c\xf0\x3c\xf3\x29\xf3\x2e\xdd\xcf\x6c\x83\x95\x69\xce\xd9\x94\x9f\x58\x9d\xea\x82\xb2\x07\x43\xf1\xcf\xb5\x47\x06\xba\x91\xc4\x28\xf8\xdd\xdd\x61\x66\xc5\x0f\x11\x65\x51\x92\xc3\xc5\x27\x15\x8e\x1e\x0c\xfc\x64\x9b\xd1\x57\x7f\x33\x5e\x9d\x4c\xd9\x22\x31\xe5\x49\x62\xbb\x2d\x2e\xd0\xa2\xaa\xe0\x23\xc5\x08\xa3\xfb\x9b\xf3\xe6\xbe\x1f\x68\xdd\x99\xd3\x7c\x7b\x96\x09\x04\xfe\xe7\x47\xba\x56\xdc\x65\x05\x64\x9d\x94\x48\xdd\x1b\x97\xda\xd0\xe1\x34\x91\x7e\xc4\x8a\x6c\x9b\x09\x65\xa0\x55\xd6\x88\xd4\xab\x61\xd6\x2c\xb5\x1e\x6f\x09\xf8\x52\x80\xb5\x40\x68\x50\x3b\xf2\x4c\x18\xac\x05\x0f\xd7\xc0\x6e\x80\xf7\xbb\xcd\xa7\xf2\xee\x8a\xe9\x2c\x1f\x66\x42\xc8\x1a\x68\x03\xb7\xfa\xf5\x8e\x83\x2c\xbd\xba\x6c\x8c\x4f\xd8\xe0\xf1\x3a\x89\xb5\xb0\x04\xc6\x79\xa9\x82\x6c\x27\x82\x76\xe4\x68\xc4\x6b\xe9\x73\x44\xfc\x48\x5c\x18\x8e\x97\xc5\x5c\xbf\x33\xf0\x6d\xf1\x12\xdc\xaf\xb7\xd0\x36\x10\x7e\x20\xb6\x6e\x19\x36\xa1\xc5\xaf\x71\xda\xc0\xa2\x9b\x77\xa2\xe8\xf8\xcc\x7e\xfc\x49\x7f\xdb\xcc\x8a\x3e\x41\x16\x9f\x07\x4e\x49\x31\xd3\x27\xdb\xf5\xda\x62\x84\x34\x12\xe1\x46\x43\xba\xcf\x36\x1a\x90\xe9\xb1\x63\x25\x1c\xdb\x95\x6b\xe5\xc9\xd8\xe1\x71\x62\xec\x4c\x6a\x0e\x26\x88\x02\x41\x5e\x73\xb4\xb2\x29\xc2\xa0\xcd\x27\x58\xcc\x8c\x82\x24\x89\x92\x5f\x37\xec\x70\x91\xf3\xb0\xc5\x0e\x6f\x50\xa5\x2b\xf4\x7b\x82\xf8\xbd\xec\xa4\xf9\x51\x96\x31\xdb\xfc\xad\xec\xeb\xdd\x59\xa1\x89\xca\x10\x59\x2b\xe2\x42\x00\xb6\x68\xac\xcf\x4a\x3b\x66\xca\x96\xd5\x1a\x2f\x71\xea\x11\x01\x5c\xcd\x38\x9b\xdf\x65\x06\x37\x21\x00\xe0\xd7\x3e\x86\xad\xcb\x32\x86\x43\xb0\x65\x92\xda\x46\x30\x62\x03\xf7\x8a\xcf\x2a\x06\xdd\x4e\x18\x01\x1c\xe2\x43\x4d\x34\x34\xe8\x57\xb8\x58\x75\x3b\xb9\x96\x49\xac\x9b\xbc\x59\xad\x2c\xa9\xf5\x3b\x7f\x1b\x59\x0c\x79\x0f\x8d\xb6\x14\xbf\xff\x71\xfd\xc2\xbb\xcd\xc0\x2c\x51\xb5\x30\x6a\x53\xc7\xab\x75\x29\x87\x18\x61\x1b\x0a\x6b\xb1\x9a\x18\xd2\x64\x51\x90\xa9\x5e\x71\xa3\x93\x57\x3a\xab\x9f\x56\xb5\x15\x37\xa6\x38\x1d\x0b\xde\x5e\xe0\xa0\xc3\x32\xb9\x26\x4a\xf6\x9d\xb9\x01\x62\x5e\xa0\xbf\xe7\x38\x31\x97\x1b\xb3\xe4\xe8\x86\x0d\xa2\xf2\x77\x7f\x42\x03\xb8\x7d\xd0\x27\xe0\x8b\xe0\xe0\x87\xd6\x14\x47\x34\xcd\x88\x90\x9c\xe1\xd6\x4a\x1f\x0f\x7f\x96\x63\x8b\xa2\x3e\xc6\x51\xc4\xf3\x3a\x62\xfa\x1a\x33\x69\x68\x2d\x9c\x14\x46\x0f\xf9\x84\x08\x46\x4c\x35\x13\x78\x0f\xb9\xf7\x3a\x0d\x97\xe3\x5c\xcd\xbf\x1b\x47\x09\xed\x0c\xed\x0e\xd9\x45\x03\xfd\xd9\xa9\xf9\x6a\xd9\x04\x4a\xed\x97\x86\xce\x90\x79\x86\xcc\xb3\x23\xf4\x3d\x8e\x1e\x08\x8b\x51\x96\xe4\x33\x6a\xc1\x04\xe0\x86\x02\x76\x19\x98\x67\xcb\x13\x33\xb2\x85\x69\x5f\x5f\x43\x23\x96\xe2\x07\x83\x0d\x68\x85\xc8\x08\x27\xc9\x5a\x66\x06\x4f\x0f\x35\x54\x15\x97\xf9\xee\x2b\xc7\x98\xf3\xa1\xcc\xf9\x00\x83\x2a\x20\x48\xe6\x0c\x61\x00\x66\x79\x2f\x51\x9e\x39\x09\x08\x2c\x7d\x09\xf8\x5d\xcd\x24\xa1\x24\x30\xd5\x7a\xd0\x9c\x8c\x18\xc4\xb2\xba\x16\x17\x9e\xab\x84\xae\x7e\x1f\x72\xd2\x74\xf8\xa6\x06\x96\x60\x3b\x2f\x62\x0d\x80\x72\x05\x25\x74\x8c\xd3\x55\x73\xc2\xc0\x00\xd1\xbd\x65\xd0\x68\xba\x6f\x5a\x29\x26\xd7\x0a\x9a\xde\x62\xea\x97\x30\x67\xd4\x16\x13\xb0\x46\xf2\x20\x5c\xce\x79\x92\x8a\xef\xa9\x44\x12\x2b\x2a\xa7\xb4\xd1\x30\x13\x82\x41\x6c\xb3\xea\x78\x3d\x04\x8a\x06\xf4\x89\xca\x5a\xf8\xb8\xff\x23\xf4\x01\xec\x4c\x81\xec\xcd\x3d\x96\x43\x1b\x4b\x50\x73\xd2\x0a\x6a\xb8\x8b\x80\x19\x37\x83\xe0\xfd\xa5\xe6\x43\x9f\xe3\x71\x84\x06\x85\x7d\xdf\xa0\x59\x18\xcb\xfd\x8a\x19\x91\x44\x92\x4d\x88\xaf\x93\x29\x0c\x7c\xe0\x40\x40\x08\x64\x15\xa9\x7f\x2f\xa0\x6f\xfd\x30\x9f\x20\x8d\x12\x3f\x10\xb6\xcc\xde\xd1\x7d\x84\xc6\x20\xb5\x54\xe9\xf6\x96\x2e\x6e\x8c\x5d\x9b\x0c\xb0\xfb\xb1\x2b\x00\x44\xe8\xf4\x58\x2f\xb9\x16\xf4\xa3\x07\x9b\xbc\x61\xec\x9d\x16\x82\xe4\x69\xce\x65\x78\xce\xdc\xfe\x19\x5d\x51\xe4\xc4\x25\x69\x40\xf2\x8b\x5f\x60\x13\xf5\xc2\x78\x88\x50\x02\xa3\xf6\x87\xd4\xd8\x72\xfd\x7e\x23\xc7\x42\x61\x19\xc0\x4f\xe4\x9a\xaa\x9f\xe6\x1f\xff\x2c\xaf\xe0\xc4\xee\x22\x17\xbe\xb9\x14\xd6\xf6\x71\xe8\x1b\x5a\xe0\x7d\x84\x55\x51\x47\x0b\xc7\x1e\xbd\x21\xe3\x31\x2a\xc8\x6b\xfd\xa2\x59\xaf\x3f\xad\x4a\xb1\xad\x4e\x73\x5b\x45\xd9\x9f\x02\x37\x3d\x9a\xe4\xd4\xd4\xad\x2c\x89\x5c\x36\x5f\x12\xb4\x5f\x7b\xfd\x53\xe9\xef\x93\x66\x1a\xbb\xe6\xf1\x36\x84\xb5\x3e\x60\x5d\x9d\xae\x3b\x44\xf1\xca\xa6\x3a\x9b\x4b\x56\x22\xe3\xed\xf1\x97\xf1\xb8\x7b\x65\x4a\x70\xb8\x4f\xf2\xe9\x2d\xc0\xa2\xb7\x61\x42\x38\x9c\xb0\x39\xf1\x49\x5e\x7a\x9f\x75\x37\x3e\xe5\xa0\x6d\x53\xac\xff\xb6\xb8\xfe\x31\xfa\xbf\xb7\x57\x97\x87\x29\x16\x72\x8e\x21\xe7\xd6\xb5\x75\xe0\x8a\x77\x18\x05\xd4\xf9\x95\x28\x43\x23\x76\x88\x66\xfc\xc0\xb8\x31\x4f\xd0\x5c\xa9\x4c\x9e\x1c\x1f\xcf\xa8\x9a\xe7\x93\xa3\x88\xa7\xc7\xc5\xda\x1c\xe3\x8c\x1e\x4f\x12\x3e\x39\x16\x04\x02\x59\x0f\xbf\x3d\xfa\xee\x5b\xd8\x9a\xe3\xc7\x6f\x8f\xc1\x79\x75\x34\xe3\xbf\xbb\xf8\xee\x3f\xff\xf8\x27\xdd\x70\xb6\x50\x73\xce\x4e\xac\x8f\x74\x69\xdb\x87\x46\xf0\x3d\x36\x9f\x54\x7a\xf9\xcf\xa3\x6f\xc2\x61\xd8\x57\x53\x1e\x93\x44\x1e\x3f\x7e\x3b\x76\x3b\x73\x94\xad\xe3\xf5\x2d\x18\xbe\x5f\xf2\x4a\x59\x56\xfd\xbb\x27\x19\x67\xeb\x5b\xb5\x2d\x0d\x67\x25\x0c\x53\xde\xe2\xc4\x3c\x90\x9a\x23\x7c\x0d\x0d\xcc\x4b\x52\x2d\x3a\xfd\xba\xe8\xde\xad\xb2\xcd\x5a\x59\x99\xe0\x76\xa6\x11\x20\xc7\x1a\x1b\x44\x86\x69\x53\x78\x9b\x0d\xaf\xd8\x66\xfd\x9e\x13\x03\x79\xd7\xe0\xc7\x76\xba\x1b\x02\x1f\x27\xe6\x6b\x17\x0c\xc2\x9f\x1c\xe0\xf1\x2e\x60\x82\x3b\x96\x38\xf2\xe8\xa7\x86\x78\x60\x2c\x6e\x5c\x2d\xc3\x98\x63\xb9\x59\x54\xd1\xc0\x60\x8c\x79\xc7\x80\x2f\xcc\x68\x3b\x74\xbc\xd2\xa5\x6d\x43\xfd\x3c\x8b\x0e\x93\x99\xc2\xdf\xf2\x08\x7d\xa8\xd4\x80\x29\x22\xa5\x6e\x3e\x9c\xa2\x6f\xff\xfc\x9f\x7f\x1c\xb1\xaf\x1a\xb8\x18\x84\x6e\x70\x31\xb3\x81\x5b\xc0\xbb\x52\x2c\x15\x11\xc7\x62\x1a\x1d\x9b\x48\x90\x63\xfd\xfd\xa1\xed\xf4\x90\x4f\x0f\x3d\x06\xea\xa1\x85\x83\x3c\x4a\xe3\xf5\x32\x9a\x4b\xa4\x67\xe2\xa6\x6c\xc4\xb5\x84\xe8\x6c\x83\x7d\xc2\xa7\x1e\xed\xda\x04\xd6\x1b\x60\x7c\x3e\x6d\xf8\x03\xca\xa5\x7e\xed\x11\x97\xb0\x74\x7d\x14\x10\x28\xed\x47\x73\x37\x70\xc8\x8e\x44\x9e\x53\x6f\x73\xbc\x24\x94\xce\xd6\x59\xf8\xe6\xc3\x56\xc4\xbd\x9b\x04\x70\x5b\x6f\xd3\xc0\xc9\x72\x46\xf8\x14\xc2\x86\x40\x30\x70\x6e\x51\x30\x0e\x31\xae\x82\x64\x6f\x41\x32\x73\xc1\x84\xf5\x39\x1b\x96\x7b\x4b\x48\xe5\x55\xeb\xfc\x1c\x90\xca\xdb\xae\xbb\x65\x28\xaf\xb4\xe0\xdb\xc6\x2e\x99\xa3\xb4\x8e\x1b\x57\xbf\xbf\xd2\x65\xe3\xf9\x00\xf8\x68\xc2\x92\x98\x06\xdc\x08\xb2\x15\xc8\xa1\xe2\x87\x80\x92\x01\xd8\x0b\x06\xe4\xbc\xcd\x8f\x0b\xae\xae\x75\xae\x49\xfd\x7e\x87\x71\x1a\xff\xe7\xe7\x60\xa0\x56\x26\xb1\x05\xa8\x6d\x0c\x08\x65\x8c\x08\x6b\xc4\x5f\x79\xa3\xfe\x7f\xec\xbd\x5b\x73\x1b\x3b\x92\x2d\xfc\x3e\xbf\x02\x11\xdf\x83\xed\x2f\x28\xb9\x2f\x31\x11\x13\x8e\x98\x07\x6e\x49\xee\xcd\x6e\x59\x52\x4b\xd4\x76\xcf\x19\x4e\xd0\x60\x15\x48\x62\x54\x04\xe8\xba\x48\x66\x4f\xf7\x7f\x3f\x81\xcc\xc4\xa5\xae\xac\x22\x29\x6f\x4f\x9f\x7e\x98\xe9\x6d\x91\x44\xa1\x70\x49\x24\x32\x57\xae\x35\x30\x11\x16\x4e\x65\x37\x04\xc4\x3b\xe6\x21\x01\xb5\x03\x00\xf3\xc0\x08\x9c\x33\x28\xc3\x58\xeb\x8d\x36\xee\x8c\x2e\xb2\xe0\x43\x2c\xe3\x81\x43\xb8\xd5\xf7\xda\xf0\x2d\xb2\x62\xfd\x7a\x6f\x63\xb6\x96\xf9\x08\x63\x1c\xe1\x97\x06\x71\xfa\x2f\xca\x2c\xe6\x7b\xfa\xef\xe8\xa7\xbb\xd7\x0d\xa4\x59\x37\x10\x53\x06\x11\x2d\x22\x95\x95\x7f\x35\x57\x18\xb3\xa4\x5c\xc9\x8c\x3b\xb9\x11\x15\x80\xe4\x6f\x21\xbf\xa4\xf5\xe6\x5b\xcb\x33\x8b\xcd\xc0\x39\x70\xa8\xc6\x3e\x13\xc0\x15\xe2\xfc\x2c\xc0\xef\xac\x11\xe1\xd7\xb6\x2f\xad\xc0\x56\x3c\xb7\x04\x85\xc3\xba\xfa\xe0\x1a\x20\x2e\xc2\x7a\xbf\x3d\xbf\x0b\xc0\x41\x71\x8c\xd1\x20\x58\xdf\xa2\x25\xcb\xaf\x86\x6f\x46\x50\x74\x18\x32\x76\xf0\x10\x5c\x9c\xb5\x11\x0c\xf6\x42\xdb\x00\x0e\x8b\x38\x74\x5d\xe0\x9b\xf0\xc3\x48\x89\xe5\xcb\x05\x4c\x2f\x6b\x97\x47\xf7\xc3\x67\xaf\xcf\xb7\xdb\x8a\x11\x5b\x14\xf0\xf9\xcd\xed\x34\x4c\x0f\x4b\x7c\xdb\xb3\x68\x2d\xa2\x27\xa8\x1c\xc4\x23\x0f\x37\x83\xd5\x66\x5c\xec\x66\xca\x6b\x0d\xe5\xda\xe6\x3a\x77\x8e\x7e\xd9\x51\x90\xeb\x94\xc5\x32\xdb\x26\x7c\x07\x59\x25\x85\xc0\x60\x9f\x91\x72\x88\x7a\x63\x0a\xf6\x85\xcf\xfa\xcf\xb4\x99\x15\xaf\x3a\x3f\x78\x2c\x79\xba\x90\x79\xca\x49\xba\x1f\x07\xb3\x6e\x0f\x58\x26\x36\x5c\xe5\x32\x9a\xa9\x8d\xe0\x2a\x84\x01\x51\x56\xcd\x0c\x72\xac\x05\x11\x94\x2e\x97\x22\xca\x3d\xc3\x19\x38\xef\x6e\xa4\xf6\xed\xc1\x61\xef\xee\x76\x5e\xe7\xab\xff\x2c\x15\xd6\xd3\xca\x0d\x80\xcc\x68\x0d\xd1\xd1\x78\x60\x2c\x1b\xb4\xa9\xe8\xc8\xb5\x97\x41\xf8\x97\x5d\x53\x4e\x32\xdb\x55\x1c\x35\xf9\xf8\x47\xf3\x93\x1f\xa7\xe2\xd6\xac\x7f\x17\x40\x4f\x70\x83\x85\xe8\x15\xc7\x34\xa2\x2a\x94\x21\x6f\xa8\x06\x0a\xa2\x3d\x6f\x08\xff\xfe\x06\x8e\x69\x73\x7b\x4c\x9f\x45\x3c\x53\x65\x1e\x17\xf2\x19\xfd\x86\x63\x5e\x79\xe7\x34\xd6\xc6\x8e\x71\xaf\xd0\xe6\x15\xd4\xae\x7b\xd6\x3a\x57\xe5\xd3\xa1\x04\xd4\x2c\xc6\xfc\x0a\x22\x33\xbd\x63\xde\x5e\x9c\x87\x94\x35\x48\x88\xab\x94\x5e\x76\x8b\xd2\xb1\x54\x20\x85\x95\x43\xdc\x51\x35\x44\xad\xe4\xb7\xa9\x8d\x99\xb2\xe5\x9b\xcb\x22\x41\x5a\xc2\x36\x6d\x22\x22\xad\xb1\x50\xf3\x5f\xaf\xe4\xc0\xc5\xd5\x58\x20\x66\xe4\xb2\xc0\x01\xfa\xd1\xa9\xe3\xc3\xd2\x15\x2a\x43\x61\x41\xab\x63\x02\x15\xd8\x2b\x91\xc3\x69\x1e\x17\x09\x56\x23\x42\x7e\x1f\x08\x70\x78\x92\x30\x99\x67\x33\xe5\xf8\x7a\x90\x7d\x19\x2c\xac\x45\x2e\xc6\x74\xe5\x82\x47\x40\xb3\xa4\x6a\x0a\x7e\x98\x8c\x64\x5e\xc3\x8c\xee\x42\xee\xff\xed\x56\x70\x2c\x9e\xc1\x69\x9b\xa9\xf0\xce\x55\x9d\x04\xaa\x34\x01\xad\xc9\x53\x14\x7d\x74\x40\x80\x41\xa0\x73\xf0\x94\x9c\xb3\x31\xbe\x9d\xb9\x70\x59\x59\x3f\xec\x2d\x15\xec\x12\xb4\xcb\xdc\x6a\xf2\xcc\x69\xc6\xbb\x7b\xeb\x96\xa7\xb9\x8c\x8a\x84\xa7\x09\x90\x60\x2f\x8b\x84\xc9\x65\xa0\x50\x08\x73\x80\x6c\x2d\x66\xba\x22\x0d\x67\xb5\x4d\x09\x65\x7c\x23\x82\x42\x51\x0a\xef\x24\x41\x4a\x19\x29\x68\x31\x57\x69\xda\x7a\x77\xce\x2e\xab\x4a\xa1\xb0\x27\x02\x96\x37\x99\xa1\xf9\x73\xfd\x0d\x6a\x9c\x50\x71\x54\x2e\xcd\x95\xf2\x4d\xb0\xeb\xda\x54\xac\x79\xf6\x34\x30\x5f\x6d\xb9\xc2\xbb\x61\x8a\x8d\x35\x8e\x53\x50\x3a\x2e\x65\xb1\xdd\x86\x68\xe9\xa0\x3d\x15\x06\x76\x32\x64\xc8\x3b\xa0\xa3\x9f\x03\x29\xe1\x6a\x67\x37\x1d\x82\x88\x30\x8f\x03\xbb\x1a\xc8\x8b\x0c\xef\x68\xb0\x72\x42\x74\x42\x9f\x91\x5d\xf1\x7c\x28\x54\xc1\xa1\xff\x87\x77\xb4\x11\x16\xd2\xda\xcd\xfd\x91\xa6\xcf\x25\x3d\x12\x66\x7a\x65\x6e\xf9\x02\x61\x37\x7a\x19\x98\x60\x3a\x6f\x48\xb8\x04\xb8\xa0\x9d\x4d\x58\x08\x96\x48\xf5\x64\x2b\xbf\xcd\x02\x1d\x31\xee\x5b\x07\x1b\x81\x83\x8c\x7b\xae\xc5\xf3\x6a\x62\x4e\x3f\xc2\x19\xeb\x57\x3f\xd5\x7c\x43\xb6\x3d\x19\x44\x8e\x6f\x5f\xb8\xe9\x3d\xfa\x4f\x4b\x27\xd0\xd3\xdd\x79\x2c\xba\x13\x8f\xc1\x00\x72\x96\x4b\x27\x36\xdf\x3a\xbe\x77\xeb\x32\x84\x69\x80\xce\xc8\xe3\xcd\xe5\xd5\xc7\xc9\x4d\x59\x1c\xe4\xcf\x8f\x57\x8f\xe5\xbf\xdc\x3f\xde\xdc\x4c\x6e\xfe\x10\xfe\xe9\xe1\xf1\xe2\xe2\xea\xea\xb2\xfc\xbd\x8f\xe3\xc9\x75\xe5\x7b\xe6\x4f\xe5\x2f\x8d\x7f\xba\xbd\xaf\xc8\x91\x58\x2d\x91\xe0\x4f\xd3\xc9\xa7\xab\xcb\xf9\xed\x63\x49\xd1\xe4\xf2\x3f\x6e\xc6\x9f\x26\x17\xf3\x86\xfe\xdc\x5f\x5d\xdc\xfe\x72\x75\xbf\x47\x90\xc4\xbf\x6f\xe3\x90\x9e\x02\x7b\x72\xb0\x3c\xcd\x98\x2d\x53\x29\x54\x9c\xec\x10\x1a\x6b\xef\x81\x15\x24\x5e\x78\x52\xc9\x8d\xd0\xc5\x31\x08\xd7\xe9\x5a\x30\xfd\x2c\x52\x28\x52\xc7\xd6\xa8\xa2\x8d\x67\x4f\xad\x14\x66\x79\x5a\x8f\xa1\x77\x02\xf9\xf3\x74\xe7\x4a\x45\xba\xba\xe3\x09\x4e\xe8\x21\x6c\x2b\xd2\xae\xbe\x80\x1f\x91\x16\xdb\x5c\x2e\xda\x31\xcb\x3d\x89\x3f\x86\xdf\x54\x91\x8e\xab\x99\xbb\xe0\xa6\xd9\x30\x96\xa0\xbb\xc7\xa0\x16\xa1\x85\x43\x55\x97\xdc\xaf\x2d\xd2\x6b\x5b\x2c\x12\x19\x31\x19\x57\xa3\x0f\x58\x61\x82\x01\xd6\x2a\x6b\xdf\x56\xa4\xe0\xd8\x19\x7f\x79\x9b\x8a\x33\x5e\xe4\x6b\x2b\x08\xed\x0a\x8d\x90\x45\x4f\x44\xa9\xc8\x03\xf1\x72\x92\xdb\x09\x9e\x04\x9d\xa1\x02\xcb\x18\xb8\x1c\xce\x03\x06\xe5\x96\x88\x3a\xfe\x12\x5b\x1f\x10\x52\xc4\xef\x77\x0e\x0d\xf5\x58\x66\x55\xad\x55\x70\x61\xf1\x43\x2b\xda\x63\xde\xdb\x58\x6a\x27\x5a\x83\x93\x6c\xa1\xd5\xcd\xaf\xb1\x6f\x8d\x85\x0b\xa5\x8c\x84\xa6\xd6\xe9\xa3\x8b\x54\xc0\x21\x42\x89\x73\x7b\xdb\x07\xa0\x07\x41\xb1\x01\x81\x6d\x2e\x36\x0b\xb1\xe6\xc9\x12\x63\x78\x66\x6a\xfc\xbe\xaa\x2f\xd1\xa9\x7e\x12\xea\x1e\x27\xec\x57\x31\x87\x0a\xef\x09\xbe\xe4\xd6\xc5\x4f\x7c\xc0\xcf\xf4\xd1\xae\x2a\x5b\x8a\x82\x9a\xe5\xe8\x55\x07\x1f\x23\x1e\xdc\x13\x6a\xda\x2a\x96\xe5\x52\x7e\x33\x0d\xce\x94\x68\xa4\x14\x04\x74\x8d\x25\x3f\x71\x76\x19\x28\xb5\x90\x41\xe2\x49\x28\x90\xfb\x41\x35\xd0\xbd\x6b\x76\x58\xb4\xb9\x3e\x17\x1d\xe1\x6f\x88\x90\xc9\x92\x0a\x52\x98\x13\xb1\xe3\x04\x35\x67\x4f\xe2\x9c\x5d\x52\x5d\xbc\xf9\xcb\xc5\xf5\xe4\xea\x66\x3a\xbf\xb8\xbf\xba\xbc\xba\x99\x4e\xc6\xd7\x0f\x7d\xb7\xdf\x29\xca\x16\x2a\xbb\xaf\x5a\x39\xe2\x2c\xc4\x7b\xda\x79\xbe\x7a\xce\xbd\x94\xdf\x76\x30\x25\xfb\x7b\x2f\xe3\xed\x3c\x96\x59\x64\x8e\xbf\xdd\x5c\xa8\x18\xb8\x58\x0f\x5a\xaa\xcd\x4d\x55\xdf\xc2\x7d\x83\xb9\x6f\x58\x0b\x82\xa7\xdd\xb3\x5d\xd1\xee\x73\x20\x6b\x83\xa0\x5d\x2a\xcc\xe6\x8f\x67\x2a\x38\x6d\xce\xf7\x13\xf0\x9b\xe6\x8e\x7b\xb7\x72\x13\xd5\x77\xc2\xfe\xca\x2c\x2b\xb8\xb1\x8f\xf6\x6b\x40\xc7\xd0\x32\x2a\x44\x90\x15\x12\xc2\xca\x40\xcc\x90\x99\x9b\xfc\x86\xab\x98\xe7\x3a\xdd\xb5\xbc\x62\x3f\xe3\x19\x6e\x9b\xb2\x09\x0d\x8f\x6c\x25\x44\x6c\x67\x01\xbf\xca\x55\x75\x29\x21\x6d\xec\xf4\xf6\x4f\x57\x37\x0f\xf3\xab\x9b\x5f\xe6\x77\xf7\x57\x1f\x27\x7f\x71\xdc\x37\x5b\x9e\x35\x89\x97\x6d\x53\x61\xac\x8b\xad\xc2\x6f\xb4\x2f\xa8\x28\x66\xdb\x21\x15\x19\xb9\x9c\x29\x6b\x59\x52\xdf\xfc\x3a\xd5\xc5\x6a\xdd\xdc\x50\xb5\x97\x77\xe3\xe9\xcf\x07\x75\x13\x38\x52\x50\x76\x08\x77\x5b\x9d\x48\x50\x2e\xc9\xee\x21\xfb\x60\xa5\x7b\xc0\xf4\x03\x5f\x6d\x8a\xc9\xb7\x58\xb4\x83\x6e\x2f\x75\xa3\xd5\xe9\xfc\x37\x7c\xbd\x6d\x01\x4d\x03\xbb\x59\x3a\x46\x00\xc2\x8a\xea\x75\xb5\xd6\x3e\x34\xfc\xad\x74\x82\xfd\xee\x2c\x11\xab\x95\x88\x71\x79\x55\x1b\xa6\x88\x15\x99\xc0\xc8\x9f\xeb\x4d\xa3\x48\xfa\x52\x47\x1c\xcc\x0e\x1d\xd5\xdf\x80\xdf\xb9\x9f\x34\xdb\x8a\x0b\xab\x61\x1b\x69\x95\xe5\x5c\xb5\xa4\x5d\x9f\xeb\x78\xc6\x5e\xa6\xe8\x36\x65\xae\x72\x82\x02\x24\x36\xc0\xee\xf7\xc1\x21\x09\x27\xd2\xd1\x52\x14\xf1\x08\xf4\xb5\x02\xd1\xdd\x86\x49\x80\x48\xe3\xbd\xb5\x88\xaf\x1f\xdc\xe8\xbc\x3a\x11\x31\x0c\x04\x46\x51\xc8\x84\x38\x4b\x31\x1a\x04\xea\x40\xad\x30\xda\x41\x13\x52\x79\xf2\x2f\x34\xf4\x78\x6b\x2d\x07\x66\xb9\xa5\x5e\x72\x13\xe4\x9c\xb7\xe1\xf1\xad\x92\x1f\xee\x5b\xde\xa6\x3a\x2e\x22\x4b\x4e\x01\xcd\x7a\x3c\x08\x05\xb4\xec\x01\x1b\xb3\x33\x33\xcd\x74\x49\x11\xf1\x19\x50\x7c\xcc\x54\x5b\xf2\xc5\xda\x80\x96\x30\xd7\x9d\x3d\xb5\x8e\x99\xfb\x86\xd1\x6f\xdf\x82\x76\xb0\xfb\x15\xa0\x31\xfb\x75\x70\xf6\x5a\xe0\x34\x34\x2f\x0b\x8e\x99\xd5\xf2\x71\xdc\x56\x8b\xee\xac\xea\x30\xd4\x4f\x3f\xd0\x44\x99\xdb\x09\x8f\xc8\x35\xcf\xd0\x73\xcd\xa3\x75\xb9\xe3\xf0\x36\x65\xfe\xa6\x6a\x77\x9d\x27\x78\x5c\x84\xa0\x57\x7e\x65\x84\x77\x6a\x99\x51\xef\x43\x2d\x1e\x27\x2c\x36\x6c\xe1\x87\xce\x91\xbb\xbc\xa0\xdd\x03\x83\x95\xf0\x42\x45\x6b\xb6\x4d\x38\x16\x5d\xae\x79\x86\x4b\xda\x82\x0c\xf8\x42\x26\x32\x07\xbe\x08\xcc\x7d\x55\x46\xd8\xdc\x68\x78\xfa\x64\x29\x1a\xb9\x27\x07\xe9\x5a\xf4\x47\x82\x39\xbd\x7e\xf5\xf7\x84\x73\xfa\x2d\x1b\xfc\xa2\x33\x73\xe6\x97\x25\x41\x39\xfd\x74\x18\x8b\x07\xcb\xd2\xbf\xcb\xb0\x99\xa5\x16\xef\xaa\x3f\x2f\x8d\x77\xc3\x41\x3d\x1c\xca\x40\xdc\xc3\x03\xcc\x7c\x95\x99\xb8\x71\x67\x2d\x13\xcd\x5b\xd4\x31\x6d\xdb\x48\x34\xdc\xd6\x76\xac\x8b\x45\x1b\xb5\x25\xf6\xaa\xbb\xf5\xae\xb8\xbf\xdd\xb7\xa7\x8a\x0b\x86\x06\x90\xe7\x22\x97\xc3\x42\x1b\xc1\x4b\xf3\x5c\x9c\xc1\xcf\x9b\x1b\x27\xda\x9f\xde\xef\x5c\x5b\x68\x9e\xee\xde\x11\x68\x02\xc8\xac\xbe\xba\xfe\x5c\x70\x63\x1a\x6e\x97\x0f\x48\x60\x70\xcc\x22\xcb\x65\x7d\x85\x35\xef\xc4\xea\x53\xa7\xe5\xa4\x4a\xb8\x06\x7a\x17\xaf\x35\xbd\xcd\x83\xf9\x75\xff\x0d\x59\x96\x90\xde\xa6\x52\x03\xcd\x00\x09\x57\x77\x70\x80\x35\x3e\xf7\x88\x91\xfc\x5a\x88\x42\x98\xb5\xbf\x28\xe2\x55\x3d\xb6\x39\xc0\x3b\xf3\xaf\xb4\xd6\x2f\x6c\x53\x44\x6b\x66\x1b\x67\xb1\x48\xf8\xae\xf4\x6a\xe0\x2f\xe5\x3a\x01\x56\xcd\x03\x29\xfe\xa2\x22\xcb\xf5\x06\x40\x98\xbe\xdd\xb4\x50\xb0\xe0\x19\xcf\xf3\x54\x2e\x8a\xbc\x11\xb0\x55\xa2\xfc\x39\x30\xa1\xf5\x70\x77\x75\x31\xf9\x38\xa9\x64\x93\xc6\x0f\x7f\x0a\xff\xfd\xf9\xf6\xfe\x4f\x1f\xaf\x6f\x3f\x87\x7f\xbb\x1e\x3f\xde\x5c\xfc\x3c\xbf\xbb\x1e\xdf\x94\x72\x4e\xe3\xe9\xf8\xe1\x6a\xba\x27\xad\x54\x7f\x6a\xfb\x44\xf0\x80\x91\xc8\xc2\x42\x2d\x35\xab\xbd\x5d\xd2\x53\x3f\xb0\xb1\xe5\x67\x2a\x31\x88\xd9\xd4\x20\x64\xde\x51\xa8\x94\x32\x88\x97\x3c\xe7\x24\xfc\x7c\xce\xc6\xcc\x0a\x78\x03\x18\x3a\x33\xce\x02\x91\xd7\x98\xd9\xc1\x26\x8c\xc7\x10\xf9\x9b\x9b\xd7\x9e\xd2\x4b\xa2\x8d\x4a\x44\xc8\x52\x6c\x2b\x7f\x66\xea\xea\x59\xa8\xbc\x00\x0a\x55\x9e\x24\x56\x68\xdd\x7e\x21\x28\xf2\xb4\xbd\xcc\xe4\x46\x26\x3c\xf5\x32\x41\xb7\xd4\x16\x38\xec\xb6\xaf\x8e\xd3\xa3\xae\x1d\x61\x2f\x0f\x8f\x13\x06\xfd\xbe\xb8\x9e\x80\x0b\x14\xe5\x96\x03\xdf\x3e\x7c\xa6\x90\x96\x88\x9e\xb8\xe1\x00\xd0\xcf\x35\xc5\xd3\xf0\xf1\xf4\xe5\xf6\x85\x98\x1d\xb3\x89\x6d\xe4\xf9\xb5\x40\x40\xae\x93\xf6\x3f\xae\x54\x9e\xee\x7a\xfb\x35\x53\x20\x51\xcd\xc0\x37\x25\xbc\x4f\x59\x3a\x08\xc3\x1d\xcc\xb6\x7e\x03\xce\x8e\x05\xa3\x51\x34\xde\x05\xdd\x05\x10\xb5\xb6\xf8\xdf\x89\x39\x84\x7e\xd4\x71\x08\x39\x14\x60\x14\x16\xba\x50\x71\x46\xc8\xa4\x8d\x54\xef\x37\xfc\xdb\x3b\xfb\xa6\x58\x93\xec\x08\xbc\x81\x6f\x46\x24\xe6\x26\xb2\x33\x46\xae\x7b\xb8\x66\xaa\x63\xbc\xf6\x7b\x8b\xd6\xb2\xc2\xb5\xc7\xdf\x51\x11\x63\xf5\x2c\x76\x4d\xf3\x57\x13\x61\x40\x1c\x17\x6d\x78\x68\x64\x9b\x0a\xf3\x45\x07\xe0\x4a\x10\x97\xe7\xfe\x0d\x40\xed\x92\x50\x54\xb3\xed\x0e\xb3\xbc\x47\x6d\x9b\xc6\xfc\xf2\x2b\xa8\x68\xd0\x93\xcc\x9c\x61\xb6\xd9\x06\x3a\x09\x98\x4e\x69\x34\x33\x59\xff\xad\x17\x6c\x09\x55\x1a\x24\x04\x9b\x0a\x08\x6c\xc3\x54\x58\xda\x57\x60\x25\xa9\xa5\xb0\xed\x12\x48\x44\x06\xe1\x5e\x65\xae\x5b\xe2\x6b\x41\x19\xbb\xdf\xfe\x66\xd8\x39\x9b\xa7\x3b\x66\x29\xc6\xc3\x2a\x11\x2a\x92\xa2\x33\x17\xfa\x55\x28\xd9\x44\x55\x74\x5f\x28\x73\x14\x9f\x02\xec\xd0\x3f\x9b\x55\x79\x28\xfd\x73\x6f\x21\x85\x0d\xc4\xa6\xf8\xfd\x57\xe3\x76\xfb\xa5\x42\xe9\x46\x8f\x03\xd8\x2e\xb5\x1e\x1e\x68\x0b\x1e\x3d\xbd\xf0\x34\xc6\x58\x21\xa0\x0f\xce\xd9\xcf\xfa\x45\x3c\x8b\x74\xc4\x22\x91\xe6\x9c\xd8\x5e\x32\x48\xbf\xc2\x86\xa2\x76\x66\x0a\x50\xec\x48\x9d\xa3\x40\x43\x37\x97\xab\xb5\xb9\x4f\x06\xc9\x73\x9d\x1a\x73\x94\x23\x95\xd6\x56\x44\xc4\xaf\xd1\x32\x00\xcb\x84\x3f\xd7\xe9\x6b\x0e\xa9\x84\x67\x13\x57\x8a\x67\xb3\x53\x96\x4a\xbb\x0b\xee\x40\x03\x46\x46\x13\x09\x11\x46\x6c\xa5\x13\xae\x56\xe7\xe7\xe7\x4c\xe4\xd1\xf9\xbb\x41\x0b\x9d\x1a\x0c\xf3\x5d\x0e\x82\x9a\x68\x9d\x89\x64\xe7\x38\x21\x5c\x91\x80\x19\x66\xa8\x11\xc9\x24\x86\x3c\x1a\x96\xff\x43\xb5\xa2\xfe\xfb\x86\xce\x9b\x6f\xaa\x83\x4b\xd0\x5a\xda\x01\x65\x8e\x01\x2d\xe1\xf7\x9b\x6f\x5e\x03\x4a\x2a\xad\x8c\x96\x2f\xad\x6c\xa1\x7f\xd4\x6a\x68\xbd\xe0\x2f\xba\x4d\x6f\xf6\x20\xca\xa6\xc6\x96\x88\xd0\xe1\xa0\x1a\xab\xb6\xc8\x45\xa5\xec\xed\x88\x8a\xb7\x8e\xe2\xb5\x81\x75\x6b\x0d\xfb\xaf\x61\x7b\xb8\xca\xd8\x63\xf0\x49\x3a\x29\x36\xed\x5c\x45\xc7\xba\x7c\xbe\x93\xf8\x5f\x17\xf0\xb8\xde\x2e\x9f\xd7\x00\xb6\x2a\x03\xd4\x5f\x0c\xdc\x52\xed\xa0\xb1\xed\xa9\xcc\x80\x55\xeb\x90\x42\x26\xd7\x0c\x36\x0d\xf9\xa5\xdd\x16\x03\x86\x58\xe2\x94\xec\xb0\x54\xce\xe6\x23\xe8\x27\x19\xfa\x65\x90\x94\x6a\x37\x63\x55\xd4\xd3\xe0\x39\x02\x0e\xfb\x83\x32\x71\xe0\xe8\x04\x6c\xb2\x04\xcb\x80\x06\x29\x77\x9c\x6b\xb6\xb4\xa5\x31\x4f\x22\x50\xdd\x8b\x81\x67\xf6\x05\x99\x2b\xfe\xf4\x6f\x99\xcd\x32\x13\x10\xc0\x9f\xb1\xb9\x7f\x08\x46\xb3\x9f\x7f\x6b\xf1\x1f\xf8\x86\xd8\x04\x08\xd9\xc4\x5c\xe5\x8d\x0d\x78\x78\x14\xb4\x85\x3f\xf9\xc5\xdc\xdb\x1b\xbf\x4e\xed\xc3\x57\x51\xb3\x62\xfc\xf9\x81\xe1\x50\x13\x23\x69\xda\xd5\xd1\xa0\x91\xfd\x08\x14\x18\xae\xf9\x01\xbe\x4b\x69\x1e\x70\xd0\x2d\x25\xad\x19\x76\x91\x47\x6b\x7f\x56\x96\xc5\x27\x49\x90\x88\xde\x73\xe3\x39\x56\x11\xdc\x17\xa2\xa4\xe4\x4a\xe9\x90\x1e\x5c\x2b\x01\x69\x05\x9e\xb3\x58\x87\xcd\x32\x99\xef\x87\xa2\x0c\xe4\x01\xda\xb7\xd4\x72\x8d\x10\x03\x7a\xcf\x52\x76\x08\x9c\x60\x89\xec\x21\x16\xc7\x87\x5e\x3c\xe9\xdb\x54\x99\x41\xcb\xf5\xd8\x33\x55\x7e\x54\x6d\x90\x2c\x56\x44\xa6\x02\x09\xfd\x32\xe3\x6f\xe4\xf2\xd9\x6c\xd4\xfa\xb2\x76\x0b\x14\x2c\x40\x7d\xed\xcd\x14\x76\x3b\x60\x05\x7c\x12\xbb\x2c\x14\xd3\xa1\x15\xc5\xda\x16\xa4\x34\xef\x43\xf3\xb5\x7f\x2a\x60\xe0\xe6\x81\x38\x70\xbf\x53\x04\x1f\xfa\xc9\xfc\xb8\x03\x84\x56\x6b\xdc\xac\x41\x5f\x7b\xe4\xa3\x60\x64\x26\xfc\x38\xd3\x1c\x7a\x9c\x49\x83\x70\xb4\x0f\x28\xc2\x55\xcd\xdc\xc8\x66\x8a\x88\x43\x83\xfc\xad\x31\x38\xf5\x69\xa3\x82\x48\xa4\x2b\xdc\x95\xc8\x1c\x80\xd4\xd5\x2a\x9c\x36\xeb\x75\x5b\x2d\x36\x73\x87\x07\xc5\x6b\x90\xac\xa6\xa8\x53\xe3\x03\x0f\x04\x2f\xd1\xe4\xb6\x02\x96\xbc\xd3\x4d\x03\x47\x7c\x5e\xa8\xca\x84\xfe\x7a\x24\xcc\xf0\x8d\x55\x23\x56\xc8\x22\x85\x1e\xae\x2e\xee\xaf\xa6\xdf\x0d\xd0\x64\xd1\x44\x83\x11\x4d\xb6\x9f\x97\x57\x1f\xc7\x8f\xd7\xd3\xf9\xe5\xe4\xfe\x35\x20\x4d\xf4\xd1\x01\x98\xa6\x07\xe2\x23\xbe\xd0\x2a\x17\xdf\x8e\x3a\x93\xd3\x42\xcd\xf9\x00\x6c\xbd\xe3\xfc\xee\x72\x77\xb0\xd1\x3a\x9f\xb2\x23\x3b\x26\x36\x39\x3c\xd1\x1c\x7d\x72\x20\xc0\xbe\x94\x49\x02\x85\x79\x2e\x20\x4c\x65\x2c\x66\x50\xc1\xfe\x58\x25\x59\xb2\xa9\x33\xb5\x28\x11\x4a\x43\x90\x6a\x6d\xae\x6d\x58\x92\xb7\x35\x03\x90\x4a\x28\x78\xea\xa2\x5c\x5e\x49\x25\x7c\x37\x50\x41\xb1\x50\xac\x95\x27\x93\x26\xf1\x35\xeb\x2e\xc9\xf1\xea\xeb\x6b\xda\x15\x57\x5a\x9f\xd6\xfd\xb4\x1f\xba\x37\xc4\x4d\x2c\x15\x3a\xa6\xa5\xdd\xfc\xd0\xbc\x74\xdf\xfb\x2d\x00\xe3\x6e\x66\x92\x43\xd4\x1c\x44\x0a\xfd\x44\xd2\x44\xa0\xd8\x81\x0f\xa7\x3f\x49\xc4\x7d\xe8\x65\x65\x9c\x8d\x29\x34\x63\x2d\x21\xb6\xce\x89\x6b\x20\x4a\x8a\x2c\x17\x29\x5d\xf4\xc7\x9f\x1f\x66\x0a\x95\xac\xe9\x14\x22\x42\x7c\x7c\x04\xa2\x0e\x74\xe9\xf9\xd6\x43\x09\x2d\xd8\x5b\x8c\xaa\x6e\x04\x57\x19\x0a\xc8\x26\x89\x48\xfd\xca\xc0\xfe\x08\x11\x93\x88\x10\xa8\x0c\xfb\xdf\x93\x86\xa8\x86\x5d\x6b\xfa\x4b\x9f\x92\x8a\x66\x75\x3d\xb5\xd5\x7d\x02\xa4\xf1\x35\x57\x4e\x03\xb2\xbe\xef\x2a\x22\x34\x68\xe3\x22\x2a\xe3\xdc\x7b\xad\xa5\x29\x36\xf7\xcf\xa5\x74\xc2\xa5\xd4\xe3\x5c\x0f\x4f\x09\xb6\xd6\xc6\x80\x3a\x2e\x7b\x9f\x18\x75\x75\xe7\x09\x20\x76\xcc\x30\x36\x9e\x3a\x15\xc5\xa4\xa3\x58\xbe\x4c\x53\xc7\x01\x10\xc7\x0d\x04\x17\x5e\x9a\xc3\x66\x23\x3a\xc5\x98\x5e\x87\x48\x6a\x6c\x11\x62\x4a\xe7\xb6\x24\xdc\x81\xb2\x08\x61\x66\xbe\xe0\xb8\x08\x3a\xfb\x48\xf5\xfd\xd6\x4b\x99\x1f\x29\x68\x32\x0d\x91\x6c\xa5\xb2\x3f\xec\x45\xa8\x89\x48\x98\x57\x5f\x92\x3f\x64\xf1\x1d\x2e\x99\x55\x5e\x73\x8e\xde\xed\xa0\xf4\xfc\xcd\xed\xcd\x55\x98\x5c\x9f\xdc\x4c\xaf\xfe\x70\x75\x5f\x2a\x18\xbd\xbe\x1d\x97\x8a\x3e\x1f\xa6\xf7\x95\x5a\xcf\x9f\x6e\x6f\xaf\xaf\x6a\x59\xfa\xab\xe9\xe4\x53\xa9\xf1\xcb\xc7\xfb\xf1\x74\x72\x5b\xfa\xde\x4f\x93\x9b\xf1\xfd\x7f\x84\x7f\xb9\xba\xbf\xbf\xbd\xaf\x3c\xef\xf1\xa2\x3b\xdf\x5f\x7a\x8d\xe6\xf0\x8f\x4f\x27\x06\x4c\x77\x8d\xdb\xb8\x2c\x29\x76\xc4\x2e\xee\x09\x1b\xda\xb7\x1c\x6d\x3d\xa8\x6d\x2e\xd8\x18\xa6\xab\x83\x56\xdd\xe9\x35\xd0\x4a\x43\xf7\xf5\x38\x6a\xdd\x9c\xe7\x8d\xf7\xdf\xde\x81\x09\xd2\x1c\xfe\x5a\x88\x74\x47\xcc\x24\x78\x69\xc4\xbf\x44\x5c\x21\xde\x32\x17\x9b\x2d\xd4\xef\x84\x40\xc1\x99\xfa\x0c\x39\x16\xc4\x22\xbc\xc9\xd8\x1f\x20\x5b\x62\xbf\xec\xb5\xb9\x61\x50\xfe\x8c\xcf\x70\x9f\x9d\xcf\x54\x49\xd3\x38\xf8\x55\xac\xa3\xc2\x45\x33\xce\x67\xca\xb2\xbf\xc6\x3a\xca\xce\xe1\xe8\x3d\xd7\xe9\xea\x3d\x09\x35\x19\x63\xaa\x9f\x16\x5a\x3f\xbd\x17\xea\x3d\x5c\x0e\xf2\xf7\xbc\xc8\xf5\x7b\xc8\xb4\xe2\xe0\x67\xef\xad\x9e\x8b\x15\xc4\xc9\xde\xaf\xe5\xb3\x80\xff\x77\xbe\xce\x37\xc9\xff\x97\x6d\xd7\xdf\xce\x56\x49\x7a\x66\x7e\x7b\x16\xfe\xf6\xcc\xfe\xf6\xcc\xfe\xf6\xcc\xfc\x0c\xff\xdf\x76\x87\x71\x36\x41\x82\xf2\x33\x25\x55\x26\xd2\x1c\x96\xe1\x4b\x2a\x73\xe1\xc5\xc2\xd9\x9b\xff\xf9\x1f\x76\x9e\xf2\x17\x44\xde\x5f\xf2\x9c\xdf\xe1\x45\xef\xef\x7f\x7f\xc3\xb2\x5c\x93\x3a\xd5\x96\xa7\x5f\x0b\x91\x9b\x2b\x67\x22\xa2\x9c\xfd\xff\x33\x05\x4a\x8e\x9b\xdd\x3c\xc7\x0b\x30\x5e\x06\xe3\x8c\xfd\x3b\xb6\x39\x41\x96\x9e\x38\x33\x2d\xb5\x80\xf2\x24\x4f\x1a\x24\xc0\x5a\x62\x25\x5f\x93\x4b\xfa\xfe\x80\xdd\xf2\x35\x29\x6f\x11\xcb\x33\x9d\x7d\x4d\x80\x0a\x2a\xd1\xdc\xe6\x79\x99\x5b\xbc\xe0\xb0\x50\xe7\x9a\xf6\x48\x2d\x9b\x70\xc4\x8e\x39\x54\x0e\xf4\x01\x99\x02\x6d\x08\xa5\x26\x70\x05\x41\x1b\x1f\x10\x02\x82\x28\x69\x76\xc8\x03\x5e\x49\x51\x6e\x1d\xde\x1c\x8c\x43\xae\x53\xbe\xf2\xf2\xf8\xe4\x41\x66\xbf\xff\xf0\xfe\xfd\x88\xad\x32\xf8\x9f\xc5\x57\xf8\x1f\x48\x3c\x9e\x8a\xec\xaa\x36\x98\x2e\x87\x5e\x9f\xe5\xfd\x33\x71\x8a\x04\xfc\xf7\xe0\x57\xac\x2c\xd3\x9f\x0a\x15\x27\xc2\x17\x12\x94\x62\x53\x89\xb6\x12\x84\x78\x43\xa9\x32\x59\xc3\x1c\x2f\x44\xc4\x8d\xe1\xab\x3d\x1b\x71\x29\x7a\x99\x0b\x85\xd7\x92\xd4\xf3\xfe\x73\xbc\x42\x40\x52\x18\x50\x14\x20\x25\xbf\xd9\x82\xae\xbc\x84\x78\xfd\x14\x09\x0b\x47\xd5\x8f\x40\x19\x1a\xb9\xf7\x80\x51\x0a\x05\xac\x85\x0d\x9c\x61\x01\x66\x91\x9a\x9b\xc9\x96\xab\x98\x67\xb0\x02\x97\x29\x84\x9d\x53\xc6\xeb\x1d\x1d\x21\x92\x47\x17\x39\x54\xbf\x63\x8a\x27\x1c\x09\x24\x47\x0c\xfa\x3c\x0a\x3a\x81\x67\x02\x6a\xe1\x57\x7f\x78\x3e\x53\x4e\x55\x1d\xd3\xe8\x78\x65\x89\xf4\x76\x47\xb5\xcd\xd5\x41\x97\xf6\x0a\x43\xc3\x3d\xf2\xba\xb5\xd5\xef\x8e\x98\x2c\xc7\x38\x81\x87\x31\xd4\xd6\xb2\xfa\x5f\x6f\x41\xe7\x5e\xa4\xd9\x3b\xb3\x0d\x81\x9d\x38\xf7\x2c\x87\x32\xf3\x93\xe1\x44\xd8\xe9\xda\x66\x9a\x77\x84\xe5\x66\x74\x4a\xcc\x7d\x4d\xee\xc3\xfe\xad\xf2\xa3\xa7\x23\x9b\xfa\x4b\xff\xf9\x5d\x53\x93\x21\x24\xc4\x42\xa2\x0e\xf7\x05\x71\xcb\x86\x16\x17\x1b\x25\xcd\x76\x74\x4e\xac\x90\x91\x34\x47\x56\x6e\x2e\xec\xf9\x4c\xd1\x09\x3c\x62\x4b\xc1\xf3\x35\x60\x62\xb2\x67\x34\xc6\x78\xdc\xe7\x2f\xda\x27\x43\x2d\xed\x33\xe0\x68\x4a\x8d\xfb\xdb\x3a\x7e\x0d\x52\x3b\x3c\xca\x31\xd3\xd3\x46\x88\xeb\x5c\x15\x18\xac\x46\x83\x78\xc0\x38\x58\x16\xe1\x2a\x63\x7f\x48\x62\x0d\x23\xb1\xc3\x88\x3d\xab\xf6\x03\x3f\x30\x86\x07\xdf\x0e\xf3\x71\x81\x71\x84\x42\x44\x82\xe1\xe0\x3e\xf3\xc1\xf4\x90\xca\x11\x9c\xe4\xb6\x4d\xd5\x31\x10\xd0\x81\xc3\x2a\x16\xcc\x4f\xf7\xde\x1c\x32\x91\x5a\x8a\x63\x7c\x57\xa4\x92\x59\xcb\x34\x3e\xdb\xf2\x34\xdf\xd9\xe5\x9b\xc8\x05\x30\xa3\x26\xf2\x49\xb0\x71\x9a\xea\x97\x53\x8f\x42\xab\x69\x99\xf2\xec\xe9\xc4\xcc\x54\x40\x18\x37\x84\x59\xaa\x91\x48\xaa\x84\x92\x89\xc5\xfc\x30\xd2\xaa\x36\xe2\xad\xc6\xe7\xa4\x22\x4f\x77\x73\xb3\x10\x37\xdb\x56\x4b\xd1\x0b\x6f\xd9\xdf\xc9\x1d\xc6\x87\x05\xe7\x73\x0f\x3e\xac\xd2\xac\xfe\x38\x7c\x58\x0d\x54\x57\x75\x3e\xac\xc9\xcd\x64\x3a\x19\x5f\x4f\xfe\x4f\xa5\xc5\xcf\xe3\xc9\x74\x72\xf3\x87\xf9\xc7\xdb\xfb\xf9\xfd\xd5\xc3\xed\xe3\xfd\xc5\x55\x77\x81\x7b\xbd\xf7\xde\x05\x3f\x63\xe1\x73\x3e\xb0\x69\x90\x31\x43\x9c\x22\xf9\xdf\x24\x0d\x04\xab\xca\x6c\x66\xa9\x56\x23\xd8\xa8\x1f\xd8\x55\x9a\x4e\x36\x7c\x25\xee\x8a\x24\x81\xbc\x36\x82\x82\x2f\x52\x01\x17\xcf\x11\xbb\xd3\xf1\x24\xf8\x1d\x54\x32\x34\xbe\x06\x3c\x9f\xc7\x71\x2a\xb2\x0c\x1f\x3f\xa2\xe7\x07\x59\x5c\x57\x25\x41\x28\x06\xfe\xcc\x65\x62\xee\x6f\x1f\x40\xad\x54\x2f\x97\x88\xbc\x1d\x39\xcc\x35\xfb\x5a\xe8\x9c\x33\xf1\x2d\x02\x52\x87\xe6\x75\x72\xad\x57\xaf\x7b\x07\x6a\xde\xd3\xfb\xe3\x84\x2d\x97\x14\x90\x80\x98\x37\x1f\xe7\xcd\x86\x80\xde\xf2\x13\xfe\xf4\x23\xfe\xb2\xb1\xf5\x3c\xaf\x49\xf4\x1f\x50\x64\x76\xad\x57\xcd\x84\xdc\xe0\x5d\x13\x8b\xb8\x97\xe5\x86\x92\x55\xbd\x62\x99\x54\x4f\x33\xf5\x79\x2d\x14\xd3\x45\x8a\x7f\x82\x6b\xbe\x71\x33\x93\x22\x5b\x8b\x98\xe9\x22\x1f\xb1\x17\xc1\x36\x7c\x87\x6e\x33\xdc\x09\x1c\x8b\x30\x2c\x19\x38\x45\xcc\xaf\x13\xa9\x8c\xb5\xd8\x4a\x0b\x69\xac\x4e\xfd\x29\x6e\x5c\x96\xd2\x84\x1f\xcf\x38\xd6\x75\x9e\x96\x80\x12\x50\xb2\xe2\x01\x2c\x36\x53\x4b\x96\x1b\x44\x8a\xb4\x7e\x2a\xb6\x9e\xfc\xe8\x8d\x8d\x12\xc3\x70\x3f\x6b\x19\xb3\xb8\xd8\x26\x32\x72\x76\xf7\x45\xa7\xad\x0c\x6f\x88\xbd\xed\x7f\xea\x54\x11\xe5\x5d\x2f\xd6\x00\xec\x0d\x20\x0d\x1d\x5c\x6f\xaf\xcc\x76\xc7\xa4\x8a\x92\x02\xe4\x17\x8a\x4c\xa4\x67\x79\x2a\x57\x2b\x70\xc0\x6d\x99\xc0\x8f\x4f\x87\xe7\xe9\x76\x8e\x47\xc4\x87\xf5\x6a\x89\x5e\xc9\x88\x27\x21\xca\xcc\xa7\xa7\x1c\xdf\x96\xdd\xf6\x24\x4e\x65\xfa\xed\x3a\xd4\xca\x23\xb0\x4d\x05\x50\xbe\xcd\xc1\x94\xcf\xc9\xdc\x1d\xd3\xef\x25\x33\x17\x74\x2b\x5c\xed\x0b\x3a\xad\xf6\xbf\x3d\xe1\xfc\xb3\xad\x42\x01\x4a\x94\x2a\xc8\xc5\xe8\x17\x25\x52\xf0\x60\x21\xff\x66\xde\x54\x69\xf0\x4d\x9c\x6a\x81\x03\x8a\x59\xd5\x8e\xa5\x43\xc4\x61\xd1\xcd\x4a\x3e\x0b\xf5\xfd\xe9\x0b\x83\x07\x44\x3c\x5a\x8b\xb9\xf5\xcb\x4f\x6d\xb2\xdc\x01\x30\xd0\x58\x59\xfa\xe0\xd0\x94\x32\x09\x94\x31\x11\x5e\x9d\xb0\xc7\x75\xdb\x85\x94\xf8\xbd\x0e\x25\x20\x56\x2e\xc7\xe7\xaa\xc7\xc1\xb1\xfa\x00\x0e\xd3\x7a\xa8\xf7\xdf\x1d\x08\x58\x25\x7a\x01\xc5\x95\xed\x89\xd5\x8e\xb5\x65\x06\x36\x95\xf1\x10\xcb\x64\xc7\xe4\xd6\xfd\xb4\xab\x83\x4e\xfe\xd5\x3d\x09\x8c\x82\xc4\x58\x5d\xc5\x73\xaf\x16\xef\xec\xbb\x26\x40\x6e\x23\x73\xc9\x0d\xe7\x48\x58\x6a\x4d\x08\x4c\xe8\x0e\x3d\xe1\xfa\xbb\x1c\x35\xd1\xf5\x72\xd0\x3d\x63\xe9\x2b\x48\xbb\x27\xf9\x88\x9a\x3e\x2c\x40\x74\x85\x7d\x43\xf8\xd1\xec\xd4\x21\x4e\x04\xb4\x9a\xdd\x24\x96\x00\x7c\xbd\x66\xb4\x3a\xee\x53\x4a\x77\x1d\x45\x58\xf1\x0a\x3b\xaa\xc8\xb5\x8f\x56\xc2\xfb\x4c\x80\x35\x28\x84\x06\x83\xd9\x98\xc4\xb5\x14\x85\xd3\xe7\x80\x61\xb0\x5b\x73\x00\x90\x61\x10\x94\x62\x9b\x0a\x1b\xf7\xde\x89\xdc\x95\x34\x25\x96\x2f\x1e\xc2\xba\xee\xad\xcb\x35\x9d\xb6\x6c\xcb\xd5\xe1\x43\x10\x56\x5b\x75\xfd\xcd\x56\x2b\xa1\x08\xcc\xa3\xf4\x4c\x51\xe3\x56\xf5\xcb\x45\x86\x4b\x98\xe9\x11\x5d\xc8\x11\x81\x27\x32\x9d\x3c\x53\x0a\x20\xa0\xdb\x04\xbd\x00\xd3\xc1\x0b\xe3\xdb\x18\x4f\x1e\x72\x53\x04\xa0\x05\x48\x51\x45\xfa\x2a\x15\x2b\x99\xe5\x22\x84\x99\x87\xbf\x3f\x99\x4a\x49\xc9\xf9\xef\x1a\xfa\x56\x95\x92\x7d\xa7\xb8\xd9\xb5\x03\xfa\xb3\xdb\x8a\x78\xe2\x7e\xd7\xbd\x18\x4a\xb5\x22\x71\x60\x24\x4a\xa7\x00\xae\x01\xf4\x5e\x32\xac\x72\xcf\x1c\x51\xa6\x9b\x24\xaa\x3f\xe6\x4e\x5a\x06\xa6\x68\x55\xf0\x94\xab\x5c\x88\x6c\xa6\x28\x71\x82\x6c\x0d\x61\x41\x22\x2e\xa0\x97\x40\x06\x00\xcf\xe6\x48\x67\x39\x16\x3f\xc3\x4f\x96\x5c\x26\x45\xda\xea\x2e\xe3\xaa\x3c\xa8\xd2\xaa\x6b\x94\x2e\xa0\x59\xd6\x34\x69\xae\x12\x22\xd8\x45\xae\x60\xb0\x9a\xf6\x28\x17\x0a\xb4\xbc\x82\x35\xb9\xfd\xe7\xdb\xc5\x4a\x5a\x8a\x23\xfe\x2d\x9b\x6f\xf5\x00\x8b\x47\x4a\xe6\x8d\x8d\x65\x5f\x6b\x77\xfa\x8e\xf4\xdf\xd7\x36\xea\x50\x9e\x3d\x41\xe4\x7c\xdf\x55\x62\x7f\x7c\xf0\xf7\xbf\xdb\x1f\x5f\x6f\xb5\x5d\xb0\x6a\xd7\x5c\xc5\x09\xa8\x9e\xe7\x95\x13\xc8\x03\x46\xf8\xc6\xfa\x09\xed\x32\x60\x16\x6c\x37\x8f\x6a\x48\xed\x7d\xe3\x54\x81\x78\xef\x41\xfc\x96\x9e\x52\x06\x5e\x37\x01\xfe\xfc\xc9\x4e\xf2\x36\x6e\xc3\xb6\x2f\xc1\xa5\x5c\x9d\x9e\x37\xab\xaf\xde\x8f\xf3\xb2\x3f\xd5\x2d\x65\x44\x5b\x91\xce\x2f\x87\x1e\x3a\x72\x33\x02\x50\xd3\x18\xb3\x90\x9d\x6c\xa6\x48\xfd\x0a\x93\x46\x90\x2d\xc0\x0a\xfc\x8c\xfd\xd6\xa1\xf7\x7f\xfb\xaf\xb6\xfe\x7a\xc7\x96\x30\xd6\x40\x72\xa0\xa3\xa8\x48\x21\xa3\x43\xb7\x4e\x26\xf0\x6c\x1a\x42\x22\x39\xc6\x13\xd9\xe5\xe1\xd1\x7d\x6a\xf2\x1e\x5c\x98\xa1\xf4\x52\x53\xb8\x5d\xa2\x8e\x97\x3b\x0b\x89\x70\x3a\xcd\x72\x96\xe5\x62\xdb\x68\x95\x4a\x4e\x57\x59\xaa\xee\x08\xb7\xcb\x0b\xe5\xf5\xf4\x75\x07\xd8\xe8\x71\xa0\x89\xf7\xc7\x87\xdb\x1b\xb6\xe5\x3b\x80\xb4\xe4\x9a\x34\x06\x81\x82\xa6\xba\x7f\xf7\xcd\x40\xf9\xe5\xcb\x9b\x0d\xc7\x94\x70\x6c\x2d\x61\x27\xee\x34\x44\x2b\x76\x08\xd6\x0c\x2d\x49\xb3\x95\x53\x9d\x9c\x6d\x13\xae\x04\xd2\x85\xc2\xfb\x9f\xb3\xca\xe3\xc3\x34\x95\x0b\x58\x13\x10\x00\x3a\x10\x4a\xf0\xa7\x85\x6a\x82\x04\x96\xd5\xf7\x8e\xca\x4c\xb5\xda\x88\x4e\xbc\xce\x27\x24\x11\xe5\x91\xd9\x26\x58\x9d\x66\xb3\x6d\x2e\x61\xcb\x33\xc0\x52\x0d\x98\xa8\x6e\xa9\xc0\x99\xb2\x4a\x50\xfa\x25\x63\x31\xd6\xef\x15\x32\x43\x85\x5d\x8c\x65\x02\xae\x81\xec\x0b\x26\x5d\x53\xae\x32\x33\xa1\x10\x8e\x11\xcf\x42\xb1\x7a\x35\xd8\xe4\xf2\xda\xa5\x26\x71\x92\x48\x7e\xa0\x65\xe8\x03\xc7\xec\x98\x0b\x4c\xa3\x76\xdd\x7e\x66\xcf\x4f\x7c\xdb\x85\x3c\x3e\xba\xc5\x7d\xb3\xe4\xaa\x97\xab\x5e\x27\xa8\x6a\x01\x23\x79\x09\x7e\x1c\x8e\xde\xa3\x3a\xd2\xfc\x34\x52\xfd\x0d\xd0\xe6\x3e\x0d\x9a\x7c\x80\xed\x09\xa8\x2f\x1c\x2c\xc0\xf9\xcb\x66\x97\x03\xdf\x33\x6a\xc0\x92\xe6\xfd\x83\x10\xec\x8b\x93\x91\xfd\x42\x7a\x02\x5e\xc1\xbf\x6d\x5c\x27\x6a\xa9\x8f\x33\x06\xe9\xaa\x86\xa4\x39\x6a\x54\x9a\xfb\x79\x2c\x56\x07\xe0\xf0\xea\x75\x6b\xb8\x1a\xdf\x6b\x0f\x32\xe7\xce\xdf\xc9\x09\xd9\x6d\x7b\x6a\xce\x67\x98\xe2\xc3\xe4\x4e\x4b\x8b\x24\x07\x65\x5d\xe0\x6a\x7b\x52\xfa\x45\xa1\x2f\x40\x4f\x62\x6f\xcd\xfe\x83\x03\x0c\x48\xd7\x08\x9c\x53\xa0\x35\x7c\x07\xe4\x71\x63\xf7\x6f\xf6\x80\x61\x6e\xec\x33\xb0\x23\x67\xe0\xfc\x10\xaf\x31\x58\xf3\xb7\xe3\x11\xfb\x69\xc4\x2e\x46\xec\xfc\xfc\xfc\xdd\x88\x09\x1e\xad\x6d\x8f\xf0\x27\x08\x7a\xc9\xf9\xca\xb4\xed\xd4\xb7\xfd\x03\x80\xec\xdb\x1c\x56\xe6\xc8\x34\x06\x9a\x07\x1a\xdd\x3e\xf2\x60\x5f\x01\x71\xf0\x28\x28\x63\x53\x82\xd1\x5a\x4b\xdf\x29\x40\x97\x89\x48\xa7\x16\x9f\x96\xe5\x3a\xb5\x58\x9b\x67\x9e\x72\xa9\xa0\x3c\x88\xd7\x91\x86\xf4\xe4\x80\xd2\x4e\x7c\xe3\x1b\x78\x7f\xa9\x1c\xab\x8f\x19\xa6\xa9\xeb\x7f\xbe\xdb\xca\x08\xc6\xf3\x25\x95\x79\x6e\x4e\xe7\x6c\xa6\x1e\xd8\x87\x7f\x67\xe3\xed\x36\x11\x6c\xcc\xfe\xc6\x7e\xe2\x8a\x2b\xce\x7e\x62\x7f\x63\x17\x5c\xe5\x3c\xd1\xc5\x56\xb0\x0b\xf6\x37\x33\x6c\xa6\xbd\x1b\x6d\x8e\xc3\xdd\x88\x71\xa6\x8a\x04\x4f\xfd\xb7\x16\xc7\xf2\xce\xbd\x17\xf7\xb3\x63\x25\x6c\x33\xbd\xa1\xa3\xf0\x2f\x58\x7c\x04\xc5\x1f\x6a\x95\x88\xdc\x0a\x47\x97\x10\x47\xf8\x80\x33\x78\xd3\x0f\x33\xe5\x62\x79\x7f\x31\x3d\xfe\x0b\xfb\x1b\xbb\x29\x92\xc4\x74\xc9\x18\x1a\xb3\x90\x3e\x30\x8b\x00\x17\xea\xfc\x45\x3e\xc9\xad\x88\x25\x07\x0c\xb8\xf9\xd7\xfb\x29\xcc\xf6\xbc\xf0\x0c\x21\xe1\x9e\x76\x8c\xd3\xdf\x85\x26\x6a\x48\x61\x8f\x23\x1e\xb7\x93\xdf\x71\xf3\x2b\xff\x74\xb8\x47\xe4\xf9\x91\x68\x3f\x90\xc3\x8a\x6c\xe1\x21\xc1\xf9\x41\x26\xa0\x72\xd8\xda\xb6\x1a\x8e\x82\xf0\x50\x3f\xd6\xc8\x02\x5f\xfe\xc9\xef\x90\x3d\xc8\xcb\xfb\x9a\xdc\x1a\xf5\x72\xa9\x54\x0a\x7c\x49\x5f\x2e\xde\x2b\x2b\xe4\x28\x97\x7f\x29\x0b\x06\x94\x86\x58\xcb\x5e\xca\x0a\x95\xce\x3e\x52\xec\x02\x0a\xcd\xcc\x45\x46\xc9\xe4\xbd\xd9\xaa\xef\x6f\xb4\x32\xd7\xd6\x4c\xae\xb0\xc4\x1d\x10\x10\x19\xd0\x50\x59\xa7\x60\x5a\x76\x59\x83\x2d\x00\xfe\x81\xe9\x12\xa2\x72\x72\x63\x05\xcc\x14\x24\xbb\x99\x32\xbf\xa0\x13\x09\x10\xba\xd2\x71\x77\xe1\xd3\xac\x86\x23\x3d\x8b\x0c\x72\xd0\x78\xc3\x02\xeb\x92\x3d\x3c\x8a\x33\x0b\xaa\x4d\x8e\x88\x8a\xdf\x04\x2c\x20\xd4\x9a\x2d\x11\x45\xf0\xcf\x42\x24\x5a\xad\xcc\xaa\x68\x33\x02\x7a\xc3\xe5\x31\x39\xf1\xb0\x0b\xd8\x58\x6b\x0f\xcc\x61\x49\x5f\xa1\x29\x09\x24\xf2\x49\x7b\x0a\x64\x76\x5d\x44\xd6\x9d\x86\xf4\x72\x2d\x2f\x71\x64\xc1\xe1\x63\x26\x40\x51\x9f\x92\xb3\x2e\xda\x8f\x07\xa7\x2f\xd8\xc4\x37\xea\xb7\xa9\x3a\x31\x7d\xcd\xa1\x10\xca\x26\xd8\x60\xb2\x0b\xea\xf5\x58\x8f\xbf\x26\xbc\xef\x35\x45\x30\x1b\x15\x2f\xe1\x7b\xa6\x35\xfa\xd3\x50\x55\x4b\x3b\x7a\xa7\x40\x3e\x7d\x45\x92\xeb\xb9\x5e\xda\x22\xb0\xfe\x67\x7a\x8d\x66\xbc\x1f\xf4\x24\xa4\x16\x0c\xe9\xb8\xeb\x0b\xa7\x2d\xdf\xa0\xd5\x9c\x32\x12\xfd\x3a\x5b\x1d\xb0\x5b\xf5\x11\x7f\x7e\xa7\x13\x19\x75\xe3\x75\xec\x71\x05\xd2\xf0\x35\x00\xc4\x42\x00\x80\x8d\xe2\x3f\xd4\x29\xf4\xd0\x73\x11\xe5\x3e\xe3\x56\x7f\xb9\x41\xe1\x30\x0a\xb0\xba\x56\x40\xf9\xc5\xa5\xb4\xe0\xa8\x01\xce\x22\x20\x97\xc4\xd0\x23\x54\xc5\x40\xaa\x37\xe2\x14\x91\x2d\x75\x04\xec\xd5\xcb\x5a\x27\xe6\x6a\xa2\x62\xe2\x7f\x9a\xa9\xad\x48\x23\x9d\xf0\xdc\x58\xc3\x17\xe2\xf8\x90\x49\xec\x19\x9c\xdf\x02\x36\x0f\x10\x34\xef\x48\xa6\x42\xb8\x94\xab\x6d\xbe\xe3\x10\xb2\xb3\x60\xa5\xea\x8e\x0b\xc8\x9c\x0e\x6c\xd3\xb5\x0a\x3e\x13\x04\x06\x87\x82\x2a\xb6\x2b\xc9\x33\x33\xe8\xa5\xfe\x0c\x9b\x61\xe1\xc8\x79\x23\x7f\x8f\xc8\x2b\xf3\x4a\x57\x89\xea\x50\x02\x8f\x17\xd6\x75\x20\x9e\x22\x13\xd0\x9d\x8d\xe0\xe8\x9a\x78\x56\x1d\x9a\xd4\x99\xf2\xe9\xc2\x37\x59\xe8\xa6\x34\xce\x33\xd2\x54\x59\x38\xcf\x88\xbd\x29\xbd\xe8\x1b\xe0\x79\x52\x1a\x9e\x47\x29\x9d\xd2\xd0\xc0\x72\x1d\x31\x99\xcf\x94\xcc\x70\x65\xa6\x22\x11\xcf\xa6\x77\x61\xec\x94\xa0\x1f\xf6\x2a\x69\x5f\x1b\x10\xa1\xdc\x16\x12\x3a\x85\x43\x60\x54\x48\x43\xbe\x20\x0e\x71\x5a\x50\xaa\x2f\x14\x70\xf3\x8a\x6f\x66\x03\x48\x48\x0d\x20\x1a\x22\x16\xca\xf6\x0f\x40\x12\x28\xa2\x34\x53\x93\x25\x54\x73\x41\x0d\x59\x1c\xe3\xa5\xcc\xb2\xb5\x3a\xf2\x06\x49\xb1\x52\x4d\x57\x54\x27\xa0\x8d\x2a\x2b\xb8\x93\xc4\xb3\x48\x77\x39\xc4\x38\x61\x5c\x95\xe0\xf9\x9a\xc9\x7c\x04\xac\x1b\xd6\x70\xcc\x14\x8f\x49\xa4\x8e\x9a\x33\x43\x03\xeb\xbe\x63\x9e\xe9\xf3\x85\x7e\xee\xf2\xf3\x8e\x05\x41\xe1\xae\xde\x26\x5c\xcd\xd1\xa0\xfe\x0a\x30\xa8\x40\x00\xa7\x2d\xf3\x57\x2c\xe6\x4e\x37\xff\x24\xfd\x74\xde\xcf\x7d\x49\x96\xca\xb8\x75\xf6\x41\x23\x5c\x0c\x9e\x29\xd0\x7a\xeb\x2e\x6c\x41\xc9\xf6\x94\xd9\x84\x64\x7f\x2b\xe0\x11\x52\xbc\x92\x98\xb7\xab\x75\x1f\x44\xca\xae\x80\x1f\x15\xae\xd3\x67\xe6\x2b\x67\x48\x75\xda\x87\x23\x45\x6a\x0e\xd3\x41\x68\x91\x3d\xdd\x7a\x5d\xc4\x48\x6b\x58\xa1\x8e\x1c\xb1\x6f\x1b\x64\xbf\x10\x06\x2d\x30\x2c\xe5\xa2\x1e\xcd\x02\x47\xe1\xb5\x44\x37\x40\x0d\x4f\x19\xb2\x2d\xcb\xa0\xf7\xae\xa2\x84\x7e\x9d\xb3\x89\x62\x36\x7a\x31\x62\x6f\x70\x61\x65\x6f\x28\x22\x47\x2a\x59\x94\x4a\x8e\x69\xf7\x50\xdd\x59\x15\x99\x80\xe8\x5f\xbf\xdd\x30\x31\xd2\xc9\x16\xf3\xaa\xe3\xf2\x93\x04\xf4\xf1\x21\x05\xa6\x98\x54\x5b\x60\x03\x74\x48\xe2\x2d\x74\x87\x3e\xac\xf6\xc1\x5d\xff\xc2\x36\xfd\xc3\x7e\xb2\x3f\x34\x43\xb4\x2d\xe8\x3c\xb5\x9f\x33\x9d\xce\x94\x6d\x8d\x22\x74\x19\x12\xaa\x57\x9b\x0a\xd8\x3e\xc8\x05\x0e\x56\x2a\xe4\xf4\x2d\x87\x3e\x48\x33\x78\x4a\xab\xaa\x15\x00\x8c\xc0\x42\x78\x7d\xbf\x73\x36\xf6\x4f\x33\x8e\x87\x59\xe0\x1b\x3c\xe6\xab\xb4\x37\x49\x62\x06\x45\xe6\x96\x65\x27\x00\x2a\x67\x05\x70\x45\x2d\x0b\x63\x8c\x02\x42\xad\x99\x32\x83\xc7\x96\x12\x60\xb0\x34\x2e\x33\xf5\x49\x67\xb6\x2e\x36\xf3\xe3\x61\x21\x95\x34\x6c\x6f\x9c\x94\x00\xfd\xe1\x12\x0e\x6d\x0a\x81\x57\xb4\x25\x01\xa1\x4e\xc5\xed\x3b\x5d\xa4\xfe\xa5\x22\xae\x66\xea\xbf\xcd\xf0\xa0\xb2\x9b\x93\x45\xd4\x4b\xdc\xc2\x56\x8b\x93\xbd\xfd\x82\x8d\xbe\xfd\xd7\x77\x5f\xde\x61\x7d\x7a\x91\x81\x7a\xcb\xa8\x7c\x80\x38\x6e\xc5\x22\x49\x20\x31\x6b\xdf\xc0\x95\x95\xfb\x47\xf0\x2e\x94\x0a\xdd\x71\xe6\xaa\xec\x62\xf4\xd9\xe8\x5d\x2b\xd8\xc7\x62\xc7\x2c\xe2\x79\xb4\x3e\xb3\xbe\x1c\x99\x31\x7b\xfa\xd1\xf4\xa1\x8c\x83\xf1\xb4\x9a\xe9\x05\xcd\xfd\x2b\xdd\x38\x75\xc4\xd2\x7a\x31\xaf\x00\x38\x93\x69\x69\x55\x86\x1a\xa4\xb8\x38\xbd\x30\xa1\xf7\xf3\xdc\xd7\xad\x36\x83\x0f\xa0\x52\xd0\x58\xf1\x8d\x88\xd9\x1b\xa8\x7d\x78\x63\x27\x7f\xa6\xb6\x8b\xf3\x64\xb7\xcc\x89\xac\xc5\x0c\xca\x39\xb0\x97\xef\x39\xe5\xe6\x71\xfd\x9a\xb4\x67\xb0\x5b\x2f\x5a\xcd\xbe\x8e\x1b\x1b\xf7\xa4\xfe\x0e\x0b\x86\x7c\xdc\xe8\x3c\x94\x11\x33\x65\x72\x4a\x9e\x3d\x8d\xd8\x22\xe5\x0a\xe8\x7c\xe3\xd0\xa9\xf2\xbb\xd3\x5c\xcb\x88\x09\x85\x12\x38\x5c\xf1\x64\x07\x50\xea\xd1\x4c\x21\x6d\x0c\x10\xbd\xed\xa2\x44\x46\x28\x84\x5a\xf1\x83\xc4\xb3\x50\xf9\x15\xd5\x49\x5b\xcc\xf6\xb1\x99\x56\x57\x77\x7d\x14\xa1\xda\xa4\xec\xed\x70\x5f\x50\xee\x03\x8e\x51\x2a\x00\xcb\xbc\xd8\x05\x18\x4f\xb7\xc0\x47\xa4\x87\x00\xcc\x3a\xec\xcf\xc5\x42\x27\x96\x9a\x68\x72\xc9\x74\x0a\xf4\xac\xb9\xa6\x3f\xc9\xb8\xed\x14\x93\x2a\x16\xdf\x8e\xaa\x0f\xee\x3e\x90\xac\x7b\x67\x1e\x13\xb0\x80\x56\x5f\x16\x76\x51\x2a\xcc\x61\x91\xdb\x1b\x5c\xed\x5b\x59\x15\x70\x36\x4e\xf2\x35\xa0\xc0\x10\x7f\xec\x07\x75\xc3\x77\x2c\x5a\x73\xb5\x0a\xae\xd0\x00\xca\x11\x5b\x9d\xa2\xf0\xc6\x33\x10\xf1\xe8\xd4\xd6\x5f\x51\x55\x11\x81\xa0\x5d\xfc\x17\xb1\x87\xda\x96\x0e\xf1\xd5\x2a\x15\x2b\x28\x89\x2d\xe9\xb5\xa3\xfd\x74\x0c\xaa\xf8\x9c\xae\xb2\xb2\xd3\xd4\x66\xb7\xdd\x5a\xf2\x74\xe7\x8a\x72\x48\xb5\xc6\x0d\x5d\x6d\x58\x47\x4c\x8a\xf3\x11\xfb\x9d\xc7\x5b\x8a\x48\x2b\x57\xd5\xd3\xfc\x0e\xdb\x4a\xa4\x76\x8f\x2d\x6a\x28\xe2\x6e\xee\x3b\x7c\x56\xd3\xbe\x69\x5c\x34\x9d\x65\x51\x39\xcf\x8b\x01\xb6\x92\xf4\xcd\x2e\xcc\x8f\x1f\xf0\xb7\x9d\x90\x64\xbe\x35\xe6\xcd\x12\x68\x98\xef\x1b\x0b\x6f\x9e\xed\x99\xce\x9a\xc6\xba\x39\xee\x17\x74\x3f\xd1\xab\x57\x75\x29\x6d\x95\x74\xab\x4b\xe9\x66\x22\x69\xa9\xfc\xed\x78\xa7\xa1\xa1\x4c\x8b\xcd\x24\xd4\x75\x56\xbd\x6e\x35\x58\x00\xa7\x08\xad\x53\xf4\xdb\x11\xc8\xe0\x0a\x90\x4b\x46\xb2\xe9\x40\x28\xb1\x28\x80\xca\xdd\xf7\xba\x1b\xb7\xf1\x37\x34\x0f\xff\x63\xcb\xbd\xd8\x7a\x26\x4d\x83\x1e\xee\x4f\x1c\xa7\x74\xe0\x39\xe5\x1e\x8f\x1c\xd2\x36\xb8\xa9\x53\xb9\x92\x8a\xe7\x3a\x65\x6f\xef\x2c\xf1\xea\x3b\x47\x16\x0e\xa3\x78\x0a\x33\x51\x1a\x22\x34\x13\xcd\x77\x2f\x80\xf7\x8a\x78\x3e\x8c\x05\xa7\x49\xa5\x75\x2f\x7c\xdd\x7c\x2b\xcb\xf9\x66\x1b\x12\xb8\x39\xf1\x30\x1a\x99\x04\x07\x81\xd9\x8e\x41\x8c\x4f\x66\xbe\x24\x69\xa6\x28\x32\x8e\xf3\xa6\xd3\x06\xf9\xf1\xea\x5b\x82\x1f\x39\x3f\x90\x94\x80\xc8\x4c\x07\xd2\xba\x55\x33\x8a\xf7\xd7\x36\x61\xe0\xef\x05\x25\x47\x1b\x5e\x14\xf9\xa4\x32\x38\xb5\xf1\x8a\xe7\xcc\x86\x39\x25\x6d\xed\xf5\x45\xa2\x8b\x98\x91\xd1\xa0\xec\x64\x7a\x8e\xa7\x0f\x10\xbc\x9d\x9f\xb7\xb1\xdd\x0c\x94\x03\x72\xfb\x1b\x7e\xd7\xbc\xc2\xe1\xb3\x16\x0b\xd7\xb9\xb5\x68\x64\x87\xc5\x9e\x28\x31\xff\x89\x6f\xbb\x2b\xe8\xb9\xbd\x39\x63\xbd\x4b\x28\x80\xdf\xb0\xf7\x5b\x86\xcb\x45\x43\x81\x6d\x66\x58\xa0\xcc\xca\x3d\xc1\x7a\x0e\x03\xc9\x0d\x7c\x78\x21\x22\x93\x67\x4f\x47\x3f\xce\x16\x76\x76\x3f\x6a\xcb\x53\xa1\xf2\x39\x3c\x71\xd8\xc3\xe0\x21\x77\xf0\xf3\x92\x43\xd2\x2b\x20\xf8\x9f\x53\x8d\x71\x5e\x5b\x5a\xfe\x5f\xec\x81\x62\x1b\x99\x95\x8e\x34\xa7\xcf\x5b\x09\x50\x8c\x20\x27\xe6\x26\xae\x65\xba\xe8\x85\x0e\x18\xbd\xe0\x85\x4a\xa6\xb3\xd7\x0b\xf9\xde\xa3\x90\x82\x69\x85\xc2\x3c\x54\x50\x68\x4c\x99\xfd\x9b\x5f\x73\x58\xa4\xeb\xb3\xb3\x8c\xe7\xcc\xcc\x5f\xc2\xfe\x2a\x52\xed\x51\xf2\x24\x47\x1f\x34\xdc\xe9\x0f\x1f\x2e\x59\x84\xfe\x2e\x8a\xe5\x84\x6a\x11\xf0\x17\xaa\xde\xc7\x9b\xe5\x62\x67\xdd\xfd\x96\x54\xc2\x56\x44\x38\x0f\x07\x1e\x9b\xc1\xc5\x2e\xb0\xef\x36\xf4\xe5\x0e\x0b\xbb\x41\xdf\xc3\xbd\x95\xf8\xb1\x36\x7c\x4b\xb0\x27\x42\x58\x56\x83\xf8\xe7\xf0\x12\xff\xf9\x97\xff\x3a\x6f\x93\x4d\x83\xae\x0f\x45\x91\xb8\xce\x7f\x4c\xa5\x50\x31\x24\xe5\x78\x5c\x67\xad\x56\xa5\x28\x6d\xc9\x3c\x9b\x65\x78\x92\x62\xb2\xe6\x73\x30\x9b\xe3\x22\xfa\x0e\x99\x5d\x6f\x64\xdd\xf6\x2d\xe5\x7d\xda\x8e\xea\x6c\x1e\xef\x14\xdf\xd4\x85\xe6\x5e\xb5\x8f\x3b\x29\x92\x18\xba\x48\x4f\xdf\x97\x9d\x88\x45\xf4\x34\xd4\x27\x38\x98\xea\x55\x44\x4f\xec\xe7\xe9\xa7\x6b\x94\x58\x91\xd9\x4c\xdd\xf0\x5c\x3e\x8b\xc7\x34\x71\x61\x61\x34\x3e\x45\x9a\xd8\x3d\x52\xa6\x1e\xc4\x62\xb8\x02\x74\x8c\x89\xa7\xd0\x3a\x0e\x21\x33\xec\x66\x77\xb6\x28\xa2\x27\x91\xbf\x4f\xb9\x8a\xf5\x06\x5f\xe3\x7d\x56\x2c\x97\xf2\xdb\x79\xce\xd3\x77\xfb\x20\xee\x7b\x2d\xe9\x11\x97\x84\x63\x0c\x4a\xfd\x1a\xe0\x84\x6f\xbc\x6d\x96\x71\x28\xd6\xec\x2c\xb3\xe7\xdd\x73\x26\x05\xe2\x8d\x2d\x17\x91\x73\xea\x67\xc3\x13\x06\x8c\x5e\xf3\xc1\xfa\x9d\xae\x58\x6d\x0c\x80\x7d\xba\x6f\x23\x84\x77\x5a\x27\xc7\x46\x09\x79\x62\x37\xc9\x1c\x14\x3c\x8e\x71\xc1\x71\x01\xb8\xcb\xf6\xe4\xd2\xe5\xab\x1c\xa5\x1e\xc5\x1a\x9c\x7e\x16\x40\x29\xa8\x0b\x00\x60\x80\x4e\x74\x80\x0e\xb3\x6d\x43\xc2\x72\x20\x78\x12\xda\x40\xa4\x83\x53\xd2\xae\x85\x2d\x83\x72\x58\xee\xfb\x08\xb4\x43\x95\x1e\x0e\x0a\x20\xa0\xde\x46\xe5\x51\x2e\x98\x10\xd2\x93\xb9\x71\x0c\x9e\x6d\xc7\x13\x55\xbe\x8c\xcd\x21\xcf\x67\xa6\x02\x2f\x07\x89\x39\x2c\x3a\xd5\x8d\x5a\x53\x8c\xa1\xb4\x0c\x8f\x8e\x31\x1c\xc3\x41\xd9\x19\x84\xbe\x0c\xd5\x5c\x20\x8f\x1a\xe9\xcd\xc2\xdc\xf3\xb1\xda\x91\x02\x6f\xe0\x9e\x8d\x2d\xc5\x8f\x0b\x92\x5a\x37\x0b\x39\x86\x2b\x63\xef\x8e\x86\x90\x2d\x29\x34\x59\xfb\xae\x30\xa1\x4f\x7c\x5a\xba\xcc\x66\x3b\x3b\xae\xbe\x81\x34\xd7\xd9\x17\xbe\xcb\x40\xfa\x46\x18\xab\xb8\xc4\x60\x53\xb9\xff\x23\x1f\x02\x71\xf4\x51\xa4\x23\x57\x90\x22\x16\xbd\x8b\xc4\x12\x70\x91\x58\x91\x1f\x4f\xad\xf1\x26\x6b\x1e\x9c\x5f\x27\x7e\x9c\x76\xc6\x8f\x31\x81\xf3\xbf\x23\x64\xdc\x11\x98\x3a\x32\x3e\x16\x1c\x93\xa9\x8e\x48\xfe\x3d\x67\xa0\x88\x87\xe6\xd8\x3c\x7b\xc4\x36\x5c\x2a\xda\x06\x79\x6a\x0c\x64\x2c\x16\xc5\x6a\xd5\x1a\xb6\xf9\xf1\xe3\xbf\xe5\x7d\xf2\x0f\x1f\x9f\xeb\x24\x87\x39\x45\x84\x6d\x62\x9f\x84\x69\x63\xe3\x2b\x7f\x9f\xa0\xda\x89\x22\x84\x93\x3e\x11\x42\x8b\x3b\x80\x6a\x08\x72\xf1\x6d\x6e\xf8\x9f\xa1\xc3\xef\x13\x3a\x6c\xcc\x8d\x54\x7b\x88\x15\xf8\x73\x59\x76\x80\x3b\x7a\x78\x20\x91\x8f\x63\x7c\x83\x5e\x91\xe8\x5b\x26\x54\x9c\xb1\x05\x8f\x5e\x81\xd9\x07\x4e\x9f\xe3\x63\x14\x7b\x12\xde\x0f\x7a\x23\x18\x3c\x2a\x43\x66\x65\x46\x05\x27\x23\x40\x52\x99\x17\xf4\x59\x62\xca\x41\xc3\x71\x85\xd9\xea\xd8\x3b\xad\x6f\x95\x78\x61\xe6\x34\x18\x85\xd0\x92\x60\x7a\x80\x72\xff\x1d\xa9\x36\x7b\x1c\xaa\xab\xae\x4d\xc5\x8a\xa7\x31\xa0\x9f\x69\x4b\x26\x3c\x7a\x32\xff\x0d\xfd\xa3\x27\x12\xfc\xc5\xb2\x7f\x22\x24\xcb\xb7\x26\x55\x84\x0a\xba\x84\xb4\xf1\xfd\xc3\x9f\x67\x8c\x47\xa9\xce\xf0\x16\xef\x54\xa5\xa0\x18\x0d\x1c\xc4\x67\x19\x17\x3c\xc1\x27\xb6\x46\xff\x78\x76\x14\x9b\xe9\x38\x20\x95\x17\xdf\xb6\x09\x57\xe5\x3d\x89\xaf\x0b\x74\x12\xb2\x63\xe5\x3b\x56\xa4\xef\xca\xee\x16\x2a\xb1\xfa\x6d\x85\xde\x67\x2a\x78\xbc\x0b\xb9\x63\xa4\x22\x79\x45\x1e\x6f\xa4\x32\x53\x6f\x35\x43\x9c\x7d\x85\xa6\x23\x9e\x20\x08\x0c\xa8\xb5\x93\xa4\xb2\xf5\x33\xa6\x84\x71\x59\x78\x2a\x93\x1d\x78\xa9\xdb\x54\x9c\x05\xcf\x09\xf6\x37\x61\xd0\x65\x36\x53\xb6\xce\xb9\xc8\xc4\xb2\x48\xd0\x97\x85\xdb\x9e\x7b\x01\xda\x87\x8f\x93\x91\x39\xc6\x72\x22\xb4\x0d\x1e\x8c\x32\x11\xa7\xc0\xf3\xd6\xef\x59\xbd\x62\xde\x9e\xd3\x28\x05\xb8\xe1\x5a\xbf\xd8\xa2\x83\x17\xee\x51\x65\x6d\x67\xc9\xc9\xe2\x9c\xdd\x5e\x8d\xbd\x4f\xd8\x5d\x89\x83\x5e\x96\x42\xa6\xcf\x44\xec\x76\xa2\x54\xf0\x3a\xa4\xb0\x44\x18\x14\x11\xb3\x22\xc3\xda\x05\x33\x87\x60\xad\xed\xb5\x19\xab\x39\xac\x3a\x17\x73\x6f\x27\x33\xad\xd8\xac\xf8\xcd\x6f\x7e\x2f\xd8\x6f\x48\x6e\x13\xac\x0c\x46\xa8\x81\xd5\x08\x5b\x07\x03\xe5\x1e\x20\x90\xf2\xa8\x36\x23\xac\x09\x84\x65\x0b\x09\x01\xc6\xc4\xa3\x35\xcb\x8a\x05\x62\x74\x38\x05\x39\xb9\x72\xa4\x81\xd7\x1a\xe0\x36\x78\x8e\xd9\xde\x0f\x08\x16\xdc\xd1\xf9\x62\x03\x01\x01\x4e\x10\x06\x3a\x14\xe9\x81\x41\xc1\x97\x04\x03\x7e\x07\x4a\x3d\x23\xf6\xb3\x7c\x16\x23\xf6\xb0\xe5\xe9\xd3\x88\x5d\x62\xb8\xf5\x8f\x7a\xb1\xf7\xfe\x7f\x8a\x18\x98\x73\x53\x8f\xd5\xa4\xc4\x68\xd2\x28\xa0\xca\x0c\x42\xfc\xf5\x68\x8d\x45\x58\x80\xf6\x09\x8a\x3e\xef\xd3\x23\x69\xe5\x53\x3d\xd5\x2d\xa6\x1d\xd6\xd7\x7a\xa7\xa9\x5a\x69\x7f\x9e\x52\xd5\x54\x13\xd2\xc4\x9c\x63\xb0\x12\xcd\x8b\x9f\x81\x67\xa2\x53\xb6\x4d\x78\x6e\xd6\x4a\x46\xe1\x67\x5c\x15\x88\xbf\xc3\x13\xb9\x52\x0b\xd7\xd7\xf1\xb2\x0f\x9e\x6f\xb5\x4e\x1a\xfd\xaf\x93\x0e\x60\x2d\xda\xd9\x77\xf0\x26\x58\x43\x90\x85\x5e\x89\x1d\x45\x1f\x39\xf3\x71\xb6\x40\x3a\x1f\x56\x53\x5c\x40\x12\xc1\x0f\x47\x28\x0f\x63\xcc\x0a\xa2\x1e\xd1\x11\xb1\x6a\x62\xdc\x7a\x88\xc6\x89\xa2\x10\x62\x88\xb6\xab\xc5\xf4\xb2\xfa\x73\x5a\xdc\x42\x68\x77\x2e\x9b\x0a\xe1\x87\x6e\xae\xe9\xba\x31\x50\x8f\x3d\xb7\x06\xdc\xe2\xce\xf7\xd1\x00\xda\x22\xbb\x79\x94\xf0\xac\x27\x92\xad\xd1\xee\x4c\xa8\xa1\x0b\x68\xa7\xbf\xcd\xfc\x19\x62\xaa\x9b\x9e\x07\xe6\x4c\x8d\x1d\x0d\x9e\x77\xb5\x9c\x7b\x88\x66\x16\x1d\xe3\xda\xd4\x20\x98\xdd\x73\x26\x8e\x58\x56\x44\x6b\x80\xeb\x97\xed\x54\x68\xb7\xea\x3b\x76\x34\x53\xc6\x59\x41\x15\x09\x0e\x09\xe1\x17\x20\x1c\x97\x7f\x15\xce\x1b\x22\x54\x68\xe8\x00\x2d\xb8\x99\x1a\xad\x1a\x9d\x45\x5b\x39\xc1\xd3\x27\x11\x07\xa1\xbe\x62\x1b\xf3\xdc\x78\xcf\xee\x90\x83\xf5\xeb\xf8\x43\xad\xf7\x99\x85\x2f\x16\x3a\xcb\x15\x4b\x9b\xc8\xa5\x88\x76\x51\x8d\x17\xa4\x04\xc3\x38\x5d\x4c\xf9\xb0\x90\x6a\x17\x7f\x44\xf3\x4d\xf9\x73\xad\xde\x99\xb5\xe5\xae\xff\x77\x22\xd6\x5a\x28\x0c\xfe\xd1\xa3\x62\x7b\xd2\xcc\xff\x04\x9f\xfd\x43\x46\x90\xfa\xb1\x17\x94\xec\x97\xc5\x77\xc1\x8d\x95\xbc\xe6\x46\x54\xd9\x8f\x55\xa0\x2a\xe3\x70\xdf\x20\xe9\x64\x4b\x22\x7e\xcf\x56\xa0\x32\xe0\xd8\x95\x28\x0f\x00\xa5\xd3\x4f\xed\x78\x5d\x24\x3a\x2b\xd2\xee\xcd\x7f\x5f\xee\xb5\x7d\x7a\x03\x83\x21\x2c\xb6\xcd\x42\x40\xf5\x79\x17\x7c\x64\x9f\xa3\x60\xee\x4b\xd5\xdf\x13\xde\xea\x45\xb0\x08\xa1\xf2\x2d\x9a\x40\xb5\xdf\x05\x31\x10\x38\x79\x57\x22\xf4\x02\x2a\x87\x63\x69\x71\x95\xf2\x7d\x3f\x14\xa6\xbb\xf1\x0e\x56\x61\xcd\x29\x85\xcb\x7a\x65\x48\x4f\x91\x7d\xb8\xe3\xf9\x1a\x03\x39\x1b\x9d\x93\x38\x33\x68\x6d\x13\x8c\x07\x53\x12\x8b\x44\x2f\x40\xe6\x0b\x54\xb8\xdb\xd6\x39\x2d\xce\x5e\x43\x57\x9f\xb0\x3e\x6b\xdb\xec\x07\xa8\xf9\x4b\x45\x06\xd4\x0f\xf5\x9c\x5f\x5f\x84\xec\xb0\x60\x53\xbd\xbb\xc6\x6c\x5d\xd6\x82\x4d\x75\xea\x6c\x63\xd5\x01\x2e\x79\x75\x40\x8d\xc4\x55\x58\x37\x07\xb2\xfd\xc8\x22\x4a\x49\x75\x24\x12\xac\xbc\xaf\xd5\x51\x9c\xa9\x31\x7e\x52\x52\x1d\x77\x12\x11\x0e\x91\x48\x92\x59\x6e\xff\x61\x21\x1d\x1b\x87\x18\x38\xf2\xeb\x47\xfe\xc6\x05\xe1\x91\x11\xd4\xad\xa9\x5c\xa6\xc6\x9f\xce\xc0\x5d\xc8\x8a\xc5\x99\xa7\x48\xd0\x29\x38\x18\xc0\xa0\xb1\xe5\x29\xe8\x11\xae\x65\x12\x9f\x35\x1c\x24\x18\x87\xf6\x54\xef\x96\x59\x8b\x27\x64\xbe\xe0\x5e\x88\x35\xba\xee\xdd\x5d\x3b\xc6\xbd\x87\x28\x92\xad\x0f\x45\x73\xdd\x65\x2f\x4a\x97\xa5\x5f\x1b\xa0\xd4\x03\x01\xd4\x22\x11\xf4\x8f\x6f\x27\x4a\x63\xd6\xc7\x4e\x4c\xcb\x57\x2b\xbb\x6b\xcc\xe5\x90\x2c\x47\x3b\x8a\xf3\xfb\x02\x4d\x61\x02\xb3\x2d\x7f\x51\x44\x4d\xd0\x4d\x75\x78\x90\x7d\x68\xd6\x59\x35\xf6\xa1\x06\xcd\xf2\x96\x42\x11\xc9\x4f\x2e\x9d\x9e\xce\x28\x50\xd1\xe3\x49\x12\xb2\x46\xfb\x50\xd0\x4c\xf9\x80\x81\x39\xfe\x93\xc4\xfc\x6f\x54\x35\xdc\x44\x44\x01\xea\xff\xb9\x18\xd9\x3a\x7a\x62\xa0\xa2\x34\xd2\x19\x5e\xcc\xfd\xf5\x79\xdf\x6e\x3e\x95\x3f\xf9\x83\x95\x10\xee\x49\xd8\xe2\x63\xe7\x4f\x62\x37\xb8\xaf\xcd\x29\x13\x2f\xb3\x06\xaa\xe4\xae\x96\x3b\xe2\x69\x6a\x01\xbb\xf4\x54\xc6\xd3\x5c\x2e\x79\x54\x8a\xa0\xb7\xf4\x73\x2d\xa2\xa7\xad\x96\x6a\xb0\x2d\x0a\xfa\x63\x4e\xa4\x5c\x64\x39\xf3\xad\x39\x38\x72\x2f\x3a\xc3\xd2\xc1\x8c\x2f\x92\x01\x2a\xc1\x22\x16\x3d\xbf\x0e\x67\x4e\x47\xae\x7d\xd9\x9d\xfa\x2a\x23\xfc\xd9\xf0\x0a\x61\x99\xee\x78\x25\x5a\x8d\xfa\xd1\x5c\x0a\x68\xf3\x5a\x21\x47\xcf\xc1\xe6\xac\xc4\x4a\xd5\x38\xa4\xa0\xc6\x02\x32\xe2\xc7\x8c\xe1\x81\x05\x73\xc3\x88\x8c\xb1\x9b\x03\x29\xe5\x6b\x7a\x4f\xa4\x99\x0e\x37\x9d\x98\xa8\x7d\xf2\x2a\x1b\x05\x0c\x21\x96\xad\x3c\x5b\x1e\xee\x8a\x0c\x82\xc5\xc6\x6f\x44\x2c\x8b\xaa\x8a\x48\xa9\xc4\xea\x9f\x57\xf0\xff\xf7\xae\xe0\x80\x3a\x79\xcd\xfb\x77\x73\xf1\xde\x3f\x4f\xe0\x1f\xeb\x04\x46\x0e\x2c\xac\x4a\x18\x32\xb4\xd4\xd5\x7b\xff\xf3\xe3\x06\x57\xb0\xa0\x27\xd9\x80\x71\xfe\x8e\x1e\x44\xf0\x58\xda\x22\x03\x8d\x47\x6f\xa3\xdb\x9d\x6b\xf5\x3e\x8a\xbf\x2f\x04\x85\x69\xb5\xed\x1b\x06\xdc\xf2\x70\xe9\x98\x6b\x5a\xef\x60\x6d\x7b\xed\xef\x0f\x95\x72\xea\xe3\x83\x18\xcb\xe8\x92\x50\x37\xd6\x22\x2a\x81\xc9\xd8\x0e\xcb\x18\x70\x2e\xf2\xfc\x4d\xe6\x46\xbd\x6c\x01\x2d\xfa\xf1\x5a\x66\xf9\x2f\x15\x81\x9b\xc3\x14\x72\x5e\x0d\x37\x61\xbb\x8a\xdd\x0c\x7e\xd1\x99\xee\xbf\x2f\x27\xe4\x8d\x3b\x82\x6b\x0e\x48\x99\xac\xa4\x81\xe9\xf7\x90\xf3\xea\x8b\x1b\xaf\x2f\xe8\x6a\xbf\xa4\x7c\xbb\x15\xa9\xcd\x32\xd7\x80\x00\xa0\x0f\x00\x4f\x01\x81\x8f\xb5\x40\x95\xb1\xca\x91\x6a\x4c\x49\xa5\x69\xf8\x1a\x0c\xdd\x79\xf3\xcc\xdd\x14\x49\xd2\x3a\x73\xfb\x69\xc7\x6f\x1e\xaf\xaf\xe7\xbf\x8c\xaf\x1f\xaf\x3a\x69\xbc\x83\xaf\xb5\x8e\x89\xeb\x09\x8d\x89\x17\x0a\x31\x8f\x15\x56\xe9\x4c\xfb\xb7\xc6\xfb\x4a\x91\x24\x65\x8a\xf7\x99\xfa\x42\xed\x00\x64\x0f\xe5\x6b\xcc\xb8\xb1\xce\x81\x2b\x3f\x1f\xbe\xf6\xc5\x34\xfe\x05\x7f\x7b\xc6\xfc\x4b\x7c\x00\x21\x12\x12\x38\x68\x1e\x57\xc2\x03\x1f\xb1\x1d\x10\x20\xd6\xb6\x1d\x4e\x2d\x62\x71\xd8\xf6\x78\x54\xc0\x17\x28\x62\xab\x3d\x71\x92\xdd\x81\x63\xf7\xa5\x1c\xbb\x75\xb6\x3c\xc6\x1b\x01\xb4\x3b\x42\xe9\x01\x10\x54\xf3\xec\xfc\x33\x85\xd7\x59\xd3\xa7\x5c\xb7\xf7\x89\x4d\x08\x7b\x91\x70\xb5\x2a\xf8\x4a\x64\x23\x66\x1f\x3e\x53\x1b\xb9\x5a\x03\x33\x23\x29\xdf\xbb\x0b\x20\x14\xf1\x56\x96\x50\x05\x4b\x28\xd5\x4c\xd1\x3b\xa9\x95\x6f\x1e\x11\x75\x7f\x7c\x70\xaf\x43\x40\x45\x6c\x88\xd4\x13\xd4\x4c\xe1\xe4\x22\xfd\xb3\x0d\x6a\x81\xbf\xcc\xf3\xea\xd2\xe5\xa0\xae\x85\x0a\x83\xc6\xa6\xaf\x20\xbc\x36\x53\xae\x08\x08\x21\x8f\xa1\x7a\x3f\x62\xa1\xb1\x4b\xfb\xed\x89\x9d\x0c\xbb\x27\xa8\x6f\xcd\xab\xfe\xe8\x33\xc0\x6c\xb8\xf9\x00\xa9\xb4\xba\x19\xeb\x79\x35\xe1\x81\xe1\x68\xab\x0c\x85\xca\xaf\xe6\xde\xd8\xf7\xc2\xef\xb4\x02\x16\x74\xb1\x48\x06\x74\x09\xbf\xdf\xd9\x29\x34\xc9\xdd\x9d\xea\x11\xd1\xbe\xaf\x6c\x2d\xb3\x4c\xbb\x1e\xbb\xd0\xba\x65\x5e\x4e\x18\x1b\x2e\x75\x8a\x7e\xb0\x6f\x30\x8a\x28\x3f\x64\xbd\xf4\x28\xd7\xa8\x0e\x91\xb5\x3e\x5d\x1d\x4a\x64\x76\x50\x77\xbc\xff\xd4\xbb\x47\xce\x43\xa0\xc3\x6e\x90\x85\xa5\x73\xae\x64\x60\x5b\xcc\x24\x85\x06\xad\xe6\x98\x44\xf3\x62\x36\x0f\x0a\x82\x99\xf5\x3f\x72\x8b\x68\xe4\x67\x6e\x04\x9d\x8c\x8a\x34\x33\xe6\x92\xec\x1d\x59\x6d\x9d\x32\x3e\x53\x96\xad\xd7\x9a\xe3\xb1\x85\x5c\xa4\xee\xaf\x58\x02\xb3\x45\xb6\x4b\xf0\x58\x73\xa6\x95\xb0\xd6\x70\xa6\xac\x50\xdd\x88\xf1\x45\x66\xf5\xdf\xb8\xda\x39\x51\x36\xe9\x14\x37\xb8\x62\x80\x65\xd9\x6f\xf3\x2a\x6e\x40\xe9\x9c\xff\x17\xf3\x7f\x7f\xff\x97\xff\x1b\x00\x00\xff\xff\xcc\x9f\xa9\xa3\xc7\x5c\x04\x00") func adminSwaggerJsonBytes() ([]byte, error) { return bindataRead( @@ -93,7 +93,7 @@ func adminSwaggerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "admin.swagger.json", size: 284285, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 285895, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/gen/pb-java/datacatalog/Datacatalog.java b/gen/pb-java/datacatalog/Datacatalog.java index b29625e76..1a221b100 100644 --- a/gen/pb-java/datacatalog/Datacatalog.java +++ b/gen/pb-java/datacatalog/Datacatalog.java @@ -10239,6 +10239,2181 @@ public datacatalog.Datacatalog.ListDatasetsResponse getDefaultInstanceForType() } + public interface UpdateArtifactRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:datacatalog.UpdateArtifactRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * ID of dataset the artifact is associated with
+     * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + boolean hasDataset(); + /** + *
+     * ID of dataset the artifact is associated with
+     * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + datacatalog.Datacatalog.DatasetID getDataset(); + /** + *
+     * ID of dataset the artifact is associated with
+     * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + datacatalog.Datacatalog.DatasetIDOrBuilder getDatasetOrBuilder(); + + /** + * string artifact_id = 2; + */ + java.lang.String getArtifactId(); + /** + * string artifact_id = 2; + */ + com.google.protobuf.ByteString + getArtifactIdBytes(); + + /** + * string tag_name = 3; + */ + java.lang.String getTagName(); + /** + * string tag_name = 3; + */ + com.google.protobuf.ByteString + getTagNameBytes(); + + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + java.util.List + getDataList(); + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + datacatalog.Datacatalog.ArtifactData getData(int index); + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + int getDataCount(); + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + java.util.List + getDataOrBuilderList(); + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + datacatalog.Datacatalog.ArtifactDataOrBuilder getDataOrBuilder( + int index); + + public datacatalog.Datacatalog.UpdateArtifactRequest.QueryHandleCase getQueryHandleCase(); + } + /** + *
+   * Request message for updating an Artifact and overwriting its associated ArtifactData.
+   * 
+ * + * Protobuf type {@code datacatalog.UpdateArtifactRequest} + */ + public static final class UpdateArtifactRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:datacatalog.UpdateArtifactRequest) + UpdateArtifactRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use UpdateArtifactRequest.newBuilder() to construct. + private UpdateArtifactRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private UpdateArtifactRequest() { + data_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private UpdateArtifactRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + datacatalog.Datacatalog.DatasetID.Builder subBuilder = null; + if (dataset_ != null) { + subBuilder = dataset_.toBuilder(); + } + dataset_ = input.readMessage(datacatalog.Datacatalog.DatasetID.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(dataset_); + dataset_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + queryHandleCase_ = 2; + queryHandle_ = s; + break; + } + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + queryHandleCase_ = 3; + queryHandle_ = s; + break; + } + case 34: { + if (!((mutable_bitField0_ & 0x00000008) != 0)) { + data_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + data_.add( + input.readMessage(datacatalog.Datacatalog.ArtifactData.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000008) != 0)) { + data_ = java.util.Collections.unmodifiableList(data_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + datacatalog.Datacatalog.UpdateArtifactRequest.class, datacatalog.Datacatalog.UpdateArtifactRequest.Builder.class); + } + + private int bitField0_; + private int queryHandleCase_ = 0; + private java.lang.Object queryHandle_; + public enum QueryHandleCase + implements com.google.protobuf.Internal.EnumLite { + ARTIFACT_ID(2), + TAG_NAME(3), + QUERYHANDLE_NOT_SET(0); + private final int value; + private QueryHandleCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static QueryHandleCase valueOf(int value) { + return forNumber(value); + } + + public static QueryHandleCase forNumber(int value) { + switch (value) { + case 2: return ARTIFACT_ID; + case 3: return TAG_NAME; + case 0: return QUERYHANDLE_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + public QueryHandleCase + getQueryHandleCase() { + return QueryHandleCase.forNumber( + queryHandleCase_); + } + + public static final int DATASET_FIELD_NUMBER = 1; + private datacatalog.Datacatalog.DatasetID dataset_; + /** + *
+     * ID of dataset the artifact is associated with
+     * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public boolean hasDataset() { + return dataset_ != null; + } + /** + *
+     * ID of dataset the artifact is associated with
+     * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public datacatalog.Datacatalog.DatasetID getDataset() { + return dataset_ == null ? datacatalog.Datacatalog.DatasetID.getDefaultInstance() : dataset_; + } + /** + *
+     * ID of dataset the artifact is associated with
+     * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public datacatalog.Datacatalog.DatasetIDOrBuilder getDatasetOrBuilder() { + return getDataset(); + } + + public static final int ARTIFACT_ID_FIELD_NUMBER = 2; + /** + * string artifact_id = 2; + */ + public java.lang.String getArtifactId() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 2) { + ref = queryHandle_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (queryHandleCase_ == 2) { + queryHandle_ = s; + } + return s; + } + } + /** + * string artifact_id = 2; + */ + public com.google.protobuf.ByteString + getArtifactIdBytes() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 2) { + ref = queryHandle_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (queryHandleCase_ == 2) { + queryHandle_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TAG_NAME_FIELD_NUMBER = 3; + /** + * string tag_name = 3; + */ + public java.lang.String getTagName() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 3) { + ref = queryHandle_; + } + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (queryHandleCase_ == 3) { + queryHandle_ = s; + } + return s; + } + } + /** + * string tag_name = 3; + */ + public com.google.protobuf.ByteString + getTagNameBytes() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 3) { + ref = queryHandle_; + } + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (queryHandleCase_ == 3) { + queryHandle_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DATA_FIELD_NUMBER = 4; + private java.util.List data_; + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public java.util.List getDataList() { + return data_; + } + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public java.util.List + getDataOrBuilderList() { + return data_; + } + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public int getDataCount() { + return data_.size(); + } + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactData getData(int index) { + return data_.get(index); + } + /** + *
+     * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+     * ArtifactData entries will be removed from the underlying blob storage and database.
+     * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactDataOrBuilder getDataOrBuilder( + int index) { + return data_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (dataset_ != null) { + output.writeMessage(1, getDataset()); + } + if (queryHandleCase_ == 2) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, queryHandle_); + } + if (queryHandleCase_ == 3) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, queryHandle_); + } + for (int i = 0; i < data_.size(); i++) { + output.writeMessage(4, data_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (dataset_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getDataset()); + } + if (queryHandleCase_ == 2) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, queryHandle_); + } + if (queryHandleCase_ == 3) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, queryHandle_); + } + for (int i = 0; i < data_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, data_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof datacatalog.Datacatalog.UpdateArtifactRequest)) { + return super.equals(obj); + } + datacatalog.Datacatalog.UpdateArtifactRequest other = (datacatalog.Datacatalog.UpdateArtifactRequest) obj; + + if (hasDataset() != other.hasDataset()) return false; + if (hasDataset()) { + if (!getDataset() + .equals(other.getDataset())) return false; + } + if (!getDataList() + .equals(other.getDataList())) return false; + if (!getQueryHandleCase().equals(other.getQueryHandleCase())) return false; + switch (queryHandleCase_) { + case 2: + if (!getArtifactId() + .equals(other.getArtifactId())) return false; + break; + case 3: + if (!getTagName() + .equals(other.getTagName())) return false; + break; + case 0: + default: + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasDataset()) { + hash = (37 * hash) + DATASET_FIELD_NUMBER; + hash = (53 * hash) + getDataset().hashCode(); + } + if (getDataCount() > 0) { + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getDataList().hashCode(); + } + switch (queryHandleCase_) { + case 2: + hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER; + hash = (53 * hash) + getArtifactId().hashCode(); + break; + case 3: + hash = (37 * hash) + TAG_NAME_FIELD_NUMBER; + hash = (53 * hash) + getTagName().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static datacatalog.Datacatalog.UpdateArtifactRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(datacatalog.Datacatalog.UpdateArtifactRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Request message for updating an Artifact and overwriting its associated ArtifactData.
+     * 
+ * + * Protobuf type {@code datacatalog.UpdateArtifactRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:datacatalog.UpdateArtifactRequest) + datacatalog.Datacatalog.UpdateArtifactRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + datacatalog.Datacatalog.UpdateArtifactRequest.class, datacatalog.Datacatalog.UpdateArtifactRequest.Builder.class); + } + + // Construct using datacatalog.Datacatalog.UpdateArtifactRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getDataFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (datasetBuilder_ == null) { + dataset_ = null; + } else { + dataset_ = null; + datasetBuilder_ = null; + } + if (dataBuilder_ == null) { + data_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + } else { + dataBuilder_.clear(); + } + queryHandleCase_ = 0; + queryHandle_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactRequest_descriptor; + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactRequest getDefaultInstanceForType() { + return datacatalog.Datacatalog.UpdateArtifactRequest.getDefaultInstance(); + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactRequest build() { + datacatalog.Datacatalog.UpdateArtifactRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactRequest buildPartial() { + datacatalog.Datacatalog.UpdateArtifactRequest result = new datacatalog.Datacatalog.UpdateArtifactRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (datasetBuilder_ == null) { + result.dataset_ = dataset_; + } else { + result.dataset_ = datasetBuilder_.build(); + } + if (queryHandleCase_ == 2) { + result.queryHandle_ = queryHandle_; + } + if (queryHandleCase_ == 3) { + result.queryHandle_ = queryHandle_; + } + if (dataBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0)) { + data_ = java.util.Collections.unmodifiableList(data_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.data_ = data_; + } else { + result.data_ = dataBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + result.queryHandleCase_ = queryHandleCase_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof datacatalog.Datacatalog.UpdateArtifactRequest) { + return mergeFrom((datacatalog.Datacatalog.UpdateArtifactRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(datacatalog.Datacatalog.UpdateArtifactRequest other) { + if (other == datacatalog.Datacatalog.UpdateArtifactRequest.getDefaultInstance()) return this; + if (other.hasDataset()) { + mergeDataset(other.getDataset()); + } + if (dataBuilder_ == null) { + if (!other.data_.isEmpty()) { + if (data_.isEmpty()) { + data_ = other.data_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureDataIsMutable(); + data_.addAll(other.data_); + } + onChanged(); + } + } else { + if (!other.data_.isEmpty()) { + if (dataBuilder_.isEmpty()) { + dataBuilder_.dispose(); + dataBuilder_ = null; + data_ = other.data_; + bitField0_ = (bitField0_ & ~0x00000008); + dataBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getDataFieldBuilder() : null; + } else { + dataBuilder_.addAllMessages(other.data_); + } + } + } + switch (other.getQueryHandleCase()) { + case ARTIFACT_ID: { + queryHandleCase_ = 2; + queryHandle_ = other.queryHandle_; + onChanged(); + break; + } + case TAG_NAME: { + queryHandleCase_ = 3; + queryHandle_ = other.queryHandle_; + onChanged(); + break; + } + case QUERYHANDLE_NOT_SET: { + break; + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + datacatalog.Datacatalog.UpdateArtifactRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (datacatalog.Datacatalog.UpdateArtifactRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int queryHandleCase_ = 0; + private java.lang.Object queryHandle_; + public QueryHandleCase + getQueryHandleCase() { + return QueryHandleCase.forNumber( + queryHandleCase_); + } + + public Builder clearQueryHandle() { + queryHandleCase_ = 0; + queryHandle_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private datacatalog.Datacatalog.DatasetID dataset_; + private com.google.protobuf.SingleFieldBuilderV3< + datacatalog.Datacatalog.DatasetID, datacatalog.Datacatalog.DatasetID.Builder, datacatalog.Datacatalog.DatasetIDOrBuilder> datasetBuilder_; + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public boolean hasDataset() { + return datasetBuilder_ != null || dataset_ != null; + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public datacatalog.Datacatalog.DatasetID getDataset() { + if (datasetBuilder_ == null) { + return dataset_ == null ? datacatalog.Datacatalog.DatasetID.getDefaultInstance() : dataset_; + } else { + return datasetBuilder_.getMessage(); + } + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public Builder setDataset(datacatalog.Datacatalog.DatasetID value) { + if (datasetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + dataset_ = value; + onChanged(); + } else { + datasetBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public Builder setDataset( + datacatalog.Datacatalog.DatasetID.Builder builderForValue) { + if (datasetBuilder_ == null) { + dataset_ = builderForValue.build(); + onChanged(); + } else { + datasetBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public Builder mergeDataset(datacatalog.Datacatalog.DatasetID value) { + if (datasetBuilder_ == null) { + if (dataset_ != null) { + dataset_ = + datacatalog.Datacatalog.DatasetID.newBuilder(dataset_).mergeFrom(value).buildPartial(); + } else { + dataset_ = value; + } + onChanged(); + } else { + datasetBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public Builder clearDataset() { + if (datasetBuilder_ == null) { + dataset_ = null; + onChanged(); + } else { + dataset_ = null; + datasetBuilder_ = null; + } + + return this; + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public datacatalog.Datacatalog.DatasetID.Builder getDatasetBuilder() { + + onChanged(); + return getDatasetFieldBuilder().getBuilder(); + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + public datacatalog.Datacatalog.DatasetIDOrBuilder getDatasetOrBuilder() { + if (datasetBuilder_ != null) { + return datasetBuilder_.getMessageOrBuilder(); + } else { + return dataset_ == null ? + datacatalog.Datacatalog.DatasetID.getDefaultInstance() : dataset_; + } + } + /** + *
+       * ID of dataset the artifact is associated with
+       * 
+ * + * .datacatalog.DatasetID dataset = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + datacatalog.Datacatalog.DatasetID, datacatalog.Datacatalog.DatasetID.Builder, datacatalog.Datacatalog.DatasetIDOrBuilder> + getDatasetFieldBuilder() { + if (datasetBuilder_ == null) { + datasetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + datacatalog.Datacatalog.DatasetID, datacatalog.Datacatalog.DatasetID.Builder, datacatalog.Datacatalog.DatasetIDOrBuilder>( + getDataset(), + getParentForChildren(), + isClean()); + dataset_ = null; + } + return datasetBuilder_; + } + + /** + * string artifact_id = 2; + */ + public java.lang.String getArtifactId() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 2) { + ref = queryHandle_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (queryHandleCase_ == 2) { + queryHandle_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string artifact_id = 2; + */ + public com.google.protobuf.ByteString + getArtifactIdBytes() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 2) { + ref = queryHandle_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (queryHandleCase_ == 2) { + queryHandle_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string artifact_id = 2; + */ + public Builder setArtifactId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + queryHandleCase_ = 2; + queryHandle_ = value; + onChanged(); + return this; + } + /** + * string artifact_id = 2; + */ + public Builder clearArtifactId() { + if (queryHandleCase_ == 2) { + queryHandleCase_ = 0; + queryHandle_ = null; + onChanged(); + } + return this; + } + /** + * string artifact_id = 2; + */ + public Builder setArtifactIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + queryHandleCase_ = 2; + queryHandle_ = value; + onChanged(); + return this; + } + + /** + * string tag_name = 3; + */ + public java.lang.String getTagName() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 3) { + ref = queryHandle_; + } + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (queryHandleCase_ == 3) { + queryHandle_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string tag_name = 3; + */ + public com.google.protobuf.ByteString + getTagNameBytes() { + java.lang.Object ref = ""; + if (queryHandleCase_ == 3) { + ref = queryHandle_; + } + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + if (queryHandleCase_ == 3) { + queryHandle_ = b; + } + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string tag_name = 3; + */ + public Builder setTagName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + queryHandleCase_ = 3; + queryHandle_ = value; + onChanged(); + return this; + } + /** + * string tag_name = 3; + */ + public Builder clearTagName() { + if (queryHandleCase_ == 3) { + queryHandleCase_ = 0; + queryHandle_ = null; + onChanged(); + } + return this; + } + /** + * string tag_name = 3; + */ + public Builder setTagNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + queryHandleCase_ = 3; + queryHandle_ = value; + onChanged(); + return this; + } + + private java.util.List data_ = + java.util.Collections.emptyList(); + private void ensureDataIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + data_ = new java.util.ArrayList(data_); + bitField0_ |= 0x00000008; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + datacatalog.Datacatalog.ArtifactData, datacatalog.Datacatalog.ArtifactData.Builder, datacatalog.Datacatalog.ArtifactDataOrBuilder> dataBuilder_; + + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public java.util.List getDataList() { + if (dataBuilder_ == null) { + return java.util.Collections.unmodifiableList(data_); + } else { + return dataBuilder_.getMessageList(); + } + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public int getDataCount() { + if (dataBuilder_ == null) { + return data_.size(); + } else { + return dataBuilder_.getCount(); + } + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactData getData(int index) { + if (dataBuilder_ == null) { + return data_.get(index); + } else { + return dataBuilder_.getMessage(index); + } + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder setData( + int index, datacatalog.Datacatalog.ArtifactData value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.set(index, value); + onChanged(); + } else { + dataBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder setData( + int index, datacatalog.Datacatalog.ArtifactData.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.set(index, builderForValue.build()); + onChanged(); + } else { + dataBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder addData(datacatalog.Datacatalog.ArtifactData value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.add(value); + onChanged(); + } else { + dataBuilder_.addMessage(value); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder addData( + int index, datacatalog.Datacatalog.ArtifactData value) { + if (dataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDataIsMutable(); + data_.add(index, value); + onChanged(); + } else { + dataBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder addData( + datacatalog.Datacatalog.ArtifactData.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(builderForValue.build()); + onChanged(); + } else { + dataBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder addData( + int index, datacatalog.Datacatalog.ArtifactData.Builder builderForValue) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.add(index, builderForValue.build()); + onChanged(); + } else { + dataBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder addAllData( + java.lang.Iterable values) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, data_); + onChanged(); + } else { + dataBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder clearData() { + if (dataBuilder_ == null) { + data_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + } else { + dataBuilder_.clear(); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public Builder removeData(int index) { + if (dataBuilder_ == null) { + ensureDataIsMutable(); + data_.remove(index); + onChanged(); + } else { + dataBuilder_.remove(index); + } + return this; + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactData.Builder getDataBuilder( + int index) { + return getDataFieldBuilder().getBuilder(index); + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactDataOrBuilder getDataOrBuilder( + int index) { + if (dataBuilder_ == null) { + return data_.get(index); } else { + return dataBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public java.util.List + getDataOrBuilderList() { + if (dataBuilder_ != null) { + return dataBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(data_); + } + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactData.Builder addDataBuilder() { + return getDataFieldBuilder().addBuilder( + datacatalog.Datacatalog.ArtifactData.getDefaultInstance()); + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public datacatalog.Datacatalog.ArtifactData.Builder addDataBuilder( + int index) { + return getDataFieldBuilder().addBuilder( + index, datacatalog.Datacatalog.ArtifactData.getDefaultInstance()); + } + /** + *
+       * List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing
+       * ArtifactData entries will be removed from the underlying blob storage and database.
+       * 
+ * + * repeated .datacatalog.ArtifactData data = 4; + */ + public java.util.List + getDataBuilderList() { + return getDataFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + datacatalog.Datacatalog.ArtifactData, datacatalog.Datacatalog.ArtifactData.Builder, datacatalog.Datacatalog.ArtifactDataOrBuilder> + getDataFieldBuilder() { + if (dataBuilder_ == null) { + dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + datacatalog.Datacatalog.ArtifactData, datacatalog.Datacatalog.ArtifactData.Builder, datacatalog.Datacatalog.ArtifactDataOrBuilder>( + data_, + ((bitField0_ & 0x00000008) != 0), + getParentForChildren(), + isClean()); + data_ = null; + } + return dataBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:datacatalog.UpdateArtifactRequest) + } + + // @@protoc_insertion_point(class_scope:datacatalog.UpdateArtifactRequest) + private static final datacatalog.Datacatalog.UpdateArtifactRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new datacatalog.Datacatalog.UpdateArtifactRequest(); + } + + public static datacatalog.Datacatalog.UpdateArtifactRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public UpdateArtifactRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new UpdateArtifactRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface UpdateArtifactResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:datacatalog.UpdateArtifactResponse) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * The unique ID of the artifact updated
+     * 
+ * + * string artifact_id = 1; + */ + java.lang.String getArtifactId(); + /** + *
+     * The unique ID of the artifact updated
+     * 
+ * + * string artifact_id = 1; + */ + com.google.protobuf.ByteString + getArtifactIdBytes(); + } + /** + *
+   * Response message for updating an Artifact.
+   * 
+ * + * Protobuf type {@code datacatalog.UpdateArtifactResponse} + */ + public static final class UpdateArtifactResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:datacatalog.UpdateArtifactResponse) + UpdateArtifactResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use UpdateArtifactResponse.newBuilder() to construct. + private UpdateArtifactResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private UpdateArtifactResponse() { + artifactId_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private UpdateArtifactResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + artifactId_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + datacatalog.Datacatalog.UpdateArtifactResponse.class, datacatalog.Datacatalog.UpdateArtifactResponse.Builder.class); + } + + public static final int ARTIFACT_ID_FIELD_NUMBER = 1; + private volatile java.lang.Object artifactId_; + /** + *
+     * The unique ID of the artifact updated
+     * 
+ * + * string artifact_id = 1; + */ + public java.lang.String getArtifactId() { + java.lang.Object ref = artifactId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + artifactId_ = s; + return s; + } + } + /** + *
+     * The unique ID of the artifact updated
+     * 
+ * + * string artifact_id = 1; + */ + public com.google.protobuf.ByteString + getArtifactIdBytes() { + java.lang.Object ref = artifactId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + artifactId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!getArtifactIdBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, artifactId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getArtifactIdBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, artifactId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof datacatalog.Datacatalog.UpdateArtifactResponse)) { + return super.equals(obj); + } + datacatalog.Datacatalog.UpdateArtifactResponse other = (datacatalog.Datacatalog.UpdateArtifactResponse) obj; + + if (!getArtifactId() + .equals(other.getArtifactId())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER; + hash = (53 * hash) + getArtifactId().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static datacatalog.Datacatalog.UpdateArtifactResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(datacatalog.Datacatalog.UpdateArtifactResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Response message for updating an Artifact.
+     * 
+ * + * Protobuf type {@code datacatalog.UpdateArtifactResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:datacatalog.UpdateArtifactResponse) + datacatalog.Datacatalog.UpdateArtifactResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + datacatalog.Datacatalog.UpdateArtifactResponse.class, datacatalog.Datacatalog.UpdateArtifactResponse.Builder.class); + } + + // Construct using datacatalog.Datacatalog.UpdateArtifactResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + artifactId_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return datacatalog.Datacatalog.internal_static_datacatalog_UpdateArtifactResponse_descriptor; + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactResponse getDefaultInstanceForType() { + return datacatalog.Datacatalog.UpdateArtifactResponse.getDefaultInstance(); + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactResponse build() { + datacatalog.Datacatalog.UpdateArtifactResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactResponse buildPartial() { + datacatalog.Datacatalog.UpdateArtifactResponse result = new datacatalog.Datacatalog.UpdateArtifactResponse(this); + result.artifactId_ = artifactId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof datacatalog.Datacatalog.UpdateArtifactResponse) { + return mergeFrom((datacatalog.Datacatalog.UpdateArtifactResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(datacatalog.Datacatalog.UpdateArtifactResponse other) { + if (other == datacatalog.Datacatalog.UpdateArtifactResponse.getDefaultInstance()) return this; + if (!other.getArtifactId().isEmpty()) { + artifactId_ = other.artifactId_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + datacatalog.Datacatalog.UpdateArtifactResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (datacatalog.Datacatalog.UpdateArtifactResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object artifactId_ = ""; + /** + *
+       * The unique ID of the artifact updated
+       * 
+ * + * string artifact_id = 1; + */ + public java.lang.String getArtifactId() { + java.lang.Object ref = artifactId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + artifactId_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * The unique ID of the artifact updated
+       * 
+ * + * string artifact_id = 1; + */ + public com.google.protobuf.ByteString + getArtifactIdBytes() { + java.lang.Object ref = artifactId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + artifactId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * The unique ID of the artifact updated
+       * 
+ * + * string artifact_id = 1; + */ + public Builder setArtifactId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + artifactId_ = value; + onChanged(); + return this; + } + /** + *
+       * The unique ID of the artifact updated
+       * 
+ * + * string artifact_id = 1; + */ + public Builder clearArtifactId() { + + artifactId_ = getDefaultInstance().getArtifactId(); + onChanged(); + return this; + } + /** + *
+       * The unique ID of the artifact updated
+       * 
+ * + * string artifact_id = 1; + */ + public Builder setArtifactIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + artifactId_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:datacatalog.UpdateArtifactResponse) + } + + // @@protoc_insertion_point(class_scope:datacatalog.UpdateArtifactResponse) + private static final datacatalog.Datacatalog.UpdateArtifactResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new datacatalog.Datacatalog.UpdateArtifactResponse(); + } + + public static datacatalog.Datacatalog.UpdateArtifactResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public UpdateArtifactResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new UpdateArtifactResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public datacatalog.Datacatalog.UpdateArtifactResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface ReservationIDOrBuilder extends // @@protoc_insertion_point(interface_extends:datacatalog.ReservationID) com.google.protobuf.MessageOrBuilder { @@ -30751,6 +32926,16 @@ public datacatalog.Datacatalog.PaginationOptions getDefaultInstanceForType() { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_datacatalog_ListDatasetsResponse_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_datacatalog_UpdateArtifactRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_datacatalog_UpdateArtifactRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_datacatalog_UpdateArtifactResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_datacatalog_UpdateArtifactResponse_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_datacatalog_ReservationID_descriptor; private static final @@ -30899,92 +33084,99 @@ public datacatalog.Datacatalog.PaginationOptions getDefaultInstanceForType() { "\002 \001(\0132\036.datacatalog.PaginationOptions\"R\n" + "\024ListDatasetsResponse\022&\n\010datasets\030\001 \003(\0132" + "\024.datacatalog.Dataset\022\022\n\nnext_token\030\002 \001(" + - "\t\"M\n\rReservationID\022*\n\ndataset_id\030\001 \001(\0132\026" + - ".datacatalog.DatasetID\022\020\n\010tag_name\030\002 \001(\t" + - "\"\234\001\n\035GetOrExtendReservationRequest\0222\n\016re" + - "servation_id\030\001 \001(\0132\032.datacatalog.Reserva" + - "tionID\022\020\n\010owner_id\030\002 \001(\t\0225\n\022heartbeat_in" + - "terval\030\003 \001(\0132\031.google.protobuf.Duration\"" + - "\343\001\n\013Reservation\0222\n\016reservation_id\030\001 \001(\0132" + - "\032.datacatalog.ReservationID\022\020\n\010owner_id\030" + - "\002 \001(\t\0225\n\022heartbeat_interval\030\003 \001(\0132\031.goog" + - "le.protobuf.Duration\022.\n\nexpires_at\030\004 \001(\013" + - "2\032.google.protobuf.Timestamp\022\'\n\010metadata" + - "\030\006 \001(\0132\025.datacatalog.Metadata\"O\n\036GetOrEx" + - "tendReservationResponse\022-\n\013reservation\030\001" + - " \001(\0132\030.datacatalog.Reservation\"a\n\031Releas" + - "eReservationRequest\0222\n\016reservation_id\030\001 " + - "\001(\0132\032.datacatalog.ReservationID\022\020\n\010owner" + - "_id\030\002 \001(\t\"\034\n\032ReleaseReservationResponse\"" + - "m\n\007Dataset\022\"\n\002id\030\001 \001(\0132\026.datacatalog.Dat" + - "asetID\022\'\n\010metadata\030\002 \001(\0132\025.datacatalog.M" + - "etadata\022\025\n\rpartitionKeys\030\003 \003(\t\"\'\n\tPartit" + - "ion\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"Y\n\tDatas" + - "etID\022\017\n\007project\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\016\n\006d" + - "omain\030\003 \001(\t\022\017\n\007version\030\004 \001(\t\022\014\n\004UUID\030\005 \001" + - "(\t\"\215\002\n\010Artifact\022\n\n\002id\030\001 \001(\t\022\'\n\007dataset\030\002" + - " \001(\0132\026.datacatalog.DatasetID\022\'\n\004data\030\003 \003" + - "(\0132\031.datacatalog.ArtifactData\022\'\n\010metadat" + - "a\030\004 \001(\0132\025.datacatalog.Metadata\022*\n\npartit" + - "ions\030\005 \003(\0132\026.datacatalog.Partition\022\036\n\004ta" + - "gs\030\006 \003(\0132\020.datacatalog.Tag\022.\n\ncreated_at" + - "\030\007 \001(\0132\032.google.protobuf.Timestamp\"C\n\014Ar" + - "tifactData\022\014\n\004name\030\001 \001(\t\022%\n\005value\030\002 \001(\0132" + - "\026.flyteidl.core.Literal\"Q\n\003Tag\022\014\n\004name\030\001" + - " \001(\t\022\023\n\013artifact_id\030\002 \001(\t\022\'\n\007dataset\030\003 \001" + - "(\0132\026.datacatalog.DatasetID\"m\n\010Metadata\0222" + - "\n\007key_map\030\001 \003(\0132!.datacatalog.Metadata.K" + - "eyMapEntry\032-\n\013KeyMapEntry\022\013\n\003key\030\001 \001(\t\022\r" + - "\n\005value\030\002 \001(\t:\0028\001\"F\n\020FilterExpression\0222\n" + - "\007filters\030\001 \003(\0132!.datacatalog.SinglePrope" + - "rtyFilter\"\211\003\n\024SinglePropertyFilter\0224\n\nta" + - "g_filter\030\001 \001(\0132\036.datacatalog.TagProperty" + - "FilterH\000\022@\n\020partition_filter\030\002 \001(\0132$.dat" + - "acatalog.PartitionPropertyFilterH\000\022>\n\017ar" + - "tifact_filter\030\003 \001(\0132#.datacatalog.Artifa" + - "ctPropertyFilterH\000\022<\n\016dataset_filter\030\004 \001" + - "(\0132\".datacatalog.DatasetPropertyFilterH\000" + - "\022F\n\010operator\030\n \001(\01624.datacatalog.SingleP" + - "ropertyFilter.ComparisonOperator\" \n\022Comp" + - "arisonOperator\022\n\n\006EQUALS\020\000B\021\n\017property_f" + - "ilter\";\n\026ArtifactPropertyFilter\022\025\n\013artif" + - "act_id\030\001 \001(\tH\000B\n\n\010property\"3\n\021TagPropert" + - "yFilter\022\022\n\010tag_name\030\001 \001(\tH\000B\n\n\010property\"" + - "S\n\027PartitionPropertyFilter\022,\n\007key_val\030\001 " + - "\001(\0132\031.datacatalog.KeyValuePairH\000B\n\n\010prop" + - "erty\"*\n\014KeyValuePair\022\013\n\003key\030\001 \001(\t\022\r\n\005val" + - "ue\030\002 \001(\t\"k\n\025DatasetPropertyFilter\022\021\n\007pro" + - "ject\030\001 \001(\tH\000\022\016\n\004name\030\002 \001(\tH\000\022\020\n\006domain\030\003" + - " \001(\tH\000\022\021\n\007version\030\004 \001(\tH\000B\n\n\010property\"\361\001" + - "\n\021PaginationOptions\022\r\n\005limit\030\001 \001(\r\022\r\n\005to" + - "ken\030\002 \001(\t\0227\n\007sortKey\030\003 \001(\0162&.datacatalog" + - ".PaginationOptions.SortKey\022;\n\tsortOrder\030" + - "\004 \001(\0162(.datacatalog.PaginationOptions.So" + - "rtOrder\"*\n\tSortOrder\022\016\n\nDESCENDING\020\000\022\r\n\t" + - "ASCENDING\020\001\"\034\n\007SortKey\022\021\n\rCREATION_TIME\020" + - "\0002\253\006\n\013DataCatalog\022V\n\rCreateDataset\022!.dat" + - "acatalog.CreateDatasetRequest\032\".datacata" + - "log.CreateDatasetResponse\022M\n\nGetDataset\022" + - "\036.datacatalog.GetDatasetRequest\032\037.dataca" + - "talog.GetDatasetResponse\022Y\n\016CreateArtifa" + - "ct\022\".datacatalog.CreateArtifactRequest\032#" + - ".datacatalog.CreateArtifactResponse\022P\n\013G" + - "etArtifact\022\037.datacatalog.GetArtifactRequ" + - "est\032 .datacatalog.GetArtifactResponse\022A\n" + - "\006AddTag\022\032.datacatalog.AddTagRequest\032\033.da" + - "tacatalog.AddTagResponse\022V\n\rListArtifact" + - "s\022!.datacatalog.ListArtifactsRequest\032\".d" + - "atacatalog.ListArtifactsResponse\022S\n\014List" + - "Datasets\022 .datacatalog.ListDatasetsReque" + - "st\032!.datacatalog.ListDatasetsResponse\022q\n" + - "\026GetOrExtendReservation\022*.datacatalog.Ge" + - "tOrExtendReservationRequest\032+.datacatalo" + - "g.GetOrExtendReservationResponse\022e\n\022Rele" + - "aseReservation\022&.datacatalog.ReleaseRese" + - "rvationRequest\032\'.datacatalog.ReleaseRese" + - "rvationResponseB=Z;github.com/flyteorg/f" + - "lyteidl/gen/pb-go/flyteidl/datacatalogb\006" + - "proto3" + "\t\"\244\001\n\025UpdateArtifactRequest\022\'\n\007dataset\030\001" + + " \001(\0132\026.datacatalog.DatasetID\022\025\n\013artifact" + + "_id\030\002 \001(\tH\000\022\022\n\010tag_name\030\003 \001(\tH\000\022\'\n\004data\030" + + "\004 \003(\0132\031.datacatalog.ArtifactDataB\016\n\014quer" + + "y_handle\"-\n\026UpdateArtifactResponse\022\023\n\013ar" + + "tifact_id\030\001 \001(\t\"M\n\rReservationID\022*\n\ndata" + + "set_id\030\001 \001(\0132\026.datacatalog.DatasetID\022\020\n\010" + + "tag_name\030\002 \001(\t\"\234\001\n\035GetOrExtendReservatio" + + "nRequest\0222\n\016reservation_id\030\001 \001(\0132\032.datac" + + "atalog.ReservationID\022\020\n\010owner_id\030\002 \001(\t\0225" + + "\n\022heartbeat_interval\030\003 \001(\0132\031.google.prot" + + "obuf.Duration\"\343\001\n\013Reservation\0222\n\016reserva" + + "tion_id\030\001 \001(\0132\032.datacatalog.ReservationI" + + "D\022\020\n\010owner_id\030\002 \001(\t\0225\n\022heartbeat_interva" + + "l\030\003 \001(\0132\031.google.protobuf.Duration\022.\n\nex" + + "pires_at\030\004 \001(\0132\032.google.protobuf.Timesta" + + "mp\022\'\n\010metadata\030\006 \001(\0132\025.datacatalog.Metad" + + "ata\"O\n\036GetOrExtendReservationResponse\022-\n" + + "\013reservation\030\001 \001(\0132\030.datacatalog.Reserva" + + "tion\"a\n\031ReleaseReservationRequest\0222\n\016res" + + "ervation_id\030\001 \001(\0132\032.datacatalog.Reservat" + + "ionID\022\020\n\010owner_id\030\002 \001(\t\"\034\n\032ReleaseReserv" + + "ationResponse\"m\n\007Dataset\022\"\n\002id\030\001 \001(\0132\026.d" + + "atacatalog.DatasetID\022\'\n\010metadata\030\002 \001(\0132\025" + + ".datacatalog.Metadata\022\025\n\rpartitionKeys\030\003" + + " \003(\t\"\'\n\tPartition\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030" + + "\002 \001(\t\"Y\n\tDatasetID\022\017\n\007project\030\001 \001(\t\022\014\n\004n" + + "ame\030\002 \001(\t\022\016\n\006domain\030\003 \001(\t\022\017\n\007version\030\004 \001" + + "(\t\022\014\n\004UUID\030\005 \001(\t\"\215\002\n\010Artifact\022\n\n\002id\030\001 \001(" + + "\t\022\'\n\007dataset\030\002 \001(\0132\026.datacatalog.Dataset" + + "ID\022\'\n\004data\030\003 \003(\0132\031.datacatalog.ArtifactD" + + "ata\022\'\n\010metadata\030\004 \001(\0132\025.datacatalog.Meta" + + "data\022*\n\npartitions\030\005 \003(\0132\026.datacatalog.P" + + "artition\022\036\n\004tags\030\006 \003(\0132\020.datacatalog.Tag" + + "\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf.T" + + "imestamp\"C\n\014ArtifactData\022\014\n\004name\030\001 \001(\t\022%" + + "\n\005value\030\002 \001(\0132\026.flyteidl.core.Literal\"Q\n" + + "\003Tag\022\014\n\004name\030\001 \001(\t\022\023\n\013artifact_id\030\002 \001(\t\022" + + "\'\n\007dataset\030\003 \001(\0132\026.datacatalog.DatasetID" + + "\"m\n\010Metadata\0222\n\007key_map\030\001 \003(\0132!.datacata" + + "log.Metadata.KeyMapEntry\032-\n\013KeyMapEntry\022" + + "\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"F\n\020Filte" + + "rExpression\0222\n\007filters\030\001 \003(\0132!.datacatal" + + "og.SinglePropertyFilter\"\211\003\n\024SingleProper" + + "tyFilter\0224\n\ntag_filter\030\001 \001(\0132\036.datacatal" + + "og.TagPropertyFilterH\000\022@\n\020partition_filt" + + "er\030\002 \001(\0132$.datacatalog.PartitionProperty" + + "FilterH\000\022>\n\017artifact_filter\030\003 \001(\0132#.data" + + "catalog.ArtifactPropertyFilterH\000\022<\n\016data" + + "set_filter\030\004 \001(\0132\".datacatalog.DatasetPr" + + "opertyFilterH\000\022F\n\010operator\030\n \001(\01624.datac" + + "atalog.SinglePropertyFilter.ComparisonOp" + + "erator\" \n\022ComparisonOperator\022\n\n\006EQUALS\020\000" + + "B\021\n\017property_filter\";\n\026ArtifactPropertyF" + + "ilter\022\025\n\013artifact_id\030\001 \001(\tH\000B\n\n\010property" + + "\"3\n\021TagPropertyFilter\022\022\n\010tag_name\030\001 \001(\tH" + + "\000B\n\n\010property\"S\n\027PartitionPropertyFilter" + + "\022,\n\007key_val\030\001 \001(\0132\031.datacatalog.KeyValue" + + "PairH\000B\n\n\010property\"*\n\014KeyValuePair\022\013\n\003ke" + + "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"k\n\025DatasetPropert" + + "yFilter\022\021\n\007project\030\001 \001(\tH\000\022\016\n\004name\030\002 \001(\t" + + "H\000\022\020\n\006domain\030\003 \001(\tH\000\022\021\n\007version\030\004 \001(\tH\000B" + + "\n\n\010property\"\361\001\n\021PaginationOptions\022\r\n\005lim" + + "it\030\001 \001(\r\022\r\n\005token\030\002 \001(\t\0227\n\007sortKey\030\003 \001(\016" + + "2&.datacatalog.PaginationOptions.SortKey" + + "\022;\n\tsortOrder\030\004 \001(\0162(.datacatalog.Pagina" + + "tionOptions.SortOrder\"*\n\tSortOrder\022\016\n\nDE" + + "SCENDING\020\000\022\r\n\tASCENDING\020\001\"\034\n\007SortKey\022\021\n\r" + + "CREATION_TIME\020\0002\206\007\n\013DataCatalog\022V\n\rCreat" + + "eDataset\022!.datacatalog.CreateDatasetRequ" + + "est\032\".datacatalog.CreateDatasetResponse\022" + + "M\n\nGetDataset\022\036.datacatalog.GetDatasetRe" + + "quest\032\037.datacatalog.GetDatasetResponse\022Y" + + "\n\016CreateArtifact\022\".datacatalog.CreateArt" + + "ifactRequest\032#.datacatalog.CreateArtifac" + + "tResponse\022P\n\013GetArtifact\022\037.datacatalog.G" + + "etArtifactRequest\032 .datacatalog.GetArtif" + + "actResponse\022A\n\006AddTag\022\032.datacatalog.AddT" + + "agRequest\032\033.datacatalog.AddTagResponse\022V" + + "\n\rListArtifacts\022!.datacatalog.ListArtifa" + + "ctsRequest\032\".datacatalog.ListArtifactsRe" + + "sponse\022S\n\014ListDatasets\022 .datacatalog.Lis" + + "tDatasetsRequest\032!.datacatalog.ListDatas" + + "etsResponse\022Y\n\016UpdateArtifact\022\".datacata" + + "log.UpdateArtifactRequest\032#.datacatalog." + + "UpdateArtifactResponse\022q\n\026GetOrExtendRes" + + "ervation\022*.datacatalog.GetOrExtendReserv" + + "ationRequest\032+.datacatalog.GetOrExtendRe" + + "servationResponse\022e\n\022ReleaseReservation\022" + + "&.datacatalog.ReleaseReservationRequest\032" + + "\'.datacatalog.ReleaseReservationResponse" + + "B=Z;github.com/flyteorg/flyteidl/gen/pb-" + + "go/flyteidl/datacatalogb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -31085,80 +33277,92 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_ListDatasetsResponse_descriptor, new java.lang.String[] { "Datasets", "NextToken", }); - internal_static_datacatalog_ReservationID_descriptor = + internal_static_datacatalog_UpdateArtifactRequest_descriptor = getDescriptor().getMessageTypes().get(14); + internal_static_datacatalog_UpdateArtifactRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_datacatalog_UpdateArtifactRequest_descriptor, + new java.lang.String[] { "Dataset", "ArtifactId", "TagName", "Data", "QueryHandle", }); + internal_static_datacatalog_UpdateArtifactResponse_descriptor = + getDescriptor().getMessageTypes().get(15); + internal_static_datacatalog_UpdateArtifactResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_datacatalog_UpdateArtifactResponse_descriptor, + new java.lang.String[] { "ArtifactId", }); + internal_static_datacatalog_ReservationID_descriptor = + getDescriptor().getMessageTypes().get(16); internal_static_datacatalog_ReservationID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_ReservationID_descriptor, new java.lang.String[] { "DatasetId", "TagName", }); internal_static_datacatalog_GetOrExtendReservationRequest_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(17); internal_static_datacatalog_GetOrExtendReservationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_GetOrExtendReservationRequest_descriptor, new java.lang.String[] { "ReservationId", "OwnerId", "HeartbeatInterval", }); internal_static_datacatalog_Reservation_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(18); internal_static_datacatalog_Reservation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_Reservation_descriptor, new java.lang.String[] { "ReservationId", "OwnerId", "HeartbeatInterval", "ExpiresAt", "Metadata", }); internal_static_datacatalog_GetOrExtendReservationResponse_descriptor = - getDescriptor().getMessageTypes().get(17); + getDescriptor().getMessageTypes().get(19); internal_static_datacatalog_GetOrExtendReservationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_GetOrExtendReservationResponse_descriptor, new java.lang.String[] { "Reservation", }); internal_static_datacatalog_ReleaseReservationRequest_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(20); internal_static_datacatalog_ReleaseReservationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_ReleaseReservationRequest_descriptor, new java.lang.String[] { "ReservationId", "OwnerId", }); internal_static_datacatalog_ReleaseReservationResponse_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(21); internal_static_datacatalog_ReleaseReservationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_ReleaseReservationResponse_descriptor, new java.lang.String[] { }); internal_static_datacatalog_Dataset_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(22); internal_static_datacatalog_Dataset_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_Dataset_descriptor, new java.lang.String[] { "Id", "Metadata", "PartitionKeys", }); internal_static_datacatalog_Partition_descriptor = - getDescriptor().getMessageTypes().get(21); + getDescriptor().getMessageTypes().get(23); internal_static_datacatalog_Partition_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_Partition_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_datacatalog_DatasetID_descriptor = - getDescriptor().getMessageTypes().get(22); + getDescriptor().getMessageTypes().get(24); internal_static_datacatalog_DatasetID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_DatasetID_descriptor, new java.lang.String[] { "Project", "Name", "Domain", "Version", "UUID", }); internal_static_datacatalog_Artifact_descriptor = - getDescriptor().getMessageTypes().get(23); + getDescriptor().getMessageTypes().get(25); internal_static_datacatalog_Artifact_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_Artifact_descriptor, new java.lang.String[] { "Id", "Dataset", "Data", "Metadata", "Partitions", "Tags", "CreatedAt", }); internal_static_datacatalog_ArtifactData_descriptor = - getDescriptor().getMessageTypes().get(24); + getDescriptor().getMessageTypes().get(26); internal_static_datacatalog_ArtifactData_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_ArtifactData_descriptor, new java.lang.String[] { "Name", "Value", }); internal_static_datacatalog_Tag_descriptor = - getDescriptor().getMessageTypes().get(25); + getDescriptor().getMessageTypes().get(27); internal_static_datacatalog_Tag_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_Tag_descriptor, new java.lang.String[] { "Name", "ArtifactId", "Dataset", }); internal_static_datacatalog_Metadata_descriptor = - getDescriptor().getMessageTypes().get(26); + getDescriptor().getMessageTypes().get(28); internal_static_datacatalog_Metadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_Metadata_descriptor, @@ -31170,49 +33374,49 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_datacatalog_Metadata_KeyMapEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_datacatalog_FilterExpression_descriptor = - getDescriptor().getMessageTypes().get(27); + getDescriptor().getMessageTypes().get(29); internal_static_datacatalog_FilterExpression_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_FilterExpression_descriptor, new java.lang.String[] { "Filters", }); internal_static_datacatalog_SinglePropertyFilter_descriptor = - getDescriptor().getMessageTypes().get(28); + getDescriptor().getMessageTypes().get(30); internal_static_datacatalog_SinglePropertyFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_SinglePropertyFilter_descriptor, new java.lang.String[] { "TagFilter", "PartitionFilter", "ArtifactFilter", "DatasetFilter", "Operator", "PropertyFilter", }); internal_static_datacatalog_ArtifactPropertyFilter_descriptor = - getDescriptor().getMessageTypes().get(29); + getDescriptor().getMessageTypes().get(31); internal_static_datacatalog_ArtifactPropertyFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_ArtifactPropertyFilter_descriptor, new java.lang.String[] { "ArtifactId", "Property", }); internal_static_datacatalog_TagPropertyFilter_descriptor = - getDescriptor().getMessageTypes().get(30); + getDescriptor().getMessageTypes().get(32); internal_static_datacatalog_TagPropertyFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_TagPropertyFilter_descriptor, new java.lang.String[] { "TagName", "Property", }); internal_static_datacatalog_PartitionPropertyFilter_descriptor = - getDescriptor().getMessageTypes().get(31); + getDescriptor().getMessageTypes().get(33); internal_static_datacatalog_PartitionPropertyFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_PartitionPropertyFilter_descriptor, new java.lang.String[] { "KeyVal", "Property", }); internal_static_datacatalog_KeyValuePair_descriptor = - getDescriptor().getMessageTypes().get(32); + getDescriptor().getMessageTypes().get(34); internal_static_datacatalog_KeyValuePair_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_KeyValuePair_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_datacatalog_DatasetPropertyFilter_descriptor = - getDescriptor().getMessageTypes().get(33); + getDescriptor().getMessageTypes().get(35); internal_static_datacatalog_DatasetPropertyFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_DatasetPropertyFilter_descriptor, new java.lang.String[] { "Project", "Name", "Domain", "Version", "Property", }); internal_static_datacatalog_PaginationOptions_descriptor = - getDescriptor().getMessageTypes().get(34); + getDescriptor().getMessageTypes().get(36); internal_static_datacatalog_PaginationOptions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_datacatalog_PaginationOptions_descriptor, diff --git a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java index 600b65353..6037e7968 100644 --- a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java +++ b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java @@ -1722,6 +1722,17 @@ public interface ExecutionRelaunchRequestOrBuilder extends */ com.google.protobuf.ByteString getNameBytes(); + + /** + *
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 4; + */ + boolean getOverwriteCache(); } /** *
@@ -1786,6 +1797,11 @@ private ExecutionRelaunchRequest(
               name_ = s;
               break;
             }
+            case 32: {
+
+              overwriteCache_ = input.readBool();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -1900,6 +1916,21 @@ public java.lang.String getName() {
       }
     }
 
+    public static final int OVERWRITE_CACHE_FIELD_NUMBER = 4;
+    private boolean overwriteCache_;
+    /**
+     * 
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 4; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -1920,6 +1951,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (!getNameBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_); } + if (overwriteCache_ != false) { + output.writeBool(4, overwriteCache_); + } unknownFields.writeTo(output); } @@ -1936,6 +1970,10 @@ public int getSerializedSize() { if (!getNameBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_); } + if (overwriteCache_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, overwriteCache_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -1958,6 +1996,8 @@ public boolean equals(final java.lang.Object obj) { } if (!getName() .equals(other.getName())) return false; + if (getOverwriteCache() + != other.getOverwriteCache()) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -1975,6 +2015,9 @@ public int hashCode() { } hash = (37 * hash) + NAME_FIELD_NUMBER; hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + OVERWRITE_CACHE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getOverwriteCache()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -2120,6 +2163,8 @@ public Builder clear() { } name_ = ""; + overwriteCache_ = false; + return this; } @@ -2152,6 +2197,7 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionRelaunchRequest buildPartial( result.id_ = idBuilder_.build(); } result.name_ = name_; + result.overwriteCache_ = overwriteCache_; onBuilt(); return result; } @@ -2207,6 +2253,9 @@ public Builder mergeFrom(flyteidl.admin.ExecutionOuterClass.ExecutionRelaunchReq name_ = other.name_; onChanged(); } + if (other.getOverwriteCache() != false) { + setOverwriteCache(other.getOverwriteCache()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2496,6 +2545,50 @@ public Builder setNameBytes( onChanged(); return this; } + + private boolean overwriteCache_ ; + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 4; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 4; + */ + public Builder setOverwriteCache(boolean value) { + + overwriteCache_ = value; + onChanged(); + return this; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 4; + */ + public Builder clearOverwriteCache() { + + overwriteCache_ = false; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -16899,6 +16992,17 @@ public interface ExecutionSpecOrBuilder extends */ com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder(); + /** + *
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 22; + */ + boolean getOverwriteCache(); + public flyteidl.admin.ExecutionOuterClass.ExecutionSpec.NotificationOverridesCase getNotificationOverridesCase(); } /** @@ -17112,6 +17216,11 @@ private ExecutionSpec( break; } + case 176: { + + overwriteCache_ = input.readBool(); + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -17631,6 +17740,21 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { return getInterruptible(); } + public static final int OVERWRITE_CACHE_FIELD_NUMBER = 22; + private boolean overwriteCache_; + /** + *
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 22; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -17688,6 +17812,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (interruptible_ != null) { output.writeMessage(21, getInterruptible()); } + if (overwriteCache_ != false) { + output.writeBool(22, overwriteCache_); + } unknownFields.writeTo(output); } @@ -17754,6 +17881,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(21, getInterruptible()); } + if (overwriteCache_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(22, overwriteCache_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -17826,6 +17957,8 @@ public boolean equals(final java.lang.Object obj) { if (!getInterruptible() .equals(other.getInterruptible())) return false; } + if (getOverwriteCache() + != other.getOverwriteCache()) return false; if (!getNotificationOverridesCase().equals(other.getNotificationOverridesCase())) return false; switch (notificationOverridesCase_) { case 5: @@ -17896,6 +18029,9 @@ public int hashCode() { hash = (37 * hash) + INTERRUPTIBLE_FIELD_NUMBER; hash = (53 * hash) + getInterruptible().hashCode(); } + hash = (37 * hash) + OVERWRITE_CACHE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getOverwriteCache()); switch (notificationOverridesCase_) { case 5: hash = (37 * hash) + NOTIFICATIONS_FIELD_NUMBER; @@ -18115,6 +18251,8 @@ public Builder clear() { interruptible_ = null; interruptibleBuilder_ = null; } + overwriteCache_ = false; + notificationOverridesCase_ = 0; notificationOverrides_ = null; return this; @@ -18209,6 +18347,7 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionSpec buildPartial() { } else { result.interruptible_ = interruptibleBuilder_.build(); } + result.overwriteCache_ = overwriteCache_; result.notificationOverridesCase_ = notificationOverridesCase_; onBuilt(); return result; @@ -18294,6 +18433,9 @@ public Builder mergeFrom(flyteidl.admin.ExecutionOuterClass.ExecutionSpec other) if (other.hasInterruptible()) { mergeInterruptible(other.getInterruptible()); } + if (other.getOverwriteCache() != false) { + setOverwriteCache(other.getOverwriteCache()); + } switch (other.getNotificationOverridesCase()) { case NOTIFICATIONS: { mergeNotifications(other.getNotifications()); @@ -20345,6 +20487,50 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { } return interruptibleBuilder_; } + + private boolean overwriteCache_ ; + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 22; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 22; + */ + public Builder setOverwriteCache(boolean value) { + + overwriteCache_ = value; + onChanged(); + return this; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 22; + */ + public Builder clearOverwriteCache() { + + overwriteCache_ = false; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -26116,101 +26302,103 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionUpdateResponse getDefaultInst "quest\022\017\n\007project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\014" + "\n\004name\030\003 \001(\t\022+\n\004spec\030\004 \001(\0132\035.flyteidl.ad" + "min.ExecutionSpec\022)\n\006inputs\030\005 \001(\0132\031.flyt" + - "eidl.core.LiteralMap\"`\n\030ExecutionRelaunc" + + "eidl.core.LiteralMap\"\177\n\030ExecutionRelaunc" + "hRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wor" + - "kflowExecutionIdentifier\022\014\n\004name\030\003 \001(\t\"\224" + - "\001\n\027ExecutionRecoverRequest\0226\n\002id\030\001 \001(\0132*" + - ".flyteidl.core.WorkflowExecutionIdentifi" + - "er\022\014\n\004name\030\002 \001(\t\0223\n\010metadata\030\003 \001(\0132!.fly" + - "teidl.admin.ExecutionMetadata\"Q\n\027Executi" + - "onCreateResponse\0226\n\002id\030\001 \001(\0132*.flyteidl." + - "core.WorkflowExecutionIdentifier\"U\n\033Work" + - "flowExecutionGetRequest\0226\n\002id\030\001 \001(\0132*.fl" + - "yteidl.core.WorkflowExecutionIdentifier\"" + - "\243\001\n\tExecution\0226\n\002id\030\001 \001(\0132*.flyteidl.cor" + - "e.WorkflowExecutionIdentifier\022+\n\004spec\030\002 " + - "\001(\0132\035.flyteidl.admin.ExecutionSpec\0221\n\007cl" + - "osure\030\003 \001(\0132 .flyteidl.admin.ExecutionCl" + - "osure\"M\n\rExecutionList\022-\n\nexecutions\030\001 \003" + - "(\0132\031.flyteidl.admin.Execution\022\r\n\005token\030\002" + - " \001(\t\"X\n\016LiteralMapBlob\022/\n\006values\030\001 \001(\0132\031" + - ".flyteidl.core.LiteralMapB\002\030\001H\000\022\r\n\003uri\030\002" + - " \001(\tH\000B\006\n\004data\"1\n\rAbortMetadata\022\r\n\005cause" + - "\030\001 \001(\t\022\021\n\tprincipal\030\002 \001(\t\"\360\005\n\020ExecutionC" + - "losure\0225\n\007outputs\030\001 \001(\0132\036.flyteidl.admin" + - ".LiteralMapBlobB\002\030\001H\000\022.\n\005error\030\002 \001(\0132\035.f" + - "lyteidl.core.ExecutionErrorH\000\022\031\n\013abort_c" + - "ause\030\n \001(\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 \001(\013" + - "2\035.flyteidl.admin.AbortMetadataH\000\0224\n\013out" + - "put_data\030\r \001(\0132\031.flyteidl.core.LiteralMa" + - "pB\002\030\001H\000\0226\n\017computed_inputs\030\003 \001(\0132\031.flyte" + - "idl.core.LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&" + - ".flyteidl.core.WorkflowExecution.Phase\022." + - "\n\nstarted_at\030\005 \001(\0132\032.google.protobuf.Tim" + - "estamp\022+\n\010duration\030\006 \001(\0132\031.google.protob" + - "uf.Duration\022.\n\ncreated_at\030\007 \001(\0132\032.google" + - ".protobuf.Timestamp\022.\n\nupdated_at\030\010 \001(\0132" + - "\032.google.protobuf.Timestamp\0223\n\rnotificat" + - "ions\030\t \003(\0132\034.flyteidl.admin.Notification" + - "\022.\n\013workflow_id\030\013 \001(\0132\031.flyteidl.core.Id" + - "entifier\022I\n\024state_change_details\030\016 \001(\0132+" + - ".flyteidl.admin.ExecutionStateChangeDeta" + - "ilsB\017\n\routput_result\"+\n\016SystemMetadata\022\031" + - "\n\021execution_cluster\030\001 \001(\t\"\332\003\n\021ExecutionM" + - "etadata\022=\n\004mode\030\001 \001(\0162/.flyteidl.admin.E" + - "xecutionMetadata.ExecutionMode\022\021\n\tprinci" + - "pal\030\002 \001(\t\022\017\n\007nesting\030\003 \001(\r\0220\n\014scheduled_" + - "at\030\004 \001(\0132\032.google.protobuf.Timestamp\022E\n\025" + - "parent_node_execution\030\005 \001(\0132&.flyteidl.c" + - "ore.NodeExecutionIdentifier\022G\n\023reference" + - "_execution\030\020 \001(\0132*.flyteidl.core.Workflo" + - "wExecutionIdentifier\0227\n\017system_metadata\030" + - "\021 \001(\0132\036.flyteidl.admin.SystemMetadata\"g\n" + - "\rExecutionMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020" + - "\001\022\n\n\006SYSTEM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WOR" + - "KFLOW\020\004\022\r\n\tRECOVERED\020\005\"G\n\020NotificationLi" + - "st\0223\n\rnotifications\030\001 \003(\0132\034.flyteidl.adm" + - "in.Notification\"\347\005\n\rExecutionSpec\022.\n\013lau" + - "nch_plan\030\001 \001(\0132\031.flyteidl.core.Identifie" + - "r\022-\n\006inputs\030\002 \001(\0132\031.flyteidl.core.Litera" + - "lMapB\002\030\001\0223\n\010metadata\030\003 \001(\0132!.flyteidl.ad" + - "min.ExecutionMetadata\0229\n\rnotifications\030\005" + - " \001(\0132 .flyteidl.admin.NotificationListH\000" + - "\022\025\n\013disable_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132" + - "\026.flyteidl.admin.Labels\0220\n\013annotations\030\010" + - " \001(\0132\033.flyteidl.admin.Annotations\0228\n\020sec" + - "urity_context\030\n \001(\0132\036.flyteidl.core.Secu" + - "rityContext\022/\n\tauth_role\030\020 \001(\0132\030.flyteid" + - "l.admin.AuthRoleB\002\030\001\022;\n\022quality_of_servi" + - "ce\030\021 \001(\0132\037.flyteidl.core.QualityOfServic" + - "e\022\027\n\017max_parallelism\030\022 \001(\005\022C\n\026raw_output" + - "_data_config\030\023 \001(\0132#.flyteidl.admin.RawO" + - "utputDataConfig\022=\n\022cluster_assignment\030\024 " + - "\001(\0132!.flyteidl.admin.ClusterAssignment\0221" + - "\n\rinterruptible\030\025 \001(\0132\032.google.protobuf." + - "BoolValueB\030\n\026notification_overridesJ\004\010\004\020" + - "\005\"b\n\031ExecutionTerminateRequest\0226\n\002id\030\001 \001" + - "(\0132*.flyteidl.core.WorkflowExecutionIden" + - "tifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionTermin" + - "ateResponse\"Y\n\037WorkflowExecutionGetDataR" + + "kflowExecutionIdentifier\022\014\n\004name\030\003 \001(\t\022\027" + + "\n\017overwrite_cache\030\004 \001(\010J\004\010\002\020\003\"\224\001\n\027Execut" + + "ionRecoverRequest\0226\n\002id\030\001 \001(\0132*.flyteidl" + + ".core.WorkflowExecutionIdentifier\022\014\n\004nam" + + "e\030\002 \001(\t\0223\n\010metadata\030\003 \001(\0132!.flyteidl.adm" + + "in.ExecutionMetadata\"Q\n\027ExecutionCreateR" + + "esponse\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Work" + + "flowExecutionIdentifier\"U\n\033WorkflowExecu" + + "tionGetRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.co" + + "re.WorkflowExecutionIdentifier\"\243\001\n\tExecu" + + "tion\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workflo" + + "wExecutionIdentifier\022+\n\004spec\030\002 \001(\0132\035.fly" + + "teidl.admin.ExecutionSpec\0221\n\007closure\030\003 \001" + + "(\0132 .flyteidl.admin.ExecutionClosure\"M\n\r" + + "ExecutionList\022-\n\nexecutions\030\001 \003(\0132\031.flyt" + + "eidl.admin.Execution\022\r\n\005token\030\002 \001(\t\"X\n\016L" + + "iteralMapBlob\022/\n\006values\030\001 \001(\0132\031.flyteidl" + + ".core.LiteralMapB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n" + + "\004data\"1\n\rAbortMetadata\022\r\n\005cause\030\001 \001(\t\022\021\n" + + "\tprincipal\030\002 \001(\t\"\360\005\n\020ExecutionClosure\0225\n" + + "\007outputs\030\001 \001(\0132\036.flyteidl.admin.LiteralM" + + "apBlobB\002\030\001H\000\022.\n\005error\030\002 \001(\0132\035.flyteidl.c" + + "ore.ExecutionErrorH\000\022\031\n\013abort_cause\030\n \001(" + + "\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 \001(\0132\035.flytei" + + "dl.admin.AbortMetadataH\000\0224\n\013output_data\030" + + "\r \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001H\000\0226" + + "\n\017computed_inputs\030\003 \001(\0132\031.flyteidl.core." + + "LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl" + + ".core.WorkflowExecution.Phase\022.\n\nstarted" + + "_at\030\005 \001(\0132\032.google.protobuf.Timestamp\022+\n" + + "\010duration\030\006 \001(\0132\031.google.protobuf.Durati" + + "on\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf" + + ".Timestamp\022.\n\nupdated_at\030\010 \001(\0132\032.google." + + "protobuf.Timestamp\0223\n\rnotifications\030\t \003(" + + "\0132\034.flyteidl.admin.Notification\022.\n\013workf" + + "low_id\030\013 \001(\0132\031.flyteidl.core.Identifier\022" + + "I\n\024state_change_details\030\016 \001(\0132+.flyteidl" + + ".admin.ExecutionStateChangeDetailsB\017\n\rou" + + "tput_result\"+\n\016SystemMetadata\022\031\n\021executi" + + "on_cluster\030\001 \001(\t\"\332\003\n\021ExecutionMetadata\022=" + + "\n\004mode\030\001 \001(\0162/.flyteidl.admin.ExecutionM" + + "etadata.ExecutionMode\022\021\n\tprincipal\030\002 \001(\t" + + "\022\017\n\007nesting\030\003 \001(\r\0220\n\014scheduled_at\030\004 \001(\0132" + + "\032.google.protobuf.Timestamp\022E\n\025parent_no" + + "de_execution\030\005 \001(\0132&.flyteidl.core.NodeE" + + "xecutionIdentifier\022G\n\023reference_executio" + + "n\030\020 \001(\0132*.flyteidl.core.WorkflowExecutio" + + "nIdentifier\0227\n\017system_metadata\030\021 \001(\0132\036.f" + + "lyteidl.admin.SystemMetadata\"g\n\rExecutio" + + "nMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006SYST" + + "EM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_WORKFLOW\020\004\022\r" + + "\n\tRECOVERED\020\005\"G\n\020NotificationList\0223\n\rnot" + + "ifications\030\001 \003(\0132\034.flyteidl.admin.Notifi" + + "cation\"\200\006\n\rExecutionSpec\022.\n\013launch_plan\030" + + "\001 \001(\0132\031.flyteidl.core.Identifier\022-\n\006inpu" + + "ts\030\002 \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001\022" + + "3\n\010metadata\030\003 \001(\0132!.flyteidl.admin.Execu" + + "tionMetadata\0229\n\rnotifications\030\005 \001(\0132 .fl" + + "yteidl.admin.NotificationListH\000\022\025\n\013disab" + + "le_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteid" + + "l.admin.Labels\0220\n\013annotations\030\010 \001(\0132\033.fl" + + "yteidl.admin.Annotations\0228\n\020security_con" + + "text\030\n \001(\0132\036.flyteidl.core.SecurityConte" + + "xt\022/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admin.A" + + "uthRoleB\002\030\001\022;\n\022quality_of_service\030\021 \001(\0132" + + "\037.flyteidl.core.QualityOfService\022\027\n\017max_" + + "parallelism\030\022 \001(\005\022C\n\026raw_output_data_con" + + "fig\030\023 \001(\0132#.flyteidl.admin.RawOutputData" + + "Config\022=\n\022cluster_assignment\030\024 \001(\0132!.fly" + + "teidl.admin.ClusterAssignment\0221\n\rinterru" + + "ptible\030\025 \001(\0132\032.google.protobuf.BoolValue" + + "\022\027\n\017overwrite_cache\030\026 \001(\010B\030\n\026notificatio" + + "n_overridesJ\004\010\004\020\005\"b\n\031ExecutionTerminateR" + "equest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Workf" + - "lowExecutionIdentifier\"\336\001\n WorkflowExecu" + - "tionGetDataResponse\022,\n\007outputs\030\001 \001(\0132\027.f" + - "lyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs\030\002 \001(" + - "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013full_i" + - "nputs\030\003 \001(\0132\031.flyteidl.core.LiteralMap\022/" + - "\n\014full_outputs\030\004 \001(\0132\031.flyteidl.core.Lit" + - "eralMap\"\177\n\026ExecutionUpdateRequest\0226\n\002id\030" + - "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + - "dentifier\022-\n\005state\030\002 \001(\0162\036.flyteidl.admi" + - "n.ExecutionState\"\220\001\n\033ExecutionStateChang" + - "eDetails\022-\n\005state\030\001 \001(\0162\036.flyteidl.admin" + - ".ExecutionState\022/\n\013occurred_at\030\002 \001(\0132\032.g" + - "oogle.protobuf.Timestamp\022\021\n\tprincipal\030\003 " + - "\001(\t\"\031\n\027ExecutionUpdateResponse*>\n\016Execut" + - "ionState\022\024\n\020EXECUTION_ACTIVE\020\000\022\026\n\022EXECUT" + - "ION_ARCHIVED\020\001B7Z5github.com/flyteorg/fl" + - "yteidl/gen/pb-go/flyteidl/adminb\006proto3" + "lowExecutionIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n" + + "\032ExecutionTerminateResponse\"Y\n\037WorkflowE" + + "xecutionGetDataRequest\0226\n\002id\030\001 \001(\0132*.fly" + + "teidl.core.WorkflowExecutionIdentifier\"\336" + + "\001\n WorkflowExecutionGetDataResponse\022,\n\007o" + + "utputs\030\001 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030" + + "\001\022+\n\006inputs\030\002 \001(\0132\027.flyteidl.admin.UrlBl" + + "obB\002\030\001\022.\n\013full_inputs\030\003 \001(\0132\031.flyteidl.c" + + "ore.LiteralMap\022/\n\014full_outputs\030\004 \001(\0132\031.f" + + "lyteidl.core.LiteralMap\"\177\n\026ExecutionUpda" + + "teRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core.Wo" + + "rkflowExecutionIdentifier\022-\n\005state\030\002 \001(\016" + + "2\036.flyteidl.admin.ExecutionState\"\220\001\n\033Exe" + + "cutionStateChangeDetails\022-\n\005state\030\001 \001(\0162" + + "\036.flyteidl.admin.ExecutionState\022/\n\013occur" + + "red_at\030\002 \001(\0132\032.google.protobuf.Timestamp" + + "\022\021\n\tprincipal\030\003 \001(\t\"\031\n\027ExecutionUpdateRe" + + "sponse*>\n\016ExecutionState\022\024\n\020EXECUTION_AC" + + "TIVE\020\000\022\026\n\022EXECUTION_ARCHIVED\020\001B7Z5github" + + ".com/flyteorg/flyteidl/gen/pb-go/flyteid" + + "l/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -26244,7 +26432,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_ExecutionRelaunchRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionRelaunchRequest_descriptor, - new java.lang.String[] { "Id", "Name", }); + new java.lang.String[] { "Id", "Name", "OverwriteCache", }); internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor = getDescriptor().getMessageTypes().get(2); internal_static_flyteidl_admin_ExecutionRecoverRequest_fieldAccessorTable = new @@ -26316,7 +26504,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_ExecutionSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionSpec_descriptor, - new java.lang.String[] { "LaunchPlan", "Inputs", "Metadata", "Notifications", "DisableAll", "Labels", "Annotations", "SecurityContext", "AuthRole", "QualityOfService", "MaxParallelism", "RawOutputDataConfig", "ClusterAssignment", "Interruptible", "NotificationOverrides", }); + new java.lang.String[] { "LaunchPlan", "Inputs", "Metadata", "Notifications", "DisableAll", "Labels", "Annotations", "SecurityContext", "AuthRole", "QualityOfService", "MaxParallelism", "RawOutputDataConfig", "ClusterAssignment", "Interruptible", "OverwriteCache", "NotificationOverrides", }); internal_static_flyteidl_admin_ExecutionTerminateRequest_descriptor = getDescriptor().getMessageTypes().get(14); internal_static_flyteidl_admin_ExecutionTerminateRequest_fieldAccessorTable = new diff --git a/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java b/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java index da61fa7f3..a7e010985 100644 --- a/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java +++ b/gen/pb-java/flyteidl/admin/LaunchPlanOuterClass.java @@ -4740,6 +4740,17 @@ public interface LaunchPlanSpecOrBuilder extends * .google.protobuf.BoolValue interruptible = 19; */ com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder(); + + /** + *
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 20; + */ + boolean getOverwriteCache(); } /** *
@@ -4952,6 +4963,11 @@ private LaunchPlanSpec(
 
               break;
             }
+            case 160: {
+
+              overwriteCache_ = input.readBool();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -5440,6 +5456,21 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() {
       return getInterruptible();
     }
 
+    public static final int OVERWRITE_CACHE_FIELD_NUMBER = 20;
+    private boolean overwriteCache_;
+    /**
+     * 
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 20; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -5496,6 +5527,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (interruptible_ != null) { output.writeMessage(19, getInterruptible()); } + if (overwriteCache_ != false) { + output.writeBool(20, overwriteCache_); + } unknownFields.writeTo(output); } @@ -5560,6 +5594,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(19, getInterruptible()); } + if (overwriteCache_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(20, overwriteCache_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -5639,6 +5677,8 @@ public boolean equals(final java.lang.Object obj) { if (!getInterruptible() .equals(other.getInterruptible())) return false; } + if (getOverwriteCache() + != other.getOverwriteCache()) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -5702,6 +5742,9 @@ public int hashCode() { hash = (37 * hash) + INTERRUPTIBLE_FIELD_NUMBER; hash = (53 * hash) + getInterruptible().hashCode(); } + hash = (37 * hash) + OVERWRITE_CACHE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getOverwriteCache()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -5915,6 +5958,8 @@ public Builder clear() { interruptible_ = null; interruptibleBuilder_ = null; } + overwriteCache_ = false; + return this; } @@ -6003,6 +6048,7 @@ public flyteidl.admin.LaunchPlanOuterClass.LaunchPlanSpec buildPartial() { } else { result.interruptible_ = interruptibleBuilder_.build(); } + result.overwriteCache_ = overwriteCache_; onBuilt(); return result; } @@ -6094,6 +6140,9 @@ public Builder mergeFrom(flyteidl.admin.LaunchPlanOuterClass.LaunchPlanSpec othe if (other.hasInterruptible()) { mergeInterruptible(other.getInterruptible()); } + if (other.getOverwriteCache() != false) { + setOverwriteCache(other.getOverwriteCache()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -8100,6 +8149,50 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { } return interruptibleBuilder_; } + + private boolean overwriteCache_ ; + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 20; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 20; + */ + public Builder setOverwriteCache(boolean value) { + + overwriteCache_ = value; + onChanged(); + return this; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 20; + */ + public Builder clearOverwriteCache() { + + overwriteCache_ = false; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -14229,7 +14322,7 @@ public flyteidl.admin.LaunchPlanOuterClass.ActiveLaunchPlanListRequest getDefaul "0\n\014launch_plans\030\001 \003(\0132\032.flyteidl.admin.L" + "aunchPlan\022\r\n\005token\030\002 \001(\t\"J\n\004Auth\022\032\n\022assu" + "mable_iam_role\030\001 \001(\t\022\"\n\032kubernetes_servi" + - "ce_account\030\002 \001(\t:\002\030\001\"\260\005\n\016LaunchPlanSpec\022" + + "ce_account\030\002 \001(\t:\002\030\001\"\311\005\n\016LaunchPlanSpec\022" + ".\n\013workflow_id\030\001 \001(\0132\031.flyteidl.core.Ide" + "ntifier\022;\n\017entity_metadata\030\002 \001(\0132\".flyte" + "idl.admin.LaunchPlanMetadata\0223\n\016default_" + @@ -14246,29 +14339,29 @@ public flyteidl.admin.LaunchPlanOuterClass.ActiveLaunchPlanListRequest getDefaul "ervice\022C\n\026raw_output_data_config\030\021 \001(\0132#" + ".flyteidl.admin.RawOutputDataConfig\022\027\n\017m" + "ax_parallelism\030\022 \001(\005\0221\n\rinterruptible\030\023 " + - "\001(\0132\032.google.protobuf.BoolValue\"\217\002\n\021Laun" + - "chPlanClosure\022.\n\005state\030\001 \001(\0162\037.flyteidl." + - "admin.LaunchPlanState\0224\n\017expected_inputs" + - "\030\002 \001(\0132\033.flyteidl.core.ParameterMap\0224\n\020e" + - "xpected_outputs\030\003 \001(\0132\032.flyteidl.core.Va" + - "riableMap\022.\n\ncreated_at\030\004 \001(\0132\032.google.p" + - "rotobuf.Timestamp\022.\n\nupdated_at\030\005 \001(\0132\032." + - "google.protobuf.Timestamp\"u\n\022LaunchPlanM" + - "etadata\022*\n\010schedule\030\001 \001(\0132\030.flyteidl.adm" + - "in.Schedule\0223\n\rnotifications\030\002 \003(\0132\034.fly" + - "teidl.admin.Notification\"p\n\027LaunchPlanUp" + - "dateRequest\022%\n\002id\030\001 \001(\0132\031.flyteidl.core." + - "Identifier\022.\n\005state\030\002 \001(\0162\037.flyteidl.adm" + - "in.LaunchPlanState\"\032\n\030LaunchPlanUpdateRe" + - "sponse\"L\n\027ActiveLaunchPlanRequest\0221\n\002id\030" + - "\001 \001(\0132%.flyteidl.admin.NamedEntityIdenti" + - "fier\"\203\001\n\033ActiveLaunchPlanListRequest\022\017\n\007" + - "project\030\001 \001(\t\022\016\n\006domain\030\002 \001(\t\022\r\n\005limit\030\003" + - " \001(\r\022\r\n\005token\030\004 \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.f" + - "lyteidl.admin.Sort*+\n\017LaunchPlanState\022\014\n" + - "\010INACTIVE\020\000\022\n\n\006ACTIVE\020\001B7Z5github.com/fl" + - "yteorg/flyteidl/gen/pb-go/flyteidl/admin" + - "b\006proto3" + "\001(\0132\032.google.protobuf.BoolValue\022\027\n\017overw" + + "rite_cache\030\024 \001(\010\"\217\002\n\021LaunchPlanClosure\022." + + "\n\005state\030\001 \001(\0162\037.flyteidl.admin.LaunchPla" + + "nState\0224\n\017expected_inputs\030\002 \001(\0132\033.flytei" + + "dl.core.ParameterMap\0224\n\020expected_outputs" + + "\030\003 \001(\0132\032.flyteidl.core.VariableMap\022.\n\ncr" + + "eated_at\030\004 \001(\0132\032.google.protobuf.Timesta" + + "mp\022.\n\nupdated_at\030\005 \001(\0132\032.google.protobuf" + + ".Timestamp\"u\n\022LaunchPlanMetadata\022*\n\010sche" + + "dule\030\001 \001(\0132\030.flyteidl.admin.Schedule\0223\n\r" + + "notifications\030\002 \003(\0132\034.flyteidl.admin.Not" + + "ification\"p\n\027LaunchPlanUpdateRequest\022%\n\002" + + "id\030\001 \001(\0132\031.flyteidl.core.Identifier\022.\n\005s" + + "tate\030\002 \001(\0162\037.flyteidl.admin.LaunchPlanSt" + + "ate\"\032\n\030LaunchPlanUpdateResponse\"L\n\027Activ" + + "eLaunchPlanRequest\0221\n\002id\030\001 \001(\0132%.flyteid" + + "l.admin.NamedEntityIdentifier\"\203\001\n\033Active" + + "LaunchPlanListRequest\022\017\n\007project\030\001 \001(\t\022\016" + + "\n\006domain\030\002 \001(\t\022\r\n\005limit\030\003 \001(\r\022\r\n\005token\030\004" + + " \001(\t\022%\n\007sort_by\030\005 \001(\0132\024.flyteidl.admin.S" + + "ort*+\n\017LaunchPlanState\022\014\n\010INACTIVE\020\000\022\n\n\006" + + "ACTIVE\020\001B7Z5github.com/flyteorg/flyteidl" + + "/gen/pb-go/flyteidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -14326,7 +14419,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_LaunchPlanSpec_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_LaunchPlanSpec_descriptor, - new java.lang.String[] { "WorkflowId", "EntityMetadata", "DefaultInputs", "FixedInputs", "Role", "Labels", "Annotations", "Auth", "AuthRole", "SecurityContext", "QualityOfService", "RawOutputDataConfig", "MaxParallelism", "Interruptible", }); + new java.lang.String[] { "WorkflowId", "EntityMetadata", "DefaultInputs", "FixedInputs", "Role", "Labels", "Annotations", "Auth", "AuthRole", "SecurityContext", "QualityOfService", "RawOutputDataConfig", "MaxParallelism", "Interruptible", "OverwriteCache", }); internal_static_flyteidl_admin_LaunchPlanClosure_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_flyteidl_admin_LaunchPlanClosure_fieldAccessorTable = new diff --git a/gen/pb-java/flyteidl/admin/MatchableResourceOuterClass.java b/gen/pb-java/flyteidl/admin/MatchableResourceOuterClass.java index d75ba3b93..1492fbfa8 100644 --- a/gen/pb-java/flyteidl/admin/MatchableResourceOuterClass.java +++ b/gen/pb-java/flyteidl/admin/MatchableResourceOuterClass.java @@ -6251,6 +6251,17 @@ public interface WorkflowExecutionConfigOrBuilder extends * .google.protobuf.BoolValue interruptible = 6; */ com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder(); + + /** + *
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 7; + */ + boolean getOverwriteCache(); } /** *
@@ -6365,6 +6376,11 @@ private WorkflowExecutionConfig(
 
               break;
             }
+            case 56: {
+
+              overwriteCache_ = input.readBool();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -6584,6 +6600,21 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() {
       return getInterruptible();
     }
 
+    public static final int OVERWRITE_CACHE_FIELD_NUMBER = 7;
+    private boolean overwriteCache_;
+    /**
+     * 
+     * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+     * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+     * data once execution finishes successfully.
+     * 
+ * + * bool overwrite_cache = 7; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -6616,6 +6647,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (interruptible_ != null) { output.writeMessage(6, getInterruptible()); } + if (overwriteCache_ != false) { + output.writeBool(7, overwriteCache_); + } unknownFields.writeTo(output); } @@ -6649,6 +6683,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, getInterruptible()); } + if (overwriteCache_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(7, overwriteCache_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -6691,6 +6729,8 @@ public boolean equals(final java.lang.Object obj) { if (!getInterruptible() .equals(other.getInterruptible())) return false; } + if (getOverwriteCache() + != other.getOverwriteCache()) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -6724,6 +6764,9 @@ public int hashCode() { hash = (37 * hash) + INTERRUPTIBLE_FIELD_NUMBER; hash = (53 * hash) + getInterruptible().hashCode(); } + hash = (37 * hash) + OVERWRITE_CACHE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getOverwriteCache()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -6893,6 +6936,8 @@ public Builder clear() { interruptible_ = null; interruptibleBuilder_ = null; } + overwriteCache_ = false; + return this; } @@ -6945,6 +6990,7 @@ public flyteidl.admin.MatchableResourceOuterClass.WorkflowExecutionConfig buildP } else { result.interruptible_ = interruptibleBuilder_.build(); } + result.overwriteCache_ = overwriteCache_; onBuilt(); return result; } @@ -7011,6 +7057,9 @@ public Builder mergeFrom(flyteidl.admin.MatchableResourceOuterClass.WorkflowExec if (other.hasInterruptible()) { mergeInterruptible(other.getInterruptible()); } + if (other.getOverwriteCache() != false) { + setOverwriteCache(other.getOverwriteCache()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -7869,6 +7918,50 @@ public com.google.protobuf.BoolValueOrBuilder getInterruptibleOrBuilder() { } return interruptibleBuilder_; } + + private boolean overwriteCache_ ; + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 7; + */ + public boolean getOverwriteCache() { + return overwriteCache_; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 7; + */ + public Builder setOverwriteCache(boolean value) { + + overwriteCache_ = value; + onChanged(); + return this; + } + /** + *
+       * Allows for all cached values of a workflow and its tasks to be overwritten for a single execution.
+       * If enabled, all calculations are performed even if cached results would be available, overwriting the stored
+       * data once execution finishes successfully.
+       * 
+ * + * bool overwrite_cache = 7; + */ + public Builder clearOverwriteCache() { + + overwriteCache_ = false; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -12755,7 +12848,7 @@ public flyteidl.admin.MatchableResourceOuterClass.ListMatchableAttributesRespons "\"2\n\025MissingPluginBehavior\022\010\n\004FAIL\020\000\022\017\n\013U" + "SE_DEFAULT\020\001\"D\n\017PluginOverrides\0221\n\toverr" + "ides\030\001 \003(\0132\036.flyteidl.admin.PluginOverri" + - "de\"\276\002\n\027WorkflowExecutionConfig\022\027\n\017max_pa" + + "de\"\327\002\n\027WorkflowExecutionConfig\022\027\n\017max_pa" + "rallelism\030\001 \001(\005\0228\n\020security_context\030\002 \001(" + "\0132\036.flyteidl.core.SecurityContext\022C\n\026raw" + "_output_data_config\030\003 \001(\0132#.flyteidl.adm" + @@ -12763,38 +12856,39 @@ public flyteidl.admin.MatchableResourceOuterClass.ListMatchableAttributesRespons ".flyteidl.admin.Labels\0220\n\013annotations\030\005 " + "\001(\0132\033.flyteidl.admin.Annotations\0221\n\rinte" + "rruptible\030\006 \001(\0132\032.google.protobuf.BoolVa" + - "lue\"\341\004\n\022MatchingAttributes\022J\n\030task_resou" + - "rce_attributes\030\001 \001(\0132&.flyteidl.admin.Ta" + - "skResourceAttributesH\000\022P\n\033cluster_resour" + - "ce_attributes\030\002 \001(\0132).flyteidl.admin.Clu" + - "sterResourceAttributesH\000\022N\n\032execution_qu" + - "eue_attributes\030\003 \001(\0132(.flyteidl.admin.Ex" + - "ecutionQueueAttributesH\000\022H\n\027execution_cl" + - "uster_label\030\004 \001(\0132%.flyteidl.admin.Execu" + - "tionClusterLabelH\000\022=\n\022quality_of_service" + - "\030\005 \001(\0132\037.flyteidl.core.QualityOfServiceH" + - "\000\022;\n\020plugin_overrides\030\006 \001(\0132\037.flyteidl.a" + - "dmin.PluginOverridesH\000\022L\n\031workflow_execu" + - "tion_config\030\007 \001(\0132\'.flyteidl.admin.Workf" + - "lowExecutionConfigH\000\022?\n\022cluster_assignme" + - "nt\030\010 \001(\0132!.flyteidl.admin.ClusterAssignm" + - "entH\000B\010\n\006target\"\242\001\n MatchableAttributesC" + - "onfiguration\0226\n\nattributes\030\001 \001(\0132\".flyte" + - "idl.admin.MatchingAttributes\022\016\n\006domain\030\002" + - " \001(\t\022\017\n\007project\030\003 \001(\t\022\020\n\010workflow\030\004 \001(\t\022" + - "\023\n\013launch_plan\030\005 \001(\t\"Z\n\036ListMatchableAtt" + - "ributesRequest\0228\n\rresource_type\030\001 \001(\0162!." + - "flyteidl.admin.MatchableResource\"k\n\037List" + - "MatchableAttributesResponse\022H\n\016configura" + - "tions\030\001 \003(\01320.flyteidl.admin.MatchableAt" + - "tributesConfiguration*\340\001\n\021MatchableResou" + - "rce\022\021\n\rTASK_RESOURCE\020\000\022\024\n\020CLUSTER_RESOUR" + - "CE\020\001\022\023\n\017EXECUTION_QUEUE\020\002\022\033\n\027EXECUTION_C" + - "LUSTER_LABEL\020\003\022$\n QUALITY_OF_SERVICE_SPE" + - "CIFICATION\020\004\022\023\n\017PLUGIN_OVERRIDE\020\005\022\035\n\031WOR" + - "KFLOW_EXECUTION_CONFIG\020\006\022\026\n\022CLUSTER_ASSI" + - "GNMENT\020\007B7Z5github.com/flyteorg/flyteidl" + - "/gen/pb-go/flyteidl/adminb\006proto3" + "lue\022\027\n\017overwrite_cache\030\007 \001(\010\"\341\004\n\022Matchin" + + "gAttributes\022J\n\030task_resource_attributes\030" + + "\001 \001(\0132&.flyteidl.admin.TaskResourceAttri" + + "butesH\000\022P\n\033cluster_resource_attributes\030\002" + + " \001(\0132).flyteidl.admin.ClusterResourceAtt" + + "ributesH\000\022N\n\032execution_queue_attributes\030" + + "\003 \001(\0132(.flyteidl.admin.ExecutionQueueAtt" + + "ributesH\000\022H\n\027execution_cluster_label\030\004 \001" + + "(\0132%.flyteidl.admin.ExecutionClusterLabe" + + "lH\000\022=\n\022quality_of_service\030\005 \001(\0132\037.flytei" + + "dl.core.QualityOfServiceH\000\022;\n\020plugin_ove" + + "rrides\030\006 \001(\0132\037.flyteidl.admin.PluginOver" + + "ridesH\000\022L\n\031workflow_execution_config\030\007 \001" + + "(\0132\'.flyteidl.admin.WorkflowExecutionCon" + + "figH\000\022?\n\022cluster_assignment\030\010 \001(\0132!.flyt" + + "eidl.admin.ClusterAssignmentH\000B\010\n\006target" + + "\"\242\001\n MatchableAttributesConfiguration\0226\n" + + "\nattributes\030\001 \001(\0132\".flyteidl.admin.Match" + + "ingAttributes\022\016\n\006domain\030\002 \001(\t\022\017\n\007project" + + "\030\003 \001(\t\022\020\n\010workflow\030\004 \001(\t\022\023\n\013launch_plan\030" + + "\005 \001(\t\"Z\n\036ListMatchableAttributesRequest\022" + + "8\n\rresource_type\030\001 \001(\0162!.flyteidl.admin." + + "MatchableResource\"k\n\037ListMatchableAttrib" + + "utesResponse\022H\n\016configurations\030\001 \003(\01320.f" + + "lyteidl.admin.MatchableAttributesConfigu" + + "ration*\340\001\n\021MatchableResource\022\021\n\rTASK_RES" + + "OURCE\020\000\022\024\n\020CLUSTER_RESOURCE\020\001\022\023\n\017EXECUTI" + + "ON_QUEUE\020\002\022\033\n\027EXECUTION_CLUSTER_LABEL\020\003\022" + + "$\n QUALITY_OF_SERVICE_SPECIFICATION\020\004\022\023\n" + + "\017PLUGIN_OVERRIDE\020\005\022\035\n\031WORKFLOW_EXECUTION" + + "_CONFIG\020\006\022\026\n\022CLUSTER_ASSIGNMENT\020\007B7Z5git" + + "hub.com/flyteorg/flyteidl/gen/pb-go/flyt" + + "eidl/adminb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -12866,7 +12960,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_flyteidl_admin_WorkflowExecutionConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_WorkflowExecutionConfig_descriptor, - new java.lang.String[] { "MaxParallelism", "SecurityContext", "RawOutputDataConfig", "Labels", "Annotations", "Interruptible", }); + new java.lang.String[] { "MaxParallelism", "SecurityContext", "RawOutputDataConfig", "Labels", "Annotations", "Interruptible", "OverwriteCache", }); internal_static_flyteidl_admin_MatchingAttributes_descriptor = getDescriptor().getMessageTypes().get(8); internal_static_flyteidl_admin_MatchingAttributes_fieldAccessorTable = new diff --git a/gen/pb-java/flyteidl/core/Catalog.java b/gen/pb-java/flyteidl/core/Catalog.java index c38498d9a..103123580 100644 --- a/gen/pb-java/flyteidl/core/Catalog.java +++ b/gen/pb-java/flyteidl/core/Catalog.java @@ -71,6 +71,14 @@ public enum CatalogCacheStatus * CACHE_PUT_FAILURE = 5; */ CACHE_PUT_FAILURE(5), + /** + *
+     * Used to indicate the cache lookup was skipped
+     * 
+ * + * CACHE_SKIPPED = 6; + */ + CACHE_SKIPPED(6), UNRECOGNIZED(-1), ; @@ -122,6 +130,14 @@ public enum CatalogCacheStatus * CACHE_PUT_FAILURE = 5; */ public static final int CACHE_PUT_FAILURE_VALUE = 5; + /** + *
+     * Used to indicate the cache lookup was skipped
+     * 
+ * + * CACHE_SKIPPED = 6; + */ + public static final int CACHE_SKIPPED_VALUE = 6; public final int getNumber() { @@ -148,6 +164,7 @@ public static CatalogCacheStatus forNumber(int value) { case 3: return CACHE_POPULATED; case 4: return CACHE_LOOKUP_FAILURE; case 5: return CACHE_PUT_FAILURE; + case 6: return CACHE_SKIPPED; default: return null; } } @@ -2847,12 +2864,13 @@ public flyteidl.core.Catalog.CatalogReservation getDefaultInstanceForType() { "ogReservation\"\207\001\n\006Status\022\030\n\024RESERVATION_" + "DISABLED\020\000\022\030\n\024RESERVATION_ACQUIRED\020\001\022\026\n\022" + "RESERVATION_EXISTS\020\002\022\030\n\024RESERVATION_RELE" + - "ASED\020\003\022\027\n\023RESERVATION_FAILURE\020\004*\215\001\n\022Cata" + + "ASED\020\003\022\027\n\023RESERVATION_FAILURE\020\004*\240\001\n\022Cata" + "logCacheStatus\022\022\n\016CACHE_DISABLED\020\000\022\016\n\nCA" + "CHE_MISS\020\001\022\r\n\tCACHE_HIT\020\002\022\023\n\017CACHE_POPUL" + "ATED\020\003\022\030\n\024CACHE_LOOKUP_FAILURE\020\004\022\025\n\021CACH" + - "E_PUT_FAILURE\020\005B6Z4github.com/flyteorg/f" + - "lyteidl/gen/pb-go/flyteidl/coreb\006proto3" + "E_PUT_FAILURE\020\005\022\021\n\rCACHE_SKIPPED\020\006B6Z4gi" + + "thub.com/flyteorg/flyteidl/gen/pb-go/fly" + + "teidl/coreb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { diff --git a/gen/pb-js/flyteidl.d.ts b/gen/pb-js/flyteidl.d.ts index 265d2a79e..7abdf8f45 100644 --- a/gen/pb-js/flyteidl.d.ts +++ b/gen/pb-js/flyteidl.d.ts @@ -12,7 +12,8 @@ export namespace flyteidl { CACHE_HIT = 2, CACHE_POPULATED = 3, CACHE_LOOKUP_FAILURE = 4, - CACHE_PUT_FAILURE = 5 + CACHE_PUT_FAILURE = 5, + CACHE_SKIPPED = 6 } /** Properties of a CatalogArtifactTag. */ @@ -9289,6 +9290,9 @@ export namespace flyteidl { /** ExecutionRelaunchRequest name */ name?: (string|null); + + /** ExecutionRelaunchRequest overwriteCache */ + overwriteCache?: (boolean|null); } /** Represents an ExecutionRelaunchRequest. */ @@ -9306,6 +9310,9 @@ export namespace flyteidl { /** ExecutionRelaunchRequest name. */ public name: string; + /** ExecutionRelaunchRequest overwriteCache. */ + public overwriteCache: boolean; + /** * Creates a new ExecutionRelaunchRequest instance using the specified properties. * @param [properties] Properties to set @@ -10130,6 +10137,9 @@ export namespace flyteidl { /** ExecutionSpec interruptible */ interruptible?: (google.protobuf.IBoolValue|null); + + /** ExecutionSpec overwriteCache */ + overwriteCache?: (boolean|null); } /** Represents an ExecutionSpec. */ @@ -10183,6 +10193,9 @@ export namespace flyteidl { /** ExecutionSpec interruptible. */ public interruptible?: (google.protobuf.IBoolValue|null); + /** ExecutionSpec overwriteCache. */ + public overwriteCache: boolean; + /** ExecutionSpec notificationOverrides. */ public notificationOverrides?: ("notifications"|"disableAll"); @@ -10953,6 +10966,9 @@ export namespace flyteidl { /** LaunchPlanSpec interruptible */ interruptible?: (google.protobuf.IBoolValue|null); + + /** LaunchPlanSpec overwriteCache */ + overwriteCache?: (boolean|null); } /** Represents a LaunchPlanSpec. */ @@ -11006,6 +11022,9 @@ export namespace flyteidl { /** LaunchPlanSpec interruptible. */ public interruptible?: (google.protobuf.IBoolValue|null); + /** LaunchPlanSpec overwriteCache. */ + public overwriteCache: boolean; + /** * Creates a new LaunchPlanSpec instance using the specified properties. * @param [properties] Properties to set @@ -12048,6 +12067,9 @@ export namespace flyteidl { /** WorkflowExecutionConfig interruptible */ interruptible?: (google.protobuf.IBoolValue|null); + + /** WorkflowExecutionConfig overwriteCache */ + overwriteCache?: (boolean|null); } /** Represents a WorkflowExecutionConfig. */ @@ -12077,6 +12099,9 @@ export namespace flyteidl { /** WorkflowExecutionConfig interruptible. */ public interruptible?: (google.protobuf.IBoolValue|null); + /** WorkflowExecutionConfig overwriteCache. */ + public overwriteCache: boolean; + /** * Creates a new WorkflowExecutionConfig instance using the specified properties. * @param [properties] Properties to set diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index 6358af5a2..1db5c465b 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -44,6 +44,7 @@ * @property {number} CACHE_POPULATED=3 CACHE_POPULATED value * @property {number} CACHE_LOOKUP_FAILURE=4 CACHE_LOOKUP_FAILURE value * @property {number} CACHE_PUT_FAILURE=5 CACHE_PUT_FAILURE value + * @property {number} CACHE_SKIPPED=6 CACHE_SKIPPED value */ core.CatalogCacheStatus = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -53,6 +54,7 @@ values[valuesById[3] = "CACHE_POPULATED"] = 3; values[valuesById[4] = "CACHE_LOOKUP_FAILURE"] = 4; values[valuesById[5] = "CACHE_PUT_FAILURE"] = 5; + values[valuesById[6] = "CACHE_SKIPPED"] = 6; return values; })(); @@ -16348,6 +16350,7 @@ case 3: case 4: case 5: + case 6: break; } if (message.catalogKey != null && message.hasOwnProperty("catalogKey")) { @@ -17385,6 +17388,7 @@ case 3: case 4: case 5: + case 6: break; } if (message.logs != null && message.hasOwnProperty("logs")) { @@ -22252,6 +22256,7 @@ * @interface IExecutionRelaunchRequest * @property {flyteidl.core.IWorkflowExecutionIdentifier|null} [id] ExecutionRelaunchRequest id * @property {string|null} [name] ExecutionRelaunchRequest name + * @property {boolean|null} [overwriteCache] ExecutionRelaunchRequest overwriteCache */ /** @@ -22285,6 +22290,14 @@ */ ExecutionRelaunchRequest.prototype.name = ""; + /** + * ExecutionRelaunchRequest overwriteCache. + * @member {boolean} overwriteCache + * @memberof flyteidl.admin.ExecutionRelaunchRequest + * @instance + */ + ExecutionRelaunchRequest.prototype.overwriteCache = false; + /** * Creates a new ExecutionRelaunchRequest instance using the specified properties. * @function create @@ -22313,6 +22326,8 @@ $root.flyteidl.core.WorkflowExecutionIdentifier.encode(message.id, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.name != null && message.hasOwnProperty("name")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.overwriteCache); return writer; }; @@ -22340,6 +22355,9 @@ case 3: message.name = reader.string(); break; + case 4: + message.overwriteCache = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -22367,6 +22385,9 @@ if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + if (typeof message.overwriteCache !== "boolean") + return "overwriteCache: boolean expected"; return null; }; @@ -24224,6 +24245,7 @@ * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] ExecutionSpec rawOutputDataConfig * @property {flyteidl.admin.IClusterAssignment|null} [clusterAssignment] ExecutionSpec clusterAssignment * @property {google.protobuf.IBoolValue|null} [interruptible] ExecutionSpec interruptible + * @property {boolean|null} [overwriteCache] ExecutionSpec overwriteCache */ /** @@ -24353,6 +24375,14 @@ */ ExecutionSpec.prototype.interruptible = null; + /** + * ExecutionSpec overwriteCache. + * @member {boolean} overwriteCache + * @memberof flyteidl.admin.ExecutionSpec + * @instance + */ + ExecutionSpec.prototype.overwriteCache = false; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -24419,6 +24449,8 @@ $root.flyteidl.admin.ClusterAssignment.encode(message.clusterAssignment, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); if (message.interruptible != null && message.hasOwnProperty("interruptible")) $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim(); + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + writer.uint32(/* id 22, wireType 0 =*/176).bool(message.overwriteCache); return writer; }; @@ -24482,6 +24514,9 @@ case 21: message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); break; + case 22: + message.overwriteCache = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -24575,6 +24610,9 @@ if (error) return "interruptible." + error; } + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + if (typeof message.overwriteCache !== "boolean") + return "overwriteCache: boolean expected"; return null; }; @@ -26148,6 +26186,7 @@ * @property {flyteidl.admin.IRawOutputDataConfig|null} [rawOutputDataConfig] LaunchPlanSpec rawOutputDataConfig * @property {number|null} [maxParallelism] LaunchPlanSpec maxParallelism * @property {google.protobuf.IBoolValue|null} [interruptible] LaunchPlanSpec interruptible + * @property {boolean|null} [overwriteCache] LaunchPlanSpec overwriteCache */ /** @@ -26277,6 +26316,14 @@ */ LaunchPlanSpec.prototype.interruptible = null; + /** + * LaunchPlanSpec overwriteCache. + * @member {boolean} overwriteCache + * @memberof flyteidl.admin.LaunchPlanSpec + * @instance + */ + LaunchPlanSpec.prototype.overwriteCache = false; + /** * Creates a new LaunchPlanSpec instance using the specified properties. * @function create @@ -26329,6 +26376,8 @@ writer.uint32(/* id 18, wireType 0 =*/144).int32(message.maxParallelism); if (message.interruptible != null && message.hasOwnProperty("interruptible")) $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + writer.uint32(/* id 20, wireType 0 =*/160).bool(message.overwriteCache); return writer; }; @@ -26392,6 +26441,9 @@ case 19: message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); break; + case 20: + message.overwriteCache = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -26477,6 +26529,9 @@ if (error) return "interruptible." + error; } + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + if (typeof message.overwriteCache !== "boolean") + return "overwriteCache: boolean expected"; return null; }; @@ -28788,6 +28843,7 @@ * @property {flyteidl.admin.ILabels|null} [labels] WorkflowExecutionConfig labels * @property {flyteidl.admin.IAnnotations|null} [annotations] WorkflowExecutionConfig annotations * @property {google.protobuf.IBoolValue|null} [interruptible] WorkflowExecutionConfig interruptible + * @property {boolean|null} [overwriteCache] WorkflowExecutionConfig overwriteCache */ /** @@ -28853,6 +28909,14 @@ */ WorkflowExecutionConfig.prototype.interruptible = null; + /** + * WorkflowExecutionConfig overwriteCache. + * @member {boolean} overwriteCache + * @memberof flyteidl.admin.WorkflowExecutionConfig + * @instance + */ + WorkflowExecutionConfig.prototype.overwriteCache = false; + /** * Creates a new WorkflowExecutionConfig instance using the specified properties. * @function create @@ -28889,6 +28953,8 @@ $root.flyteidl.admin.Annotations.encode(message.annotations, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.interruptible != null && message.hasOwnProperty("interruptible")) $root.google.protobuf.BoolValue.encode(message.interruptible, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.overwriteCache); return writer; }; @@ -28928,6 +28994,9 @@ case 6: message.interruptible = $root.google.protobuf.BoolValue.decode(reader, reader.uint32()); break; + case 7: + message.overwriteCache = reader.bool(); + break; default: reader.skipType(tag & 7); break; @@ -28975,6 +29044,9 @@ if (error) return "interruptible." + error; } + if (message.overwriteCache != null && message.hasOwnProperty("overwriteCache")) + if (typeof message.overwriteCache !== "boolean") + return "overwriteCache: boolean expected"; return null; }; @@ -31265,6 +31337,7 @@ case 3: case 4: case 5: + case 6: break; } if (message.catalogKey != null && message.hasOwnProperty("catalogKey")) { diff --git a/gen/pb_python/flyteidl/admin/execution_pb2.py b/gen/pb_python/flyteidl/admin/execution_pb2.py index 574579851..bc1452658 100644 --- a/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/gen/pb_python/flyteidl/admin/execution_pb2.py @@ -30,7 +30,7 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9f\x01\n\x16\x45xecutionCreateRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12)\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"`\n\x18\x45xecutionRelaunchRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x03 \x01(\t\"\x94\x01\n\x17\x45xecutionRecoverRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\"Q\n\x17\x45xecutionCreateResponse\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"U\n\x1bWorkflowExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xa3\x01\n\tExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12+\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12\x31\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosure\"M\n\rExecutionList\x12-\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.Execution\x12\r\n\x05token\x18\x02 \x01(\t\"X\n\x0eLiteralMapBlob\x12/\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\r\n\x03uri\x18\x02 \x01(\tH\x00\x42\x06\n\x04\x64\x61ta\"1\n\rAbortMetadata\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\tprincipal\x18\x02 \x01(\t\"\xf0\x05\n\x10\x45xecutionClosure\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00\x12.\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00\x12\x19\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00\x12\x37\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00\x12\x34\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\x36\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x35\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.Phase\x12.\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.Notification\x12.\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12I\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsB\x0f\n\routput_result\"+\n\x0eSystemMetadata\x12\x19\n\x11\x65xecution_cluster\x18\x01 \x01(\t\"\xda\x03\n\x11\x45xecutionMetadata\x12=\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionMode\x12\x11\n\tprincipal\x18\x02 \x01(\t\x12\x0f\n\x07nesting\x18\x03 \x01(\r\x12\x30\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\x12G\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x37\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadata\"g\n\rExecutionMode\x12\n\n\x06MANUAL\x10\x00\x12\r\n\tSCHEDULED\x10\x01\x12\n\n\x06SYSTEM\x10\x02\x12\x0c\n\x08RELAUNCH\x10\x03\x12\x12\n\x0e\x43HILD_WORKFLOW\x10\x04\x12\r\n\tRECOVERED\x10\x05\"G\n\x10NotificationList\x12\x33\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"\xe7\x05\n\rExecutionSpec\x12.\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12-\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\x12\x39\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00\x12\x15\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00\x12&\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12/\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12;\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x43\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12=\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignment\x12\x31\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"b\n\x19\x45xecutionTerminateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\r\n\x05\x63\x61use\x18\x02 \x01(\t\"\x1c\n\x1a\x45xecutionTerminateResponse\"Y\n\x1fWorkflowExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xde\x01\n WorkflowExecutionGetDataResponse\x12,\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12+\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12.\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12/\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"\x7f\n\x16\x45xecutionUpdateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\"\x90\x01\n\x1b\x45xecutionStateChangeDetails\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\x12/\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tprincipal\x18\x03 \x01(\t\"\x19\n\x17\x45xecutionUpdateResponse*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9f\x01\n\x16\x45xecutionCreateRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12+\n\x04spec\x18\x04 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12)\n\x06inputs\x18\x05 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"\x7f\n\x18\x45xecutionRelaunchRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x17\n\x0foverwrite_cache\x18\x04 \x01(\x08J\x04\x08\x02\x10\x03\"\x94\x01\n\x17\x45xecutionRecoverRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\"Q\n\x17\x45xecutionCreateResponse\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"U\n\x1bWorkflowExecutionGetRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xa3\x01\n\tExecution\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12+\n\x04spec\x18\x02 \x01(\x0b\x32\x1d.flyteidl.admin.ExecutionSpec\x12\x31\n\x07\x63losure\x18\x03 \x01(\x0b\x32 .flyteidl.admin.ExecutionClosure\"M\n\rExecutionList\x12-\n\nexecutions\x18\x01 \x03(\x0b\x32\x19.flyteidl.admin.Execution\x12\r\n\x05token\x18\x02 \x01(\t\"X\n\x0eLiteralMapBlob\x12/\n\x06values\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\r\n\x03uri\x18\x02 \x01(\tH\x00\x42\x06\n\x04\x64\x61ta\"1\n\rAbortMetadata\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\tprincipal\x18\x02 \x01(\t\"\xf0\x05\n\x10\x45xecutionClosure\x12\x35\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobB\x02\x18\x01H\x00\x12.\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1d.flyteidl.core.ExecutionErrorH\x00\x12\x19\n\x0b\x61\x62ort_cause\x18\n \x01(\tB\x02\x18\x01H\x00\x12\x37\n\x0e\x61\x62ort_metadata\x18\x0c \x01(\x0b\x32\x1d.flyteidl.admin.AbortMetadataH\x00\x12\x34\n\x0boutput_data\x18\r \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01H\x00\x12\x36\n\x0f\x63omputed_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x35\n\x05phase\x18\x04 \x01(\x0e\x32&.flyteidl.core.WorkflowExecution.Phase\x12.\n\nstarted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x33\n\rnotifications\x18\t \x03(\x0b\x32\x1c.flyteidl.admin.Notification\x12.\n\x0bworkflow_id\x18\x0b \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12I\n\x14state_change_details\x18\x0e \x01(\x0b\x32+.flyteidl.admin.ExecutionStateChangeDetailsB\x0f\n\routput_result\"+\n\x0eSystemMetadata\x12\x19\n\x11\x65xecution_cluster\x18\x01 \x01(\t\"\xda\x03\n\x11\x45xecutionMetadata\x12=\n\x04mode\x18\x01 \x01(\x0e\x32/.flyteidl.admin.ExecutionMetadata.ExecutionMode\x12\x11\n\tprincipal\x18\x02 \x01(\t\x12\x0f\n\x07nesting\x18\x03 \x01(\r\x12\x30\n\x0cscheduled_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n\x15parent_node_execution\x18\x05 \x01(\x0b\x32&.flyteidl.core.NodeExecutionIdentifier\x12G\n\x13reference_execution\x18\x10 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\x37\n\x0fsystem_metadata\x18\x11 \x01(\x0b\x32\x1e.flyteidl.admin.SystemMetadata\"g\n\rExecutionMode\x12\n\n\x06MANUAL\x10\x00\x12\r\n\tSCHEDULED\x10\x01\x12\n\n\x06SYSTEM\x10\x02\x12\x0c\n\x08RELAUNCH\x10\x03\x12\x12\n\x0e\x43HILD_WORKFLOW\x10\x04\x12\r\n\tRECOVERED\x10\x05\"G\n\x10NotificationList\x12\x33\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"\x80\x06\n\rExecutionSpec\x12.\n\x0blaunch_plan\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12-\n\x06inputs\x18\x02 \x01(\x0b\x32\x19.flyteidl.core.LiteralMapB\x02\x18\x01\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32!.flyteidl.admin.ExecutionMetadata\x12\x39\n\rnotifications\x18\x05 \x01(\x0b\x32 .flyteidl.admin.NotificationListH\x00\x12\x15\n\x0b\x64isable_all\x18\x06 \x01(\x08H\x00\x12&\n\x06labels\x18\x07 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x08 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12/\n\tauth_role\x18\x10 \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12;\n\x12quality_of_service\x18\x11 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x43\n\x16raw_output_data_config\x18\x13 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12=\n\x12\x63luster_assignment\x18\x14 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignment\x12\x31\n\rinterruptible\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x17\n\x0foverwrite_cache\x18\x16 \x01(\x08\x42\x18\n\x16notification_overridesJ\x04\x08\x04\x10\x05\"b\n\x19\x45xecutionTerminateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12\r\n\x05\x63\x61use\x18\x02 \x01(\t\"\x1c\n\x1a\x45xecutionTerminateResponse\"Y\n\x1fWorkflowExecutionGetDataRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\"\xde\x01\n WorkflowExecutionGetDataResponse\x12,\n\x07outputs\x18\x01 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12+\n\x06inputs\x18\x02 \x01(\x0b\x32\x17.flyteidl.admin.UrlBlobB\x02\x18\x01\x12.\n\x0b\x66ull_inputs\x18\x03 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12/\n\x0c\x66ull_outputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\"\x7f\n\x16\x45xecutionUpdateRequest\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32*.flyteidl.core.WorkflowExecutionIdentifier\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\"\x90\x01\n\x1b\x45xecutionStateChangeDetails\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x1e.flyteidl.admin.ExecutionState\x12/\n\x0boccurred_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tprincipal\x18\x03 \x01(\t\"\x19\n\x17\x45xecutionUpdateResponse*>\n\x0e\x45xecutionState\x12\x14\n\x10\x45XECUTION_ACTIVE\x10\x00\x12\x16\n\x12\x45XECUTION_ARCHIVED\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[flyteidl_dot_admin_dot_cluster__assignment__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_security__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) @@ -51,8 +51,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=4152, - serialized_end=4214, + serialized_start=4208, + serialized_end=4270, ) _sym_db.RegisterEnumDescriptor(_EXECUTIONSTATE) @@ -94,8 +94,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2479, - serialized_end=2582, + serialized_start=2510, + serialized_end=2613, ) _sym_db.RegisterEnumDescriptor(_EXECUTIONMETADATA_EXECUTIONMODE) @@ -180,6 +180,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='overwrite_cache', full_name='flyteidl.admin.ExecutionRelaunchRequest.overwrite_cache', index=2, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -193,7 +200,7 @@ oneofs=[ ], serialized_start=502, - serialized_end=598, + serialized_end=629, ) @@ -237,8 +244,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=601, - serialized_end=749, + serialized_start=632, + serialized_end=780, ) @@ -268,8 +275,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=751, - serialized_end=832, + serialized_start=782, + serialized_end=863, ) @@ -299,8 +306,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=834, - serialized_end=919, + serialized_start=865, + serialized_end=950, ) @@ -344,8 +351,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=922, - serialized_end=1085, + serialized_start=953, + serialized_end=1116, ) @@ -382,8 +389,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1087, - serialized_end=1164, + serialized_start=1118, + serialized_end=1195, ) @@ -423,8 +430,8 @@ name='data', full_name='flyteidl.admin.LiteralMapBlob.data', index=0, containing_type=None, fields=[]), ], - serialized_start=1166, - serialized_end=1254, + serialized_start=1197, + serialized_end=1285, ) @@ -461,8 +468,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1256, - serialized_end=1305, + serialized_start=1287, + serialized_end=1336, ) @@ -586,8 +593,8 @@ name='output_result', full_name='flyteidl.admin.ExecutionClosure.output_result', index=0, containing_type=None, fields=[]), ], - serialized_start=1308, - serialized_end=2060, + serialized_start=1339, + serialized_end=2091, ) @@ -617,8 +624,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2062, - serialized_end=2105, + serialized_start=2093, + serialized_end=2136, ) @@ -691,8 +698,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2108, - serialized_end=2582, + serialized_start=2139, + serialized_end=2613, ) @@ -722,8 +729,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2584, - serialized_end=2655, + serialized_start=2615, + serialized_end=2686, ) @@ -832,6 +839,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='overwrite_cache', full_name='flyteidl.admin.ExecutionSpec.overwrite_cache', index=14, + number=22, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -847,8 +861,8 @@ name='notification_overrides', full_name='flyteidl.admin.ExecutionSpec.notification_overrides', index=0, containing_type=None, fields=[]), ], - serialized_start=2658, - serialized_end=3401, + serialized_start=2689, + serialized_end=3457, ) @@ -885,8 +899,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3403, - serialized_end=3501, + serialized_start=3459, + serialized_end=3557, ) @@ -909,8 +923,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3503, - serialized_end=3531, + serialized_start=3559, + serialized_end=3587, ) @@ -940,8 +954,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3533, - serialized_end=3622, + serialized_start=3589, + serialized_end=3678, ) @@ -992,8 +1006,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3625, - serialized_end=3847, + serialized_start=3681, + serialized_end=3903, ) @@ -1030,8 +1044,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3849, - serialized_end=3976, + serialized_start=3905, + serialized_end=4032, ) @@ -1075,8 +1089,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3979, - serialized_end=4123, + serialized_start=4035, + serialized_end=4179, ) @@ -1099,8 +1113,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4125, - serialized_end=4150, + serialized_start=4181, + serialized_end=4206, ) _EXECUTIONCREATEREQUEST.fields_by_name['spec'].message_type = _EXECUTIONSPEC diff --git a/gen/pb_python/flyteidl/admin/launch_plan_pb2.py b/gen/pb_python/flyteidl/admin/launch_plan_pb2.py index 62b081e0f..bf4de8eee 100644 --- a/gen/pb_python/flyteidl/admin/launch_plan_pb2.py +++ b/gen/pb_python/flyteidl/admin/launch_plan_pb2.py @@ -30,7 +30,7 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n flyteidl/admin/launch_plan.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1d\x66lyteidl/admin/schedule.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"n\n\x17LaunchPlanCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\"\x1a\n\x18LaunchPlanCreateResponse\"\x95\x01\n\nLaunchPlan\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\x12\x32\n\x07\x63losure\x18\x03 \x01(\x0b\x32!.flyteidl.admin.LaunchPlanClosure\"Q\n\x0eLaunchPlanList\x12\x30\n\x0claunch_plans\x18\x01 \x03(\x0b\x32\x1a.flyteidl.admin.LaunchPlan\x12\r\n\x05token\x18\x02 \x01(\t\"J\n\x04\x41uth\x12\x1a\n\x12\x61ssumable_iam_role\x18\x01 \x01(\t\x12\"\n\x1akubernetes_service_account\x18\x02 \x01(\t:\x02\x18\x01\"\xb0\x05\n\x0eLaunchPlanSpec\x12.\n\x0bworkflow_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12;\n\x0f\x65ntity_metadata\x18\x02 \x01(\x0b\x32\".flyteidl.admin.LaunchPlanMetadata\x12\x33\n\x0e\x64\x65\x66\x61ult_inputs\x18\x03 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12/\n\x0c\x66ixed_inputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12\x10\n\x04role\x18\x05 \x01(\tB\x02\x18\x01\x12&\n\x06labels\x18\x06 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x07 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12&\n\x04\x61uth\x18\x08 \x01(\x0b\x32\x14.flyteidl.admin.AuthB\x02\x18\x01\x12/\n\tauth_role\x18\t \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12;\n\x12quality_of_service\x18\x10 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x43\n\x16raw_output_data_config\x18\x11 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x31\n\rinterruptible\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x8f\x02\n\x11LaunchPlanClosure\x12.\n\x05state\x18\x01 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\x12\x34\n\x0f\x65xpected_inputs\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12\x34\n\x10\x65xpected_outputs\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.VariableMap\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"u\n\x12LaunchPlanMetadata\x12*\n\x08schedule\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.Schedule\x12\x33\n\rnotifications\x18\x02 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"p\n\x17LaunchPlanUpdateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\"\x1a\n\x18LaunchPlanUpdateResponse\"L\n\x17\x41\x63tiveLaunchPlanRequest\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifier\"\x83\x01\n\x1b\x41\x63tiveLaunchPlanListRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\r\n\x05limit\x18\x03 \x01(\r\x12\r\n\x05token\x18\x04 \x01(\t\x12%\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.Sort*+\n\x0fLaunchPlanState\x12\x0c\n\x08INACTIVE\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n flyteidl/admin/launch_plan.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1d\x66lyteidl/core/interface.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1d\x66lyteidl/admin/schedule.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\"n\n\x17LaunchPlanCreateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\"\x1a\n\x18LaunchPlanCreateResponse\"\x95\x01\n\nLaunchPlan\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12,\n\x04spec\x18\x02 \x01(\x0b\x32\x1e.flyteidl.admin.LaunchPlanSpec\x12\x32\n\x07\x63losure\x18\x03 \x01(\x0b\x32!.flyteidl.admin.LaunchPlanClosure\"Q\n\x0eLaunchPlanList\x12\x30\n\x0claunch_plans\x18\x01 \x03(\x0b\x32\x1a.flyteidl.admin.LaunchPlan\x12\r\n\x05token\x18\x02 \x01(\t\"J\n\x04\x41uth\x12\x1a\n\x12\x61ssumable_iam_role\x18\x01 \x01(\t\x12\"\n\x1akubernetes_service_account\x18\x02 \x01(\t:\x02\x18\x01\"\xc9\x05\n\x0eLaunchPlanSpec\x12.\n\x0bworkflow_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12;\n\x0f\x65ntity_metadata\x18\x02 \x01(\x0b\x32\".flyteidl.admin.LaunchPlanMetadata\x12\x33\n\x0e\x64\x65\x66\x61ult_inputs\x18\x03 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12/\n\x0c\x66ixed_inputs\x18\x04 \x01(\x0b\x32\x19.flyteidl.core.LiteralMap\x12\x10\n\x04role\x18\x05 \x01(\tB\x02\x18\x01\x12&\n\x06labels\x18\x06 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x07 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12&\n\x04\x61uth\x18\x08 \x01(\x0b\x32\x14.flyteidl.admin.AuthB\x02\x18\x01\x12/\n\tauth_role\x18\t \x01(\x0b\x32\x18.flyteidl.admin.AuthRoleB\x02\x18\x01\x12\x38\n\x10security_context\x18\n \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12;\n\x12quality_of_service\x18\x10 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfService\x12\x43\n\x16raw_output_data_config\x18\x11 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12\x17\n\x0fmax_parallelism\x18\x12 \x01(\x05\x12\x31\n\rinterruptible\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x17\n\x0foverwrite_cache\x18\x14 \x01(\x08\"\x8f\x02\n\x11LaunchPlanClosure\x12.\n\x05state\x18\x01 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\x12\x34\n\x0f\x65xpected_inputs\x18\x02 \x01(\x0b\x32\x1b.flyteidl.core.ParameterMap\x12\x34\n\x10\x65xpected_outputs\x18\x03 \x01(\x0b\x32\x1a.flyteidl.core.VariableMap\x12.\n\ncreated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"u\n\x12LaunchPlanMetadata\x12*\n\x08schedule\x18\x01 \x01(\x0b\x32\x18.flyteidl.admin.Schedule\x12\x33\n\rnotifications\x18\x02 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"p\n\x17LaunchPlanUpdateRequest\x12%\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12.\n\x05state\x18\x02 \x01(\x0e\x32\x1f.flyteidl.admin.LaunchPlanState\"\x1a\n\x18LaunchPlanUpdateResponse\"L\n\x17\x41\x63tiveLaunchPlanRequest\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifier\"\x83\x01\n\x1b\x41\x63tiveLaunchPlanListRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\r\n\x05limit\x18\x03 \x01(\r\x12\r\n\x05token\x18\x04 \x01(\t\x12%\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.Sort*+\n\x0fLaunchPlanState\x12\x0c\n\x08INACTIVE\x10\x00\x12\n\n\x06\x41\x43TIVE\x10\x01\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,flyteidl_dot_core_dot_interface__pb2.DESCRIPTOR,flyteidl_dot_core_dot_security__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_schedule__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) @@ -51,8 +51,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2220, - serialized_end=2263, + serialized_start=2245, + serialized_end=2288, ) _sym_db.RegisterEnumDescriptor(_LAUNCHPLANSTATE) @@ -350,6 +350,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='overwrite_cache', full_name='flyteidl.admin.LaunchPlanSpec.overwrite_cache', index=14, + number=20, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -363,7 +370,7 @@ oneofs=[ ], serialized_start=783, - serialized_end=1471, + serialized_end=1496, ) @@ -421,8 +428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1474, - serialized_end=1745, + serialized_start=1499, + serialized_end=1770, ) @@ -459,8 +466,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1747, - serialized_end=1864, + serialized_start=1772, + serialized_end=1889, ) @@ -497,8 +504,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1866, - serialized_end=1978, + serialized_start=1891, + serialized_end=2003, ) @@ -521,8 +528,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1980, - serialized_end=2006, + serialized_start=2005, + serialized_end=2031, ) @@ -552,8 +559,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2008, - serialized_end=2084, + serialized_start=2033, + serialized_end=2109, ) @@ -611,8 +618,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2087, - serialized_end=2218, + serialized_start=2112, + serialized_end=2243, ) _LAUNCHPLANCREATEREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._IDENTIFIER diff --git a/gen/pb_python/flyteidl/admin/matchable_resource_pb2.py b/gen/pb_python/flyteidl/admin/matchable_resource_pb2.py index ca18c27d2..5c1430df9 100644 --- a/gen/pb_python/flyteidl/admin/matchable_resource_pb2.py +++ b/gen/pb_python/flyteidl/admin/matchable_resource_pb2.py @@ -26,7 +26,7 @@ package='flyteidl.admin', syntax='proto3', serialized_options=_b('Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/admin'), - serialized_pb=_b('\n\'flyteidl/admin/matchable_resource.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/wrappers.proto\"h\n\x10TaskResourceSpec\x12\x0b\n\x03\x63pu\x18\x01 \x01(\t\x12\x0b\n\x03gpu\x18\x02 \x01(\t\x12\x0e\n\x06memory\x18\x03 \x01(\t\x12\x0f\n\x07storage\x18\x04 \x01(\t\x12\x19\n\x11\x65phemeral_storage\x18\x05 \x01(\t\"~\n\x16TaskResourceAttributes\x12\x32\n\x08\x64\x65\x66\x61ults\x18\x01 \x01(\x0b\x32 .flyteidl.admin.TaskResourceSpec\x12\x30\n\x06limits\x18\x02 \x01(\x0b\x32 .flyteidl.admin.TaskResourceSpec\"\x9d\x01\n\x19\x43lusterResourceAttributes\x12M\n\nattributes\x18\x01 \x03(\x0b\x32\x39.flyteidl.admin.ClusterResourceAttributes.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x18\x45xecutionQueueAttributes\x12\x0c\n\x04tags\x18\x01 \x03(\t\"&\n\x15\x45xecutionClusterLabel\x12\r\n\x05value\x18\x01 \x01(\t\"\xc1\x01\n\x0ePluginOverride\x12\x11\n\ttask_type\x18\x01 \x01(\t\x12\x11\n\tplugin_id\x18\x02 \x03(\t\x12U\n\x17missing_plugin_behavior\x18\x04 \x01(\x0e\x32\x34.flyteidl.admin.PluginOverride.MissingPluginBehavior\"2\n\x15MissingPluginBehavior\x12\x08\n\x04\x46\x41IL\x10\x00\x12\x0f\n\x0bUSE_DEFAULT\x10\x01\"D\n\x0fPluginOverrides\x12\x31\n\toverrides\x18\x01 \x03(\x0b\x32\x1e.flyteidl.admin.PluginOverride\"\xbe\x02\n\x17WorkflowExecutionConfig\x12\x17\n\x0fmax_parallelism\x18\x01 \x01(\x05\x12\x38\n\x10security_context\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12\x43\n\x16raw_output_data_config\x18\x03 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12&\n\x06labels\x18\x04 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x05 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12\x31\n\rinterruptible\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\xe1\x04\n\x12MatchingAttributes\x12J\n\x18task_resource_attributes\x18\x01 \x01(\x0b\x32&.flyteidl.admin.TaskResourceAttributesH\x00\x12P\n\x1b\x63luster_resource_attributes\x18\x02 \x01(\x0b\x32).flyteidl.admin.ClusterResourceAttributesH\x00\x12N\n\x1a\x65xecution_queue_attributes\x18\x03 \x01(\x0b\x32(.flyteidl.admin.ExecutionQueueAttributesH\x00\x12H\n\x17\x65xecution_cluster_label\x18\x04 \x01(\x0b\x32%.flyteidl.admin.ExecutionClusterLabelH\x00\x12=\n\x12quality_of_service\x18\x05 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceH\x00\x12;\n\x10plugin_overrides\x18\x06 \x01(\x0b\x32\x1f.flyteidl.admin.PluginOverridesH\x00\x12L\n\x19workflow_execution_config\x18\x07 \x01(\x0b\x32\'.flyteidl.admin.WorkflowExecutionConfigH\x00\x12?\n\x12\x63luster_assignment\x18\x08 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignmentH\x00\x42\x08\n\x06target\"\xa2\x01\n MatchableAttributesConfiguration\x12\x36\n\nattributes\x18\x01 \x01(\x0b\x32\".flyteidl.admin.MatchingAttributes\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x0f\n\x07project\x18\x03 \x01(\t\x12\x10\n\x08workflow\x18\x04 \x01(\t\x12\x13\n\x0blaunch_plan\x18\x05 \x01(\t\"Z\n\x1eListMatchableAttributesRequest\x12\x38\n\rresource_type\x18\x01 \x01(\x0e\x32!.flyteidl.admin.MatchableResource\"k\n\x1fListMatchableAttributesResponse\x12H\n\x0e\x63onfigurations\x18\x01 \x03(\x0b\x32\x30.flyteidl.admin.MatchableAttributesConfiguration*\xe0\x01\n\x11MatchableResource\x12\x11\n\rTASK_RESOURCE\x10\x00\x12\x14\n\x10\x43LUSTER_RESOURCE\x10\x01\x12\x13\n\x0f\x45XECUTION_QUEUE\x10\x02\x12\x1b\n\x17\x45XECUTION_CLUSTER_LABEL\x10\x03\x12$\n QUALITY_OF_SERVICE_SPECIFICATION\x10\x04\x12\x13\n\x0fPLUGIN_OVERRIDE\x10\x05\x12\x1d\n\x19WORKFLOW_EXECUTION_CONFIG\x10\x06\x12\x16\n\x12\x43LUSTER_ASSIGNMENT\x10\x07\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\'flyteidl/admin/matchable_resource.proto\x12\x0e\x66lyteidl.admin\x1a\x1b\x66lyteidl/admin/common.proto\x1a\'flyteidl/admin/cluster_assignment.proto\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1c\x66lyteidl/core/security.proto\x1a\x1egoogle/protobuf/wrappers.proto\"h\n\x10TaskResourceSpec\x12\x0b\n\x03\x63pu\x18\x01 \x01(\t\x12\x0b\n\x03gpu\x18\x02 \x01(\t\x12\x0e\n\x06memory\x18\x03 \x01(\t\x12\x0f\n\x07storage\x18\x04 \x01(\t\x12\x19\n\x11\x65phemeral_storage\x18\x05 \x01(\t\"~\n\x16TaskResourceAttributes\x12\x32\n\x08\x64\x65\x66\x61ults\x18\x01 \x01(\x0b\x32 .flyteidl.admin.TaskResourceSpec\x12\x30\n\x06limits\x18\x02 \x01(\x0b\x32 .flyteidl.admin.TaskResourceSpec\"\x9d\x01\n\x19\x43lusterResourceAttributes\x12M\n\nattributes\x18\x01 \x03(\x0b\x32\x39.flyteidl.admin.ClusterResourceAttributes.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x18\x45xecutionQueueAttributes\x12\x0c\n\x04tags\x18\x01 \x03(\t\"&\n\x15\x45xecutionClusterLabel\x12\r\n\x05value\x18\x01 \x01(\t\"\xc1\x01\n\x0ePluginOverride\x12\x11\n\ttask_type\x18\x01 \x01(\t\x12\x11\n\tplugin_id\x18\x02 \x03(\t\x12U\n\x17missing_plugin_behavior\x18\x04 \x01(\x0e\x32\x34.flyteidl.admin.PluginOverride.MissingPluginBehavior\"2\n\x15MissingPluginBehavior\x12\x08\n\x04\x46\x41IL\x10\x00\x12\x0f\n\x0bUSE_DEFAULT\x10\x01\"D\n\x0fPluginOverrides\x12\x31\n\toverrides\x18\x01 \x03(\x0b\x32\x1e.flyteidl.admin.PluginOverride\"\xd7\x02\n\x17WorkflowExecutionConfig\x12\x17\n\x0fmax_parallelism\x18\x01 \x01(\x05\x12\x38\n\x10security_context\x18\x02 \x01(\x0b\x32\x1e.flyteidl.core.SecurityContext\x12\x43\n\x16raw_output_data_config\x18\x03 \x01(\x0b\x32#.flyteidl.admin.RawOutputDataConfig\x12&\n\x06labels\x18\x04 \x01(\x0b\x32\x16.flyteidl.admin.Labels\x12\x30\n\x0b\x61nnotations\x18\x05 \x01(\x0b\x32\x1b.flyteidl.admin.Annotations\x12\x31\n\rinterruptible\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x17\n\x0foverwrite_cache\x18\x07 \x01(\x08\"\xe1\x04\n\x12MatchingAttributes\x12J\n\x18task_resource_attributes\x18\x01 \x01(\x0b\x32&.flyteidl.admin.TaskResourceAttributesH\x00\x12P\n\x1b\x63luster_resource_attributes\x18\x02 \x01(\x0b\x32).flyteidl.admin.ClusterResourceAttributesH\x00\x12N\n\x1a\x65xecution_queue_attributes\x18\x03 \x01(\x0b\x32(.flyteidl.admin.ExecutionQueueAttributesH\x00\x12H\n\x17\x65xecution_cluster_label\x18\x04 \x01(\x0b\x32%.flyteidl.admin.ExecutionClusterLabelH\x00\x12=\n\x12quality_of_service\x18\x05 \x01(\x0b\x32\x1f.flyteidl.core.QualityOfServiceH\x00\x12;\n\x10plugin_overrides\x18\x06 \x01(\x0b\x32\x1f.flyteidl.admin.PluginOverridesH\x00\x12L\n\x19workflow_execution_config\x18\x07 \x01(\x0b\x32\'.flyteidl.admin.WorkflowExecutionConfigH\x00\x12?\n\x12\x63luster_assignment\x18\x08 \x01(\x0b\x32!.flyteidl.admin.ClusterAssignmentH\x00\x42\x08\n\x06target\"\xa2\x01\n MatchableAttributesConfiguration\x12\x36\n\nattributes\x18\x01 \x01(\x0b\x32\".flyteidl.admin.MatchingAttributes\x12\x0e\n\x06\x64omain\x18\x02 \x01(\t\x12\x0f\n\x07project\x18\x03 \x01(\t\x12\x10\n\x08workflow\x18\x04 \x01(\t\x12\x13\n\x0blaunch_plan\x18\x05 \x01(\t\"Z\n\x1eListMatchableAttributesRequest\x12\x38\n\rresource_type\x18\x01 \x01(\x0e\x32!.flyteidl.admin.MatchableResource\"k\n\x1fListMatchableAttributesResponse\x12H\n\x0e\x63onfigurations\x18\x01 \x03(\x0b\x32\x30.flyteidl.admin.MatchableAttributesConfiguration*\xe0\x01\n\x11MatchableResource\x12\x11\n\rTASK_RESOURCE\x10\x00\x12\x14\n\x10\x43LUSTER_RESOURCE\x10\x01\x12\x13\n\x0f\x45XECUTION_QUEUE\x10\x02\x12\x1b\n\x17\x45XECUTION_CLUSTER_LABEL\x10\x03\x12$\n QUALITY_OF_SERVICE_SPECIFICATION\x10\x04\x12\x13\n\x0fPLUGIN_OVERRIDE\x10\x05\x12\x1d\n\x19WORKFLOW_EXECUTION_CONFIG\x10\x06\x12\x16\n\x12\x43LUSTER_ASSIGNMENT\x10\x07\x42\x37Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[flyteidl_dot_admin_dot_common__pb2.DESCRIPTOR,flyteidl_dot_admin_dot_cluster__assignment__pb2.DESCRIPTOR,flyteidl_dot_core_dot_execution__pb2.DESCRIPTOR,flyteidl_dot_core_dot_security__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,]) @@ -71,8 +71,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2264, - serialized_end=2488, + serialized_start=2289, + serialized_end=2513, ) _sym_db.RegisterEnumDescriptor(_MATCHABLERESOURCE) @@ -463,6 +463,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='overwrite_cache', full_name='flyteidl.admin.WorkflowExecutionConfig.overwrite_cache', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -476,7 +483,7 @@ oneofs=[ ], serialized_start=965, - serialized_end=1283, + serialized_end=1308, ) @@ -558,8 +565,8 @@ name='target', full_name='flyteidl.admin.MatchingAttributes.target', index=0, containing_type=None, fields=[]), ], - serialized_start=1286, - serialized_end=1895, + serialized_start=1311, + serialized_end=1920, ) @@ -617,8 +624,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1898, - serialized_end=2060, + serialized_start=1923, + serialized_end=2085, ) @@ -648,8 +655,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2062, - serialized_end=2152, + serialized_start=2087, + serialized_end=2177, ) @@ -679,8 +686,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2154, - serialized_end=2261, + serialized_start=2179, + serialized_end=2286, ) _TASKRESOURCEATTRIBUTES.fields_by_name['defaults'].message_type = _TASKRESOURCESPEC diff --git a/gen/pb_python/flyteidl/core/catalog_pb2.py b/gen/pb_python/flyteidl/core/catalog_pb2.py index 8df9f319a..2d52bd91c 100644 --- a/gen/pb_python/flyteidl/core/catalog_pb2.py +++ b/gen/pb_python/flyteidl/core/catalog_pb2.py @@ -22,7 +22,7 @@ package='flyteidl.core', syntax='proto3', serialized_options=_b('Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core'), - serialized_pb=_b('\n\x1b\x66lyteidl/core/catalog.proto\x12\rflyteidl.core\x1a\x1e\x66lyteidl/core/identifier.proto\"7\n\x12\x43\x61talogArtifactTag\x12\x13\n\x0b\x61rtifact_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xd6\x01\n\x0f\x43\x61talogMetadata\x12-\n\ndataset_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x37\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32!.flyteidl.core.CatalogArtifactTag\x12G\n\x15source_task_execution\x18\x03 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierH\x00\x42\x12\n\x10source_execution\"\x9e\x01\n\x12\x43\x61talogReservation\"\x87\x01\n\x06Status\x12\x18\n\x14RESERVATION_DISABLED\x10\x00\x12\x18\n\x14RESERVATION_ACQUIRED\x10\x01\x12\x16\n\x12RESERVATION_EXISTS\x10\x02\x12\x18\n\x14RESERVATION_RELEASED\x10\x03\x12\x17\n\x13RESERVATION_FAILURE\x10\x04*\x8d\x01\n\x12\x43\x61talogCacheStatus\x12\x12\n\x0e\x43\x41\x43HE_DISABLED\x10\x00\x12\x0e\n\nCACHE_MISS\x10\x01\x12\r\n\tCACHE_HIT\x10\x02\x12\x13\n\x0f\x43\x41\x43HE_POPULATED\x10\x03\x12\x18\n\x14\x43\x41\x43HE_LOOKUP_FAILURE\x10\x04\x12\x15\n\x11\x43\x41\x43HE_PUT_FAILURE\x10\x05\x42\x36Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/coreb\x06proto3') + serialized_pb=_b('\n\x1b\x66lyteidl/core/catalog.proto\x12\rflyteidl.core\x1a\x1e\x66lyteidl/core/identifier.proto\"7\n\x12\x43\x61talogArtifactTag\x12\x13\n\x0b\x61rtifact_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xd6\x01\n\x0f\x43\x61talogMetadata\x12-\n\ndataset_id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.Identifier\x12\x37\n\x0c\x61rtifact_tag\x18\x02 \x01(\x0b\x32!.flyteidl.core.CatalogArtifactTag\x12G\n\x15source_task_execution\x18\x03 \x01(\x0b\x32&.flyteidl.core.TaskExecutionIdentifierH\x00\x42\x12\n\x10source_execution\"\x9e\x01\n\x12\x43\x61talogReservation\"\x87\x01\n\x06Status\x12\x18\n\x14RESERVATION_DISABLED\x10\x00\x12\x18\n\x14RESERVATION_ACQUIRED\x10\x01\x12\x16\n\x12RESERVATION_EXISTS\x10\x02\x12\x18\n\x14RESERVATION_RELEASED\x10\x03\x12\x17\n\x13RESERVATION_FAILURE\x10\x04*\xa0\x01\n\x12\x43\x61talogCacheStatus\x12\x12\n\x0e\x43\x41\x43HE_DISABLED\x10\x00\x12\x0e\n\nCACHE_MISS\x10\x01\x12\r\n\tCACHE_HIT\x10\x02\x12\x13\n\x0f\x43\x41\x43HE_POPULATED\x10\x03\x12\x18\n\x14\x43\x41\x43HE_LOOKUP_FAILURE\x10\x04\x12\x15\n\x11\x43\x41\x43HE_PUT_FAILURE\x10\x05\x12\x11\n\rCACHE_SKIPPED\x10\x06\x42\x36Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/coreb\x06proto3') , dependencies=[flyteidl_dot_core_dot_identifier__pb2.DESCRIPTOR,]) @@ -56,11 +56,15 @@ name='CACHE_PUT_FAILURE', index=5, number=5, serialized_options=None, type=None), + _descriptor.EnumValueDescriptor( + name='CACHE_SKIPPED', index=6, number=6, + serialized_options=None, + type=None), ], containing_type=None, serialized_options=None, serialized_start=514, - serialized_end=655, + serialized_end=674, ) _sym_db.RegisterEnumDescriptor(_CATALOGCACHESTATUS) @@ -71,6 +75,7 @@ CACHE_POPULATED = 3 CACHE_LOOKUP_FAILURE = 4 CACHE_PUT_FAILURE = 5 +CACHE_SKIPPED = 6 _CATALOGRESERVATION_STATUS = _descriptor.EnumDescriptor( diff --git a/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2.py b/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2.py index 3df5071f9..ef031a606 100644 --- a/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2.py +++ b/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2.py @@ -23,7 +23,7 @@ package='datacatalog', syntax='proto3', serialized_options=_b('Z;github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/datacatalog'), - serialized_pb=_b('\n&flyteidl/datacatalog/datacatalog.proto\x12\x0b\x64\x61tacatalog\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"=\n\x14\x43reateDatasetRequest\x12%\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x14.datacatalog.Dataset\"\x17\n\x15\x43reateDatasetResponse\"<\n\x11GetDatasetRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\";\n\x12GetDatasetResponse\x12%\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x14.datacatalog.Dataset\"x\n\x12GetArtifactRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\x15\n\x0b\x61rtifact_id\x18\x02 \x01(\tH\x00\x12\x12\n\x08tag_name\x18\x03 \x01(\tH\x00\x42\x0e\n\x0cquery_handle\">\n\x13GetArtifactResponse\x12\'\n\x08\x61rtifact\x18\x01 \x01(\x0b\x32\x15.datacatalog.Artifact\"@\n\x15\x43reateArtifactRequest\x12\'\n\x08\x61rtifact\x18\x01 \x01(\x0b\x32\x15.datacatalog.Artifact\"\x18\n\x16\x43reateArtifactResponse\".\n\rAddTagRequest\x12\x1d\n\x03tag\x18\x01 \x01(\x0b\x32\x10.datacatalog.Tag\"\x10\n\x0e\x41\x64\x64TagResponse\"\xa2\x01\n\x14ListArtifactsRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12-\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1d.datacatalog.FilterExpression\x12\x32\n\npagination\x18\x03 \x01(\x0b\x32\x1e.datacatalog.PaginationOptions\"U\n\x15ListArtifactsResponse\x12(\n\tartifacts\x18\x01 \x03(\x0b\x32\x15.datacatalog.Artifact\x12\x12\n\nnext_token\x18\x02 \x01(\t\"x\n\x13ListDatasetsRequest\x12-\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1d.datacatalog.FilterExpression\x12\x32\n\npagination\x18\x02 \x01(\x0b\x32\x1e.datacatalog.PaginationOptions\"R\n\x14ListDatasetsResponse\x12&\n\x08\x64\x61tasets\x18\x01 \x03(\x0b\x32\x14.datacatalog.Dataset\x12\x12\n\nnext_token\x18\x02 \x01(\t\"M\n\rReservationID\x12*\n\ndataset_id\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\x10\n\x08tag_name\x18\x02 \x01(\t\"\x9c\x01\n\x1dGetOrExtendReservationRequest\x12\x32\n\x0ereservation_id\x18\x01 \x01(\x0b\x32\x1a.datacatalog.ReservationID\x12\x10\n\x08owner_id\x18\x02 \x01(\t\x12\x35\n\x12heartbeat_interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xe3\x01\n\x0bReservation\x12\x32\n\x0ereservation_id\x18\x01 \x01(\x0b\x32\x1a.datacatalog.ReservationID\x12\x10\n\x08owner_id\x18\x02 \x01(\t\x12\x35\n\x12heartbeat_interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x08metadata\x18\x06 \x01(\x0b\x32\x15.datacatalog.Metadata\"O\n\x1eGetOrExtendReservationResponse\x12-\n\x0breservation\x18\x01 \x01(\x0b\x32\x18.datacatalog.Reservation\"a\n\x19ReleaseReservationRequest\x12\x32\n\x0ereservation_id\x18\x01 \x01(\x0b\x32\x1a.datacatalog.ReservationID\x12\x10\n\x08owner_id\x18\x02 \x01(\t\"\x1c\n\x1aReleaseReservationResponse\"m\n\x07\x44\x61taset\x12\"\n\x02id\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\'\n\x08metadata\x18\x02 \x01(\x0b\x32\x15.datacatalog.Metadata\x12\x15\n\rpartitionKeys\x18\x03 \x03(\t\"\'\n\tPartition\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"Y\n\tDatasetID\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x64omain\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x0c\n\x04UUID\x18\x05 \x01(\t\"\x8d\x02\n\x08\x41rtifact\x12\n\n\x02id\x18\x01 \x01(\t\x12\'\n\x07\x64\x61taset\x18\x02 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\'\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\x19.datacatalog.ArtifactData\x12\'\n\x08metadata\x18\x04 \x01(\x0b\x32\x15.datacatalog.Metadata\x12*\n\npartitions\x18\x05 \x03(\x0b\x32\x16.datacatalog.Partition\x12\x1e\n\x04tags\x18\x06 \x03(\x0b\x32\x10.datacatalog.Tag\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"C\n\x0c\x41rtifactData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.Literal\"Q\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x61rtifact_id\x18\x02 \x01(\t\x12\'\n\x07\x64\x61taset\x18\x03 \x01(\x0b\x32\x16.datacatalog.DatasetID\"m\n\x08Metadata\x12\x32\n\x07key_map\x18\x01 \x03(\x0b\x32!.datacatalog.Metadata.KeyMapEntry\x1a-\n\x0bKeyMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"F\n\x10\x46ilterExpression\x12\x32\n\x07\x66ilters\x18\x01 \x03(\x0b\x32!.datacatalog.SinglePropertyFilter\"\x89\x03\n\x14SinglePropertyFilter\x12\x34\n\ntag_filter\x18\x01 \x01(\x0b\x32\x1e.datacatalog.TagPropertyFilterH\x00\x12@\n\x10partition_filter\x18\x02 \x01(\x0b\x32$.datacatalog.PartitionPropertyFilterH\x00\x12>\n\x0f\x61rtifact_filter\x18\x03 \x01(\x0b\x32#.datacatalog.ArtifactPropertyFilterH\x00\x12<\n\x0e\x64\x61taset_filter\x18\x04 \x01(\x0b\x32\".datacatalog.DatasetPropertyFilterH\x00\x12\x46\n\x08operator\x18\n \x01(\x0e\x32\x34.datacatalog.SinglePropertyFilter.ComparisonOperator\" \n\x12\x43omparisonOperator\x12\n\n\x06\x45QUALS\x10\x00\x42\x11\n\x0fproperty_filter\";\n\x16\x41rtifactPropertyFilter\x12\x15\n\x0b\x61rtifact_id\x18\x01 \x01(\tH\x00\x42\n\n\x08property\"3\n\x11TagPropertyFilter\x12\x12\n\x08tag_name\x18\x01 \x01(\tH\x00\x42\n\n\x08property\"S\n\x17PartitionPropertyFilter\x12,\n\x07key_val\x18\x01 \x01(\x0b\x32\x19.datacatalog.KeyValuePairH\x00\x42\n\n\x08property\"*\n\x0cKeyValuePair\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"k\n\x15\x44\x61tasetPropertyFilter\x12\x11\n\x07project\x18\x01 \x01(\tH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x12\x10\n\x06\x64omain\x18\x03 \x01(\tH\x00\x12\x11\n\x07version\x18\x04 \x01(\tH\x00\x42\n\n\x08property\"\xf1\x01\n\x11PaginationOptions\x12\r\n\x05limit\x18\x01 \x01(\r\x12\r\n\x05token\x18\x02 \x01(\t\x12\x37\n\x07sortKey\x18\x03 \x01(\x0e\x32&.datacatalog.PaginationOptions.SortKey\x12;\n\tsortOrder\x18\x04 \x01(\x0e\x32(.datacatalog.PaginationOptions.SortOrder\"*\n\tSortOrder\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\x1c\n\x07SortKey\x12\x11\n\rCREATION_TIME\x10\x00\x32\xab\x06\n\x0b\x44\x61taCatalog\x12V\n\rCreateDataset\x12!.datacatalog.CreateDatasetRequest\x1a\".datacatalog.CreateDatasetResponse\x12M\n\nGetDataset\x12\x1e.datacatalog.GetDatasetRequest\x1a\x1f.datacatalog.GetDatasetResponse\x12Y\n\x0e\x43reateArtifact\x12\".datacatalog.CreateArtifactRequest\x1a#.datacatalog.CreateArtifactResponse\x12P\n\x0bGetArtifact\x12\x1f.datacatalog.GetArtifactRequest\x1a .datacatalog.GetArtifactResponse\x12\x41\n\x06\x41\x64\x64Tag\x12\x1a.datacatalog.AddTagRequest\x1a\x1b.datacatalog.AddTagResponse\x12V\n\rListArtifacts\x12!.datacatalog.ListArtifactsRequest\x1a\".datacatalog.ListArtifactsResponse\x12S\n\x0cListDatasets\x12 .datacatalog.ListDatasetsRequest\x1a!.datacatalog.ListDatasetsResponse\x12q\n\x16GetOrExtendReservation\x12*.datacatalog.GetOrExtendReservationRequest\x1a+.datacatalog.GetOrExtendReservationResponse\x12\x65\n\x12ReleaseReservation\x12&.datacatalog.ReleaseReservationRequest\x1a\'.datacatalog.ReleaseReservationResponseB=Z;github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/datacatalogb\x06proto3') + serialized_pb=_b('\n&flyteidl/datacatalog/datacatalog.proto\x12\x0b\x64\x61tacatalog\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"=\n\x14\x43reateDatasetRequest\x12%\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x14.datacatalog.Dataset\"\x17\n\x15\x43reateDatasetResponse\"<\n\x11GetDatasetRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\";\n\x12GetDatasetResponse\x12%\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x14.datacatalog.Dataset\"x\n\x12GetArtifactRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\x15\n\x0b\x61rtifact_id\x18\x02 \x01(\tH\x00\x12\x12\n\x08tag_name\x18\x03 \x01(\tH\x00\x42\x0e\n\x0cquery_handle\">\n\x13GetArtifactResponse\x12\'\n\x08\x61rtifact\x18\x01 \x01(\x0b\x32\x15.datacatalog.Artifact\"@\n\x15\x43reateArtifactRequest\x12\'\n\x08\x61rtifact\x18\x01 \x01(\x0b\x32\x15.datacatalog.Artifact\"\x18\n\x16\x43reateArtifactResponse\".\n\rAddTagRequest\x12\x1d\n\x03tag\x18\x01 \x01(\x0b\x32\x10.datacatalog.Tag\"\x10\n\x0e\x41\x64\x64TagResponse\"\xa2\x01\n\x14ListArtifactsRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12-\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1d.datacatalog.FilterExpression\x12\x32\n\npagination\x18\x03 \x01(\x0b\x32\x1e.datacatalog.PaginationOptions\"U\n\x15ListArtifactsResponse\x12(\n\tartifacts\x18\x01 \x03(\x0b\x32\x15.datacatalog.Artifact\x12\x12\n\nnext_token\x18\x02 \x01(\t\"x\n\x13ListDatasetsRequest\x12-\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x1d.datacatalog.FilterExpression\x12\x32\n\npagination\x18\x02 \x01(\x0b\x32\x1e.datacatalog.PaginationOptions\"R\n\x14ListDatasetsResponse\x12&\n\x08\x64\x61tasets\x18\x01 \x03(\x0b\x32\x14.datacatalog.Dataset\x12\x12\n\nnext_token\x18\x02 \x01(\t\"\xa4\x01\n\x15UpdateArtifactRequest\x12\'\n\x07\x64\x61taset\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\x15\n\x0b\x61rtifact_id\x18\x02 \x01(\tH\x00\x12\x12\n\x08tag_name\x18\x03 \x01(\tH\x00\x12\'\n\x04\x64\x61ta\x18\x04 \x03(\x0b\x32\x19.datacatalog.ArtifactDataB\x0e\n\x0cquery_handle\"-\n\x16UpdateArtifactResponse\x12\x13\n\x0b\x61rtifact_id\x18\x01 \x01(\t\"M\n\rReservationID\x12*\n\ndataset_id\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\x10\n\x08tag_name\x18\x02 \x01(\t\"\x9c\x01\n\x1dGetOrExtendReservationRequest\x12\x32\n\x0ereservation_id\x18\x01 \x01(\x0b\x32\x1a.datacatalog.ReservationID\x12\x10\n\x08owner_id\x18\x02 \x01(\t\x12\x35\n\x12heartbeat_interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xe3\x01\n\x0bReservation\x12\x32\n\x0ereservation_id\x18\x01 \x01(\x0b\x32\x1a.datacatalog.ReservationID\x12\x10\n\x08owner_id\x18\x02 \x01(\t\x12\x35\n\x12heartbeat_interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\nexpires_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x08metadata\x18\x06 \x01(\x0b\x32\x15.datacatalog.Metadata\"O\n\x1eGetOrExtendReservationResponse\x12-\n\x0breservation\x18\x01 \x01(\x0b\x32\x18.datacatalog.Reservation\"a\n\x19ReleaseReservationRequest\x12\x32\n\x0ereservation_id\x18\x01 \x01(\x0b\x32\x1a.datacatalog.ReservationID\x12\x10\n\x08owner_id\x18\x02 \x01(\t\"\x1c\n\x1aReleaseReservationResponse\"m\n\x07\x44\x61taset\x12\"\n\x02id\x18\x01 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\'\n\x08metadata\x18\x02 \x01(\x0b\x32\x15.datacatalog.Metadata\x12\x15\n\rpartitionKeys\x18\x03 \x03(\t\"\'\n\tPartition\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"Y\n\tDatasetID\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06\x64omain\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x0c\n\x04UUID\x18\x05 \x01(\t\"\x8d\x02\n\x08\x41rtifact\x12\n\n\x02id\x18\x01 \x01(\t\x12\'\n\x07\x64\x61taset\x18\x02 \x01(\x0b\x32\x16.datacatalog.DatasetID\x12\'\n\x04\x64\x61ta\x18\x03 \x03(\x0b\x32\x19.datacatalog.ArtifactData\x12\'\n\x08metadata\x18\x04 \x01(\x0b\x32\x15.datacatalog.Metadata\x12*\n\npartitions\x18\x05 \x03(\x0b\x32\x16.datacatalog.Partition\x12\x1e\n\x04tags\x18\x06 \x03(\x0b\x32\x10.datacatalog.Tag\x12.\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"C\n\x0c\x41rtifactData\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.flyteidl.core.Literal\"Q\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x61rtifact_id\x18\x02 \x01(\t\x12\'\n\x07\x64\x61taset\x18\x03 \x01(\x0b\x32\x16.datacatalog.DatasetID\"m\n\x08Metadata\x12\x32\n\x07key_map\x18\x01 \x03(\x0b\x32!.datacatalog.Metadata.KeyMapEntry\x1a-\n\x0bKeyMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"F\n\x10\x46ilterExpression\x12\x32\n\x07\x66ilters\x18\x01 \x03(\x0b\x32!.datacatalog.SinglePropertyFilter\"\x89\x03\n\x14SinglePropertyFilter\x12\x34\n\ntag_filter\x18\x01 \x01(\x0b\x32\x1e.datacatalog.TagPropertyFilterH\x00\x12@\n\x10partition_filter\x18\x02 \x01(\x0b\x32$.datacatalog.PartitionPropertyFilterH\x00\x12>\n\x0f\x61rtifact_filter\x18\x03 \x01(\x0b\x32#.datacatalog.ArtifactPropertyFilterH\x00\x12<\n\x0e\x64\x61taset_filter\x18\x04 \x01(\x0b\x32\".datacatalog.DatasetPropertyFilterH\x00\x12\x46\n\x08operator\x18\n \x01(\x0e\x32\x34.datacatalog.SinglePropertyFilter.ComparisonOperator\" \n\x12\x43omparisonOperator\x12\n\n\x06\x45QUALS\x10\x00\x42\x11\n\x0fproperty_filter\";\n\x16\x41rtifactPropertyFilter\x12\x15\n\x0b\x61rtifact_id\x18\x01 \x01(\tH\x00\x42\n\n\x08property\"3\n\x11TagPropertyFilter\x12\x12\n\x08tag_name\x18\x01 \x01(\tH\x00\x42\n\n\x08property\"S\n\x17PartitionPropertyFilter\x12,\n\x07key_val\x18\x01 \x01(\x0b\x32\x19.datacatalog.KeyValuePairH\x00\x42\n\n\x08property\"*\n\x0cKeyValuePair\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"k\n\x15\x44\x61tasetPropertyFilter\x12\x11\n\x07project\x18\x01 \x01(\tH\x00\x12\x0e\n\x04name\x18\x02 \x01(\tH\x00\x12\x10\n\x06\x64omain\x18\x03 \x01(\tH\x00\x12\x11\n\x07version\x18\x04 \x01(\tH\x00\x42\n\n\x08property\"\xf1\x01\n\x11PaginationOptions\x12\r\n\x05limit\x18\x01 \x01(\r\x12\r\n\x05token\x18\x02 \x01(\t\x12\x37\n\x07sortKey\x18\x03 \x01(\x0e\x32&.datacatalog.PaginationOptions.SortKey\x12;\n\tsortOrder\x18\x04 \x01(\x0e\x32(.datacatalog.PaginationOptions.SortOrder\"*\n\tSortOrder\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\x1c\n\x07SortKey\x12\x11\n\rCREATION_TIME\x10\x00\x32\x86\x07\n\x0b\x44\x61taCatalog\x12V\n\rCreateDataset\x12!.datacatalog.CreateDatasetRequest\x1a\".datacatalog.CreateDatasetResponse\x12M\n\nGetDataset\x12\x1e.datacatalog.GetDatasetRequest\x1a\x1f.datacatalog.GetDatasetResponse\x12Y\n\x0e\x43reateArtifact\x12\".datacatalog.CreateArtifactRequest\x1a#.datacatalog.CreateArtifactResponse\x12P\n\x0bGetArtifact\x12\x1f.datacatalog.GetArtifactRequest\x1a .datacatalog.GetArtifactResponse\x12\x41\n\x06\x41\x64\x64Tag\x12\x1a.datacatalog.AddTagRequest\x1a\x1b.datacatalog.AddTagResponse\x12V\n\rListArtifacts\x12!.datacatalog.ListArtifactsRequest\x1a\".datacatalog.ListArtifactsResponse\x12S\n\x0cListDatasets\x12 .datacatalog.ListDatasetsRequest\x1a!.datacatalog.ListDatasetsResponse\x12Y\n\x0eUpdateArtifact\x12\".datacatalog.UpdateArtifactRequest\x1a#.datacatalog.UpdateArtifactResponse\x12q\n\x16GetOrExtendReservation\x12*.datacatalog.GetOrExtendReservationRequest\x1a+.datacatalog.GetOrExtendReservationResponse\x12\x65\n\x12ReleaseReservation\x12&.datacatalog.ReleaseReservationRequest\x1a\'.datacatalog.ReleaseReservationResponseB=Z;github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/datacatalogb\x06proto3') , dependencies=[flyteidl_dot_core_dot_literals__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -42,8 +42,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3034, - serialized_end=3066, + serialized_start=3248, + serialized_end=3280, ) _sym_db.RegisterEnumDescriptor(_SINGLEPROPERTYFILTER_COMPARISONOPERATOR) @@ -64,8 +64,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3609, - serialized_end=3651, + serialized_start=3823, + serialized_end=3865, ) _sym_db.RegisterEnumDescriptor(_PAGINATIONOPTIONS_SORTORDER) @@ -82,8 +82,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3653, - serialized_end=3681, + serialized_start=3867, + serialized_end=3895, ) _sym_db.RegisterEnumDescriptor(_PAGINATIONOPTIONS_SORTKEY) @@ -553,6 +553,92 @@ ) +_UPDATEARTIFACTREQUEST = _descriptor.Descriptor( + name='UpdateArtifactRequest', + full_name='datacatalog.UpdateArtifactRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='dataset', full_name='datacatalog.UpdateArtifactRequest.dataset', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='artifact_id', full_name='datacatalog.UpdateArtifactRequest.artifact_id', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='tag_name', full_name='datacatalog.UpdateArtifactRequest.tag_name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='data', full_name='datacatalog.UpdateArtifactRequest.data', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='query_handle', full_name='datacatalog.UpdateArtifactRequest.query_handle', + index=0, containing_type=None, fields=[]), + ], + serialized_start=1164, + serialized_end=1328, +) + + +_UPDATEARTIFACTRESPONSE = _descriptor.Descriptor( + name='UpdateArtifactResponse', + full_name='datacatalog.UpdateArtifactResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='artifact_id', full_name='datacatalog.UpdateArtifactResponse.artifact_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1330, + serialized_end=1375, +) + + _RESERVATIONID = _descriptor.Descriptor( name='ReservationID', full_name='datacatalog.ReservationID', @@ -586,8 +672,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1163, - serialized_end=1240, + serialized_start=1377, + serialized_end=1454, ) @@ -631,8 +717,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1243, - serialized_end=1399, + serialized_start=1457, + serialized_end=1613, ) @@ -690,8 +776,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1402, - serialized_end=1629, + serialized_start=1616, + serialized_end=1843, ) @@ -721,8 +807,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1631, - serialized_end=1710, + serialized_start=1845, + serialized_end=1924, ) @@ -759,8 +845,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1712, - serialized_end=1809, + serialized_start=1926, + serialized_end=2023, ) @@ -783,8 +869,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1811, - serialized_end=1839, + serialized_start=2025, + serialized_end=2053, ) @@ -828,8 +914,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1841, - serialized_end=1950, + serialized_start=2055, + serialized_end=2164, ) @@ -866,8 +952,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1952, - serialized_end=1991, + serialized_start=2166, + serialized_end=2205, ) @@ -925,8 +1011,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1993, - serialized_end=2082, + serialized_start=2207, + serialized_end=2296, ) @@ -998,8 +1084,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2085, - serialized_end=2354, + serialized_start=2299, + serialized_end=2568, ) @@ -1036,8 +1122,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2356, - serialized_end=2423, + serialized_start=2570, + serialized_end=2637, ) @@ -1081,8 +1167,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2425, - serialized_end=2506, + serialized_start=2639, + serialized_end=2720, ) @@ -1119,8 +1205,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2572, - serialized_end=2617, + serialized_start=2786, + serialized_end=2831, ) _METADATA = _descriptor.Descriptor( @@ -1149,8 +1235,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2508, - serialized_end=2617, + serialized_start=2722, + serialized_end=2831, ) @@ -1180,8 +1266,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2619, - serialized_end=2689, + serialized_start=2833, + serialized_end=2903, ) @@ -1243,8 +1329,8 @@ name='property_filter', full_name='datacatalog.SinglePropertyFilter.property_filter', index=0, containing_type=None, fields=[]), ], - serialized_start=2692, - serialized_end=3085, + serialized_start=2906, + serialized_end=3299, ) @@ -1277,8 +1363,8 @@ name='property', full_name='datacatalog.ArtifactPropertyFilter.property', index=0, containing_type=None, fields=[]), ], - serialized_start=3087, - serialized_end=3146, + serialized_start=3301, + serialized_end=3360, ) @@ -1311,8 +1397,8 @@ name='property', full_name='datacatalog.TagPropertyFilter.property', index=0, containing_type=None, fields=[]), ], - serialized_start=3148, - serialized_end=3199, + serialized_start=3362, + serialized_end=3413, ) @@ -1345,8 +1431,8 @@ name='property', full_name='datacatalog.PartitionPropertyFilter.property', index=0, containing_type=None, fields=[]), ], - serialized_start=3201, - serialized_end=3284, + serialized_start=3415, + serialized_end=3498, ) @@ -1383,8 +1469,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3286, - serialized_end=3328, + serialized_start=3500, + serialized_end=3542, ) @@ -1438,8 +1524,8 @@ name='property', full_name='datacatalog.DatasetPropertyFilter.property', index=0, containing_type=None, fields=[]), ], - serialized_start=3330, - serialized_end=3437, + serialized_start=3544, + serialized_end=3651, ) @@ -1492,8 +1578,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3440, - serialized_end=3681, + serialized_start=3654, + serialized_end=3895, ) _CREATEDATASETREQUEST.fields_by_name['dataset'].message_type = _DATASET @@ -1516,6 +1602,14 @@ _LISTDATASETSREQUEST.fields_by_name['filter'].message_type = _FILTEREXPRESSION _LISTDATASETSREQUEST.fields_by_name['pagination'].message_type = _PAGINATIONOPTIONS _LISTDATASETSRESPONSE.fields_by_name['datasets'].message_type = _DATASET +_UPDATEARTIFACTREQUEST.fields_by_name['dataset'].message_type = _DATASETID +_UPDATEARTIFACTREQUEST.fields_by_name['data'].message_type = _ARTIFACTDATA +_UPDATEARTIFACTREQUEST.oneofs_by_name['query_handle'].fields.append( + _UPDATEARTIFACTREQUEST.fields_by_name['artifact_id']) +_UPDATEARTIFACTREQUEST.fields_by_name['artifact_id'].containing_oneof = _UPDATEARTIFACTREQUEST.oneofs_by_name['query_handle'] +_UPDATEARTIFACTREQUEST.oneofs_by_name['query_handle'].fields.append( + _UPDATEARTIFACTREQUEST.fields_by_name['tag_name']) +_UPDATEARTIFACTREQUEST.fields_by_name['tag_name'].containing_oneof = _UPDATEARTIFACTREQUEST.oneofs_by_name['query_handle'] _RESERVATIONID.fields_by_name['dataset_id'].message_type = _DATASETID _GETOREXTENDRESERVATIONREQUEST.fields_by_name['reservation_id'].message_type = _RESERVATIONID _GETOREXTENDRESERVATIONREQUEST.fields_by_name['heartbeat_interval'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION @@ -1596,6 +1690,8 @@ DESCRIPTOR.message_types_by_name['ListArtifactsResponse'] = _LISTARTIFACTSRESPONSE DESCRIPTOR.message_types_by_name['ListDatasetsRequest'] = _LISTDATASETSREQUEST DESCRIPTOR.message_types_by_name['ListDatasetsResponse'] = _LISTDATASETSRESPONSE +DESCRIPTOR.message_types_by_name['UpdateArtifactRequest'] = _UPDATEARTIFACTREQUEST +DESCRIPTOR.message_types_by_name['UpdateArtifactResponse'] = _UPDATEARTIFACTRESPONSE DESCRIPTOR.message_types_by_name['ReservationID'] = _RESERVATIONID DESCRIPTOR.message_types_by_name['GetOrExtendReservationRequest'] = _GETOREXTENDRESERVATIONREQUEST DESCRIPTOR.message_types_by_name['Reservation'] = _RESERVATION @@ -1717,6 +1813,20 @@ )) _sym_db.RegisterMessage(ListDatasetsResponse) +UpdateArtifactRequest = _reflection.GeneratedProtocolMessageType('UpdateArtifactRequest', (_message.Message,), dict( + DESCRIPTOR = _UPDATEARTIFACTREQUEST, + __module__ = 'flyteidl.datacatalog.datacatalog_pb2' + # @@protoc_insertion_point(class_scope:datacatalog.UpdateArtifactRequest) + )) +_sym_db.RegisterMessage(UpdateArtifactRequest) + +UpdateArtifactResponse = _reflection.GeneratedProtocolMessageType('UpdateArtifactResponse', (_message.Message,), dict( + DESCRIPTOR = _UPDATEARTIFACTRESPONSE, + __module__ = 'flyteidl.datacatalog.datacatalog_pb2' + # @@protoc_insertion_point(class_scope:datacatalog.UpdateArtifactResponse) + )) +_sym_db.RegisterMessage(UpdateArtifactResponse) + ReservationID = _reflection.GeneratedProtocolMessageType('ReservationID', (_message.Message,), dict( DESCRIPTOR = _RESERVATIONID, __module__ = 'flyteidl.datacatalog.datacatalog_pb2' @@ -1882,8 +1992,8 @@ file=DESCRIPTOR, index=0, serialized_options=None, - serialized_start=3684, - serialized_end=4495, + serialized_start=3898, + serialized_end=4800, methods=[ _descriptor.MethodDescriptor( name='CreateDataset', @@ -1948,10 +2058,19 @@ output_type=_LISTDATASETSRESPONSE, serialized_options=None, ), + _descriptor.MethodDescriptor( + name='UpdateArtifact', + full_name='datacatalog.DataCatalog.UpdateArtifact', + index=7, + containing_service=None, + input_type=_UPDATEARTIFACTREQUEST, + output_type=_UPDATEARTIFACTRESPONSE, + serialized_options=None, + ), _descriptor.MethodDescriptor( name='GetOrExtendReservation', full_name='datacatalog.DataCatalog.GetOrExtendReservation', - index=7, + index=8, containing_service=None, input_type=_GETOREXTENDRESERVATIONREQUEST, output_type=_GETOREXTENDRESERVATIONRESPONSE, @@ -1960,7 +2079,7 @@ _descriptor.MethodDescriptor( name='ReleaseReservation', full_name='datacatalog.DataCatalog.ReleaseReservation', - index=8, + index=9, containing_service=None, input_type=_RELEASERESERVATIONREQUEST, output_type=_RELEASERESERVATIONRESPONSE, diff --git a/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2_grpc.py b/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2_grpc.py index 3167390a8..53955df20 100644 --- a/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2_grpc.py +++ b/gen/pb_python/flyteidl/datacatalog/datacatalog_pb2_grpc.py @@ -52,6 +52,11 @@ def __init__(self, channel): request_serializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.ListDatasetsRequest.SerializeToString, response_deserializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.ListDatasetsResponse.FromString, ) + self.UpdateArtifact = channel.unary_unary( + '/datacatalog.DataCatalog/UpdateArtifact', + request_serializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.UpdateArtifactRequest.SerializeToString, + response_deserializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.UpdateArtifactResponse.FromString, + ) self.GetOrExtendReservation = channel.unary_unary( '/datacatalog.DataCatalog/GetOrExtendReservation', request_serializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.GetOrExtendReservationRequest.SerializeToString, @@ -122,6 +127,13 @@ def ListDatasets(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def UpdateArtifact(self, request, context): + """Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def GetOrExtendReservation(self, request, context): """Attempts to get or extend a reservation for the corresponding artifact. If one already exists (ie. another entity owns the reservation) then that reservation is retrieved. @@ -185,6 +197,11 @@ def add_DataCatalogServicer_to_server(servicer, server): request_deserializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.ListDatasetsRequest.FromString, response_serializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.ListDatasetsResponse.SerializeToString, ), + 'UpdateArtifact': grpc.unary_unary_rpc_method_handler( + servicer.UpdateArtifact, + request_deserializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.UpdateArtifactRequest.FromString, + response_serializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.UpdateArtifactResponse.SerializeToString, + ), 'GetOrExtendReservation': grpc.unary_unary_rpc_method_handler( servicer.GetOrExtendReservation, request_deserializer=flyteidl_dot_datacatalog_dot_datacatalog__pb2.GetOrExtendReservationRequest.FromString, diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_relaunch_request.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_relaunch_request.py index 4fb42a38b..699c21288 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_relaunch_request.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_relaunch_request.py @@ -34,25 +34,30 @@ class AdminExecutionRelaunchRequest(object): """ swagger_types = { 'id': 'CoreWorkflowExecutionIdentifier', - 'name': 'str' + 'name': 'str', + 'overwrite_cache': 'bool' } attribute_map = { 'id': 'id', - 'name': 'name' + 'name': 'name', + 'overwrite_cache': 'overwrite_cache' } - def __init__(self, id=None, name=None): # noqa: E501 + def __init__(self, id=None, name=None, overwrite_cache=None): # noqa: E501 """AdminExecutionRelaunchRequest - a model defined in Swagger""" # noqa: E501 self._id = None self._name = None + self._overwrite_cache = None self.discriminator = None if id is not None: self.id = id if name is not None: self.name = name + if overwrite_cache is not None: + self.overwrite_cache = overwrite_cache @property def id(self): @@ -96,6 +101,29 @@ def name(self, name): self._name = name + @property + def overwrite_cache(self): + """Gets the overwrite_cache of this AdminExecutionRelaunchRequest. # noqa: E501 + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :return: The overwrite_cache of this AdminExecutionRelaunchRequest. # noqa: E501 + :rtype: bool + """ + return self._overwrite_cache + + @overwrite_cache.setter + def overwrite_cache(self, overwrite_cache): + """Sets the overwrite_cache of this AdminExecutionRelaunchRequest. + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :param overwrite_cache: The overwrite_cache of this AdminExecutionRelaunchRequest. # noqa: E501 + :type: bool + """ + + self._overwrite_cache = overwrite_cache + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py index ed3cbd31c..9a017465c 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_spec.py @@ -56,7 +56,8 @@ class AdminExecutionSpec(object): 'max_parallelism': 'int', 'raw_output_data_config': 'AdminRawOutputDataConfig', 'cluster_assignment': 'AdminClusterAssignment', - 'interruptible': 'bool' + 'interruptible': 'bool', + 'overwrite_cache': 'bool' } attribute_map = { @@ -73,10 +74,11 @@ class AdminExecutionSpec(object): 'max_parallelism': 'max_parallelism', 'raw_output_data_config': 'raw_output_data_config', 'cluster_assignment': 'cluster_assignment', - 'interruptible': 'interruptible' + 'interruptible': 'interruptible', + 'overwrite_cache': 'overwrite_cache' } - def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=None, disable_all=None, labels=None, annotations=None, security_context=None, auth_role=None, quality_of_service=None, max_parallelism=None, raw_output_data_config=None, cluster_assignment=None, interruptible=None): # noqa: E501 + def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=None, disable_all=None, labels=None, annotations=None, security_context=None, auth_role=None, quality_of_service=None, max_parallelism=None, raw_output_data_config=None, cluster_assignment=None, interruptible=None, overwrite_cache=None): # noqa: E501 """AdminExecutionSpec - a model defined in Swagger""" # noqa: E501 self._launch_plan = None @@ -93,6 +95,7 @@ def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=N self._raw_output_data_config = None self._cluster_assignment = None self._interruptible = None + self._overwrite_cache = None self.discriminator = None if launch_plan is not None: @@ -123,6 +126,8 @@ def __init__(self, launch_plan=None, inputs=None, metadata=None, notifications=N self.cluster_assignment = cluster_assignment if interruptible is not None: self.interruptible = interruptible + if overwrite_cache is not None: + self.overwrite_cache = overwrite_cache @property def launch_plan(self): @@ -438,6 +443,29 @@ def interruptible(self, interruptible): self._interruptible = interruptible + @property + def overwrite_cache(self): + """Gets the overwrite_cache of this AdminExecutionSpec. # noqa: E501 + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :return: The overwrite_cache of this AdminExecutionSpec. # noqa: E501 + :rtype: bool + """ + return self._overwrite_cache + + @overwrite_cache.setter + def overwrite_cache(self, overwrite_cache): + """Sets the overwrite_cache of this AdminExecutionSpec. + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :param overwrite_cache: The overwrite_cache of this AdminExecutionSpec. # noqa: E501 + :type: bool + """ + + self._overwrite_cache = overwrite_cache + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py index 710d5a414..88426454d 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_launch_plan_spec.py @@ -56,7 +56,8 @@ class AdminLaunchPlanSpec(object): 'quality_of_service': 'CoreQualityOfService', 'raw_output_data_config': 'AdminRawOutputDataConfig', 'max_parallelism': 'int', - 'interruptible': 'bool' + 'interruptible': 'bool', + 'overwrite_cache': 'bool' } attribute_map = { @@ -73,10 +74,11 @@ class AdminLaunchPlanSpec(object): 'quality_of_service': 'quality_of_service', 'raw_output_data_config': 'raw_output_data_config', 'max_parallelism': 'max_parallelism', - 'interruptible': 'interruptible' + 'interruptible': 'interruptible', + 'overwrite_cache': 'overwrite_cache' } - def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, fixed_inputs=None, role=None, labels=None, annotations=None, auth=None, auth_role=None, security_context=None, quality_of_service=None, raw_output_data_config=None, max_parallelism=None, interruptible=None): # noqa: E501 + def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, fixed_inputs=None, role=None, labels=None, annotations=None, auth=None, auth_role=None, security_context=None, quality_of_service=None, raw_output_data_config=None, max_parallelism=None, interruptible=None, overwrite_cache=None): # noqa: E501 """AdminLaunchPlanSpec - a model defined in Swagger""" # noqa: E501 self._workflow_id = None @@ -93,6 +95,7 @@ def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, self._raw_output_data_config = None self._max_parallelism = None self._interruptible = None + self._overwrite_cache = None self.discriminator = None if workflow_id is not None: @@ -123,6 +126,8 @@ def __init__(self, workflow_id=None, entity_metadata=None, default_inputs=None, self.max_parallelism = max_parallelism if interruptible is not None: self.interruptible = interruptible + if overwrite_cache is not None: + self.overwrite_cache = overwrite_cache @property def workflow_id(self): @@ -436,6 +441,29 @@ def interruptible(self, interruptible): self._interruptible = interruptible + @property + def overwrite_cache(self): + """Gets the overwrite_cache of this AdminLaunchPlanSpec. # noqa: E501 + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :return: The overwrite_cache of this AdminLaunchPlanSpec. # noqa: E501 + :rtype: bool + """ + return self._overwrite_cache + + @overwrite_cache.setter + def overwrite_cache(self, overwrite_cache): + """Sets the overwrite_cache of this AdminLaunchPlanSpec. + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :param overwrite_cache: The overwrite_cache of this AdminLaunchPlanSpec. # noqa: E501 + :type: bool + """ + + self._overwrite_cache = overwrite_cache + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_config.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_config.py index 3e9fc6722..45ff1156b 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_config.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_workflow_execution_config.py @@ -41,7 +41,8 @@ class AdminWorkflowExecutionConfig(object): 'raw_output_data_config': 'AdminRawOutputDataConfig', 'labels': 'AdminLabels', 'annotations': 'AdminAnnotations', - 'interruptible': 'bool' + 'interruptible': 'bool', + 'overwrite_cache': 'bool' } attribute_map = { @@ -50,10 +51,11 @@ class AdminWorkflowExecutionConfig(object): 'raw_output_data_config': 'raw_output_data_config', 'labels': 'labels', 'annotations': 'annotations', - 'interruptible': 'interruptible' + 'interruptible': 'interruptible', + 'overwrite_cache': 'overwrite_cache' } - def __init__(self, max_parallelism=None, security_context=None, raw_output_data_config=None, labels=None, annotations=None, interruptible=None): # noqa: E501 + def __init__(self, max_parallelism=None, security_context=None, raw_output_data_config=None, labels=None, annotations=None, interruptible=None, overwrite_cache=None): # noqa: E501 """AdminWorkflowExecutionConfig - a model defined in Swagger""" # noqa: E501 self._max_parallelism = None @@ -62,6 +64,7 @@ def __init__(self, max_parallelism=None, security_context=None, raw_output_data_ self._labels = None self._annotations = None self._interruptible = None + self._overwrite_cache = None self.discriminator = None if max_parallelism is not None: @@ -76,6 +79,8 @@ def __init__(self, max_parallelism=None, security_context=None, raw_output_data_ self.annotations = annotations if interruptible is not None: self.interruptible = interruptible + if overwrite_cache is not None: + self.overwrite_cache = overwrite_cache @property def max_parallelism(self): @@ -215,6 +220,29 @@ def interruptible(self, interruptible): self._interruptible = interruptible + @property + def overwrite_cache(self): + """Gets the overwrite_cache of this AdminWorkflowExecutionConfig. # noqa: E501 + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :return: The overwrite_cache of this AdminWorkflowExecutionConfig. # noqa: E501 + :rtype: bool + """ + return self._overwrite_cache + + @overwrite_cache.setter + def overwrite_cache(self, overwrite_cache): + """Sets the overwrite_cache of this AdminWorkflowExecutionConfig. + + Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully. # noqa: E501 + + :param overwrite_cache: The overwrite_cache of this AdminWorkflowExecutionConfig. # noqa: E501 + :type: bool + """ + + self._overwrite_cache = overwrite_cache + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_catalog_cache_status.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_catalog_cache_status.py index 95d2dc313..03e6e78ab 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_catalog_cache_status.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_catalog_cache_status.py @@ -32,6 +32,7 @@ class CoreCatalogCacheStatus(object): POPULATED = "CACHE_POPULATED" LOOKUP_FAILURE = "CACHE_LOOKUP_FAILURE" PUT_FAILURE = "CACHE_PUT_FAILURE" + SKIPPED = "CACHE_SKIPPED" """ Attributes: diff --git a/protos/docs/admin/admin.rst b/protos/docs/admin/admin.rst index 2fc7d7763..9e93faebe 100644 --- a/protos/docs/admin/admin.rst +++ b/protos/docs/admin/admin.rst @@ -1084,6 +1084,7 @@ Request to relaunch the referenced execution. "id", ":ref:`ref_flyteidl.core.WorkflowExecutionIdentifier`", "", "Identifier of the workflow execution to relaunch. +required" "name", ":ref:`ref_string`", "", "User provided value for the relaunched execution. If none is provided the system will generate a unique string. +optional" + "overwrite_cache", ":ref:`ref_bool`", "", "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully." @@ -1119,6 +1120,7 @@ of an execution as it progresses across phase changes. "raw_output_data_config", ":ref:`ref_flyteidl.admin.RawOutputDataConfig`", "", "User setting to configure where to store offloaded data (i.e. Blobs, structured datasets, query data, etc.). This should be a prefix like s3://my-bucket/my-data" "cluster_assignment", ":ref:`ref_flyteidl.admin.ClusterAssignment`", "", "Controls how to select an available cluster on which this execution should run." "interruptible", ":ref:`ref_google.protobuf.BoolValue`", "", "Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field." + "overwrite_cache", ":ref:`ref_bool`", "", "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully." @@ -1655,6 +1657,7 @@ User-provided launch plan definition and configuration values. "raw_output_data_config", ":ref:`ref_flyteidl.admin.RawOutputDataConfig`", "", "Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.)." "max_parallelism", ":ref:`ref_int32`", "", "Controls the maximum number of tasknodes that can be run in parallel for the entire workflow. This is useful to achieve fairness. Note: MapTasks are regarded as one unit, and parallelism/concurrency of MapTasks is independent from this." "interruptible", ":ref:`ref_google.protobuf.BoolValue`", "", "Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field." + "overwrite_cache", ":ref:`ref_bool`", "", "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully." @@ -2042,6 +2045,7 @@ Adds defaults for customizable workflow-execution specifications and overrides. "labels", ":ref:`ref_flyteidl.admin.Labels`", "", "Custom labels to be applied to a triggered execution resource." "annotations", ":ref:`ref_flyteidl.admin.Annotations`", "", "Custom annotations to be applied to a triggered execution resource." "interruptible", ":ref:`ref_google.protobuf.BoolValue`", "", "Allows for the interruptible flag of a workflow to be overwritten for a single execution. Omitting this field uses the workflow's value as a default. As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper around the bool field." + "overwrite_cache", ":ref:`ref_bool`", "", "Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. If enabled, all calculations are performed even if cached results would be available, overwriting the stored data once execution finishes successfully." diff --git a/protos/docs/core/core.rst b/protos/docs/core/core.rst index f8f0ba974..9070fa6b1 100644 --- a/protos/docs/core/core.rst +++ b/protos/docs/core/core.rst @@ -94,6 +94,7 @@ Indicates the status of CatalogCaching. The reason why this is not embedded in T "CACHE_POPULATED", "3", "used to indicate that the resultant artifact was added to the cache" "CACHE_LOOKUP_FAILURE", "4", "Used to indicate that cache lookup failed because of an error" "CACHE_PUT_FAILURE", "5", "Used to indicate that cache lookup failed because of an error" + "CACHE_SKIPPED", "6", "Used to indicate the cache lookup was skipped" diff --git a/protos/docs/datacatalog/datacatalog.rst b/protos/docs/datacatalog/datacatalog.rst index 81f22317b..a699b8837 100644 --- a/protos/docs/datacatalog/datacatalog.rst +++ b/protos/docs/datacatalog/datacatalog.rst @@ -790,6 +790,51 @@ Tag properties we can filter by + +.. _ref_datacatalog.UpdateArtifactRequest: + +UpdateArtifactRequest +------------------------------------------------------------------ + +Request message for updating an Artifact and overwriting its associated ArtifactData. + + + +.. csv-table:: UpdateArtifactRequest type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "dataset", ":ref:`ref_datacatalog.DatasetID`", "", "ID of dataset the artifact is associated with" + "artifact_id", ":ref:`ref_string`", "", "" + "tag_name", ":ref:`ref_string`", "", "" + "data", ":ref:`ref_datacatalog.ArtifactData`", "repeated", "List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing ArtifactData entries will be removed from the underlying blob storage and database." + + + + + + + +.. _ref_datacatalog.UpdateArtifactResponse: + +UpdateArtifactResponse +------------------------------------------------------------------ + +Response message for updating an Artifact. + + + +.. csv-table:: UpdateArtifactResponse type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "artifact_id", ":ref:`ref_string`", "", "The unique ID of the artifact updated" + + + + + + .. end messages @@ -869,6 +914,7 @@ Artifacts are associated with a Dataset, and can be tagged for retrieval. "AddTag", ":ref:`ref_datacatalog.AddTagRequest`", ":ref:`ref_datacatalog.AddTagResponse`", "Associate a tag with an artifact. Tags are unique within a Dataset." "ListArtifacts", ":ref:`ref_datacatalog.ListArtifactsRequest`", ":ref:`ref_datacatalog.ListArtifactsResponse`", "Return a paginated list of artifacts" "ListDatasets", ":ref:`ref_datacatalog.ListDatasetsRequest`", ":ref:`ref_datacatalog.ListDatasetsResponse`", "Return a paginated list of datasets" + "UpdateArtifact", ":ref:`ref_datacatalog.UpdateArtifactRequest`", ":ref:`ref_datacatalog.UpdateArtifactResponse`", "Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage." "GetOrExtendReservation", ":ref:`ref_datacatalog.GetOrExtendReservationRequest`", ":ref:`ref_datacatalog.GetOrExtendReservationResponse`", "Attempts to get or extend a reservation for the corresponding artifact. If one already exists (ie. another entity owns the reservation) then that reservation is retrieved. Once you acquire a reservation, you need to periodically extend the reservation with an identical call. If the reservation is not extended before the defined expiration, it may be acquired by another task. Note: We may have multiple concurrent tasks with the same signature and the same input that try to populate the same artifact at the same time. Thus with reservation, only one task can run at a time, until the reservation expires. Note: If task A does not extend the reservation in time and the reservation expires, another task B may take over the reservation, resulting in two tasks A and B running in parallel. So a third task C may get the Artifact from A or B, whichever writes last." "ReleaseReservation", ":ref:`ref_datacatalog.ReleaseReservationRequest`", ":ref:`ref_datacatalog.ReleaseReservationResponse`", "Release the reservation when the task holding the spot fails so that the other tasks can grab the spot." diff --git a/protos/flyteidl/admin/execution.proto b/protos/flyteidl/admin/execution.proto index a08c9bbd1..6a7c16422 100644 --- a/protos/flyteidl/admin/execution.proto +++ b/protos/flyteidl/admin/execution.proto @@ -45,10 +45,18 @@ message ExecutionRelaunchRequest { // +required core.WorkflowExecutionIdentifier id = 1; + // Deprecated field, do not use. + reserved 2; + // User provided value for the relaunched execution. // If none is provided the system will generate a unique string. // +optional string name = 3; + + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + bool overwrite_cache = 4; } // Request to recover the referenced execution. @@ -296,6 +304,11 @@ message ExecutionSpec { // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. google.protobuf.BoolValue interruptible = 21; + + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + bool overwrite_cache = 22; } // Request to terminate an in-progress execution. This action is irreversible. diff --git a/protos/flyteidl/admin/launch_plan.proto b/protos/flyteidl/admin/launch_plan.proto index 13d87fd97..057461ed3 100644 --- a/protos/flyteidl/admin/launch_plan.proto +++ b/protos/flyteidl/admin/launch_plan.proto @@ -125,6 +125,11 @@ message LaunchPlanSpec { // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. google.protobuf.BoolValue interruptible = 19; + + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + bool overwrite_cache = 20; } // Values computed by the flyte platform after launch plan registration. diff --git a/protos/flyteidl/admin/matchable_resource.proto b/protos/flyteidl/admin/matchable_resource.proto index bba83a1b9..f003c4eb3 100644 --- a/protos/flyteidl/admin/matchable_resource.proto +++ b/protos/flyteidl/admin/matchable_resource.proto @@ -123,6 +123,11 @@ message WorkflowExecutionConfig { // As we need to distinguish between the field not being provided and its default value false, we have to use a wrapper // around the bool field. google.protobuf.BoolValue interruptible = 6; + + // Allows for all cached values of a workflow and its tasks to be overwritten for a single execution. + // If enabled, all calculations are performed even if cached results would be available, overwriting the stored + // data once execution finishes successfully. + bool overwrite_cache = 7; } // Generic container for encapsulating all types of the above attributes messages. diff --git a/protos/flyteidl/core/catalog.proto b/protos/flyteidl/core/catalog.proto index 945c3334b..80cc04432 100644 --- a/protos/flyteidl/core/catalog.proto +++ b/protos/flyteidl/core/catalog.proto @@ -20,6 +20,8 @@ enum CatalogCacheStatus { CACHE_LOOKUP_FAILURE = 4; // Used to indicate that cache lookup failed because of an error CACHE_PUT_FAILURE = 5; + // Used to indicate the cache lookup was skipped + CACHE_SKIPPED = 6; }; message CatalogArtifactTag { diff --git a/protos/flyteidl/datacatalog/datacatalog.proto b/protos/flyteidl/datacatalog/datacatalog.proto index 51b6d05e2..b308ac647 100644 --- a/protos/flyteidl/datacatalog/datacatalog.proto +++ b/protos/flyteidl/datacatalog/datacatalog.proto @@ -37,6 +37,9 @@ service DataCatalog { // Return a paginated list of datasets rpc ListDatasets (ListDatasetsRequest) returns (ListDatasetsResponse); + // Updates an existing artifact, overwriting the stored artifact data in the underlying blob storage. + rpc UpdateArtifact (UpdateArtifactRequest) returns (UpdateArtifactResponse); + // Attempts to get or extend a reservation for the corresponding artifact. If one already exists // (ie. another entity owns the reservation) then that reservation is retrieved. // Once you acquire a reservation, you need to periodically extend the reservation with an @@ -170,6 +173,32 @@ message ListDatasetsResponse { string next_token = 2; } +/* + * Request message for updating an Artifact and overwriting its associated ArtifactData. + */ +message UpdateArtifactRequest { + // ID of dataset the artifact is associated with + DatasetID dataset = 1; + + // Either ID of artifact or name of tag to retrieve existing artifact from + oneof query_handle { + string artifact_id = 2; + string tag_name = 3; + } + + // List of data to overwrite stored artifact data with. Must contain ALL data for updated Artifact as any missing + // ArtifactData entries will be removed from the underlying blob storage and database. + repeated ArtifactData data = 4; +} + +/* + * Response message for updating an Artifact. + */ +message UpdateArtifactResponse { + // The unique ID of the artifact updated + string artifact_id = 1; +} + /* * ReservationID message that is composed of several string fields. */