From 2537302a1c19f17a0a2834fb9db1d38a4a6eeeba Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Fri, 16 Jul 2021 12:01:24 -0700 Subject: [PATCH] Add endpoint to recover workflow execution (#187) --- .../flyte/golang_test_targets/goimports | 2 +- clients/go/admin/mocks/AdminServiceClient.go | 48 + clients/go/admin/mocks/AdminServiceServer.go | 41 + gen/pb-cpp/flyteidl/admin/execution.pb.cc | 657 +++++- gen/pb-cpp/flyteidl/admin/execution.pb.h | 336 ++- gen/pb-cpp/flyteidl/core/execution.pb.cc | 52 +- gen/pb-cpp/flyteidl/core/execution.pb.h | 5 +- gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc | 152 +- gen/pb-cpp/flyteidl/service/admin.grpc.pb.h | 688 +++--- gen/pb-cpp/flyteidl/service/admin.pb.cc | 409 ++-- gen/pb-go/flyteidl/admin/execution.pb.go | 278 ++- .../flyteidl/admin/execution.pb.validate.go | 89 + gen/pb-go/flyteidl/core/execution.pb.go | 112 +- gen/pb-go/flyteidl/service/admin.pb.go | 434 ++-- gen/pb-go/flyteidl/service/admin.pb.gw.go | 41 + gen/pb-go/flyteidl/service/admin.swagger.json | 54 +- .../flyteidl/service/flyteadmin/README.md | 2 + .../service/flyteadmin/api/swagger.yaml | 52 +- .../service/flyteadmin/api_admin_service.go | 1900 +++++++++-------- .../model_admin_execution_recover_request.go | 19 + .../model_core_node_execution_phase.go | 1 + .../flyteadmin/model_core_task_template.go | 8 +- ...model_execution_metadata_execution_mode.go | 3 +- ..._task_execution_metadata_instance_class.go | 3 +- gen/pb-go/flyteidl/service/openapi.go | 6 +- .../flyteidl/admin/ExecutionOuterClass.java | 1324 +++++++++++- gen/pb-java/flyteidl/core/Execution.java | 57 +- gen/pb-java/flyteidl/service/Admin.java | 407 ++-- gen/pb-js/flyteidl.d.ts | 91 +- gen/pb-js/flyteidl.js | 188 ++ gen/pb_python/flyteidl/admin/execution_pb2.py | 125 +- gen/pb_python/flyteidl/core/execution_pb2.py | 46 +- gen/pb_python/flyteidl/service/admin_pb2.py | 69 +- .../flyteidl/service/admin_pb2_grpc.py | 21 + .../flyteidl/service/flyteadmin/README.md | 2 + .../service/flyteadmin/flyteadmin/__init__.py | 1 + .../flyteadmin/api/admin_service_api.py | 99 + .../flyteadmin/flyteadmin/models/__init__.py | 1 + .../models/admin_execution_recover_request.py | 174 ++ .../models/core_node_execution_phase.py | 1 + .../execution_metadata_execution_mode.py | 1 + .../test_admin_execution_recover_request.py | 40 + .../flyteadmin/test/test_admin_service_api.py | 7 + protos/docs/admin/admin.rst | 24 + protos/docs/core/core.rst | 1 + protos/docs/service/service.rst | 1 + protos/flyteidl/admin/execution.proto | 17 + protos/flyteidl/admin/node_execution.proto | 1 + protos/flyteidl/core/execution.proto | 1 + protos/flyteidl/service/admin.proto | 19 + 50 files changed, 5817 insertions(+), 2293 deletions(-) create mode 100644 gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_recover_request.go create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_recover_request.py create mode 100644 gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_execution_recover_request.py diff --git a/boilerplate/flyte/golang_test_targets/goimports b/boilerplate/flyte/golang_test_targets/goimports index ba0d6d871..af1829036 100755 --- a/boilerplate/flyte/golang_test_targets/goimports +++ b/boilerplate/flyte/golang_test_targets/goimports @@ -5,4 +5,4 @@ # # TO OPT OUT OF UPDATES, SEE https://github.com/flyteorg/boilerplate/blob/master/Readme.rst -goimports -w $(find . -type f -name '*.go' -not -path "./vendor/*" -not -path "./pkg/client/*") +goimports -w $(find . -type f -name '*.go' -not -path "./vendor/*" -not -path "./pkg/client/*" -not -path "./boilerplate/*") diff --git a/clients/go/admin/mocks/AdminServiceClient.go b/clients/go/admin/mocks/AdminServiceClient.go index e805f10db..dbc226d93 100644 --- a/clients/go/admin/mocks/AdminServiceClient.go +++ b/clients/go/admin/mocks/AdminServiceClient.go @@ -1793,6 +1793,54 @@ func (_m *AdminServiceClient) ListWorkflows(ctx context.Context, in *admin.Resou return r0, r1 } +type AdminServiceClient_RecoverExecution struct { + *mock.Call +} + +func (_m AdminServiceClient_RecoverExecution) Return(_a0 *admin.ExecutionCreateResponse, _a1 error) *AdminServiceClient_RecoverExecution { + return &AdminServiceClient_RecoverExecution{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceClient) OnRecoverExecution(ctx context.Context, in *admin.ExecutionRecoverRequest, opts ...grpc.CallOption) *AdminServiceClient_RecoverExecution { + c := _m.On("RecoverExecution", ctx, in, opts) + return &AdminServiceClient_RecoverExecution{Call: c} +} + +func (_m *AdminServiceClient) OnRecoverExecutionMatch(matchers ...interface{}) *AdminServiceClient_RecoverExecution { + c := _m.On("RecoverExecution", matchers...) + return &AdminServiceClient_RecoverExecution{Call: c} +} + +// RecoverExecution provides a mock function with given fields: ctx, in, opts +func (_m *AdminServiceClient) RecoverExecution(ctx context.Context, in *admin.ExecutionRecoverRequest, opts ...grpc.CallOption) (*admin.ExecutionCreateResponse, 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 *admin.ExecutionCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *admin.ExecutionRecoverRequest, ...grpc.CallOption) *admin.ExecutionCreateResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.ExecutionCreateResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ExecutionRecoverRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceClient_RegisterProject struct { *mock.Call } diff --git a/clients/go/admin/mocks/AdminServiceServer.go b/clients/go/admin/mocks/AdminServiceServer.go index 27aeecc87..49788e284 100644 --- a/clients/go/admin/mocks/AdminServiceServer.go +++ b/clients/go/admin/mocks/AdminServiceServer.go @@ -1532,6 +1532,47 @@ func (_m *AdminServiceServer) ListWorkflows(_a0 context.Context, _a1 *admin.Reso return r0, r1 } +type AdminServiceServer_RecoverExecution struct { + *mock.Call +} + +func (_m AdminServiceServer_RecoverExecution) Return(_a0 *admin.ExecutionCreateResponse, _a1 error) *AdminServiceServer_RecoverExecution { + return &AdminServiceServer_RecoverExecution{Call: _m.Call.Return(_a0, _a1)} +} + +func (_m *AdminServiceServer) OnRecoverExecution(_a0 context.Context, _a1 *admin.ExecutionRecoverRequest) *AdminServiceServer_RecoverExecution { + c := _m.On("RecoverExecution", _a0, _a1) + return &AdminServiceServer_RecoverExecution{Call: c} +} + +func (_m *AdminServiceServer) OnRecoverExecutionMatch(matchers ...interface{}) *AdminServiceServer_RecoverExecution { + c := _m.On("RecoverExecution", matchers...) + return &AdminServiceServer_RecoverExecution{Call: c} +} + +// RecoverExecution provides a mock function with given fields: _a0, _a1 +func (_m *AdminServiceServer) RecoverExecution(_a0 context.Context, _a1 *admin.ExecutionRecoverRequest) (*admin.ExecutionCreateResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *admin.ExecutionCreateResponse + if rf, ok := ret.Get(0).(func(context.Context, *admin.ExecutionRecoverRequest) *admin.ExecutionCreateResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*admin.ExecutionCreateResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *admin.ExecutionRecoverRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + type AdminServiceServer_RegisterProject struct { *mock.Call } diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.cc b/gen/pb-cpp/flyteidl/admin/execution.pb.cc index e9700ae54..13f73bcc3 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.cc +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.cc @@ -48,6 +48,10 @@ class ExecutionRelaunchRequestDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; } _ExecutionRelaunchRequest_default_instance_; +class ExecutionRecoverRequestDefaultTypeInternal { + public: + ::google::protobuf::internal::ExplicitlyConstructed _instance; +} _ExecutionRecoverRequest_default_instance_; class ExecutionCreateResponseDefaultTypeInternal { public: ::google::protobuf::internal::ExplicitlyConstructed _instance; @@ -149,6 +153,22 @@ ::google::protobuf::internal::SCCInfo<1> scc_info_ExecutionRelaunchRequest_flyte {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsExecutionRelaunchRequest_flyteidl_2fadmin_2fexecution_2eproto}, { &scc_info_WorkflowExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto.base,}}; +static void InitDefaultsExecutionRecoverRequest_flyteidl_2fadmin_2fexecution_2eproto() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + + { + void* ptr = &::flyteidl::admin::_ExecutionRecoverRequest_default_instance_; + new (ptr) ::flyteidl::admin::ExecutionRecoverRequest(); + ::google::protobuf::internal::OnShutdownDestroyMessage(ptr); + } + ::flyteidl::admin::ExecutionRecoverRequest::InitAsDefaultInstance(); +} + +::google::protobuf::internal::SCCInfo<2> scc_info_ExecutionRecoverRequest_flyteidl_2fadmin_2fexecution_2eproto = + {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsExecutionRecoverRequest_flyteidl_2fadmin_2fexecution_2eproto}, { + &scc_info_WorkflowExecutionIdentifier_flyteidl_2fcore_2fidentifier_2eproto.base, + &scc_info_ExecutionMetadata_flyteidl_2fadmin_2fexecution_2eproto.base,}}; + static void InitDefaultsExecutionCreateResponse_flyteidl_2fadmin_2fexecution_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; @@ -395,6 +415,7 @@ ::google::protobuf::internal::SCCInfo<2> scc_info_WorkflowExecutionGetDataRespon void InitDefaults_flyteidl_2fadmin_2fexecution_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_ExecutionCreateRequest_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ExecutionRelaunchRequest_flyteidl_2fadmin_2fexecution_2eproto.base); + ::google::protobuf::internal::InitSCC(&scc_info_ExecutionRecoverRequest_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_ExecutionCreateResponse_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_WorkflowExecutionGetRequest_flyteidl_2fadmin_2fexecution_2eproto.base); ::google::protobuf::internal::InitSCC(&scc_info_Execution_flyteidl_2fadmin_2fexecution_2eproto.base); @@ -412,7 +433,7 @@ void InitDefaults_flyteidl_2fadmin_2fexecution_2eproto() { ::google::protobuf::internal::InitSCC(&scc_info_WorkflowExecutionGetDataResponse_flyteidl_2fadmin_2fexecution_2eproto.base); } -::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[17]; +::google::protobuf::Metadata file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[18]; const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_flyteidl_2fadmin_2fexecution_2eproto[1]; constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_flyteidl_2fadmin_2fexecution_2eproto = nullptr; @@ -435,6 +456,14 @@ const ::google::protobuf::uint32 TableStruct_flyteidl_2fadmin_2fexecution_2eprot PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRelaunchRequest, id_), PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRelaunchRequest, name_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRecoverRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRecoverRequest, id_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRecoverRequest, name_), + PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionRecoverRequest, metadata_), + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::flyteidl::admin::ExecutionCreateResponse, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -566,26 +595,28 @@ 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::ExecutionCreateResponse)}, - { 23, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetRequest)}, - { 29, -1, sizeof(::flyteidl::admin::Execution)}, - { 37, -1, sizeof(::flyteidl::admin::ExecutionList)}, - { 44, -1, sizeof(::flyteidl::admin::LiteralMapBlob)}, - { 52, -1, sizeof(::flyteidl::admin::AbortMetadata)}, - { 59, -1, sizeof(::flyteidl::admin::ExecutionClosure)}, - { 77, -1, sizeof(::flyteidl::admin::SystemMetadata)}, - { 83, -1, sizeof(::flyteidl::admin::ExecutionMetadata)}, - { 95, -1, sizeof(::flyteidl::admin::NotificationList)}, - { 101, -1, sizeof(::flyteidl::admin::ExecutionSpec)}, - { 118, -1, sizeof(::flyteidl::admin::ExecutionTerminateRequest)}, - { 125, -1, sizeof(::flyteidl::admin::ExecutionTerminateResponse)}, - { 130, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataRequest)}, - { 136, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataResponse)}, + { 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)}, + { 85, -1, sizeof(::flyteidl::admin::SystemMetadata)}, + { 91, -1, sizeof(::flyteidl::admin::ExecutionMetadata)}, + { 103, -1, sizeof(::flyteidl::admin::NotificationList)}, + { 109, -1, sizeof(::flyteidl::admin::ExecutionSpec)}, + { 126, -1, sizeof(::flyteidl::admin::ExecutionTerminateRequest)}, + { 133, -1, sizeof(::flyteidl::admin::ExecutionTerminateResponse)}, + { 138, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataRequest)}, + { 144, -1, sizeof(::flyteidl::admin::WorkflowExecutionGetDataResponse)}, }; static ::google::protobuf::Message const * const file_default_instances[] = { reinterpret_cast(&::flyteidl::admin::_ExecutionCreateRequest_default_instance_), reinterpret_cast(&::flyteidl::admin::_ExecutionRelaunchRequest_default_instance_), + reinterpret_cast(&::flyteidl::admin::_ExecutionRecoverRequest_default_instance_), reinterpret_cast(&::flyteidl::admin::_ExecutionCreateResponse_default_instance_), reinterpret_cast(&::flyteidl::admin::_WorkflowExecutionGetRequest_default_instance_), reinterpret_cast(&::flyteidl::admin::_Execution_default_instance_), @@ -606,7 +637,7 @@ static ::google::protobuf::Message const * const file_default_instances[] = { ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto = { {}, AddDescriptors_flyteidl_2fadmin_2fexecution_2eproto, "flyteidl/admin/execution.proto", schemas, file_default_instances, TableStruct_flyteidl_2fadmin_2fexecution_2eproto::offsets, - file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto, 17, file_level_enum_descriptors_flyteidl_2fadmin_2fexecution_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fexecution_2eproto, + file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto, 18, file_level_enum_descriptors_flyteidl_2fadmin_2fexecution_2eproto, file_level_service_descriptors_flyteidl_2fadmin_2fexecution_2eproto, }; const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = @@ -623,82 +654,87 @@ const char descriptor_table_protodef_flyteidl_2fadmin_2fexecution_2eproto[] = "2\031.flyteidl.core.LiteralMap\"`\n\030Execution" "RelaunchRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.c" "ore.WorkflowExecutionIdentifier\022\014\n\004name\030" - "\003 \001(\t\"Q\n\027ExecutionCreateResponse\0226\n\002id\030\001" - " \001(\0132*.flyteidl.core.WorkflowExecutionId" - "entifier\"U\n\033WorkflowExecutionGetRequest\022" - "6\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowExec" - "utionIdentifier\"\243\001\n\tExecution\0226\n\002id\030\001 \001(" - "\0132*.flyteidl.core.WorkflowExecutionIdent" - "ifier\022+\n\004spec\030\002 \001(\0132\035.flyteidl.admin.Exe" - "cutionSpec\0221\n\007closure\030\003 \001(\0132 .flyteidl.a" - "dmin.ExecutionClosure\"M\n\rExecutionList\022-" - "\n\nexecutions\030\001 \003(\0132\031.flyteidl.admin.Exec" - "ution\022\r\n\005token\030\002 \001(\t\"X\n\016LiteralMapBlob\022/" - "\n\006values\030\001 \001(\0132\031.flyteidl.core.LiteralMa" - "pB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n\004data\"1\n\rAbortM" - "etadata\022\r\n\005cause\030\001 \001(\t\022\021\n\tprincipal\030\002 \001(" - "\t\"\353\004\n\020ExecutionClosure\0221\n\007outputs\030\001 \001(\0132" - "\036.flyteidl.admin.LiteralMapBlobH\000\022.\n\005err" - "or\030\002 \001(\0132\035.flyteidl.core.ExecutionErrorH" - "\000\022\031\n\013abort_cause\030\n \001(\tB\002\030\001H\000\0227\n\016abort_me" - "tadata\030\014 \001(\0132\035.flyteidl.admin.AbortMetad" - "ataH\000\0226\n\017computed_inputs\030\003 \001(\0132\031.flyteid" - "l.core.LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.f" - "lyteidl.core.WorkflowExecution.Phase\022.\n\n" - "started_at\030\005 \001(\0132\032.google.protobuf.Times" - "tamp\022+\n\010duration\030\006 \001(\0132\031.google.protobuf" - ".Duration\022.\n\ncreated_at\030\007 \001(\0132\032.google.p" - "rotobuf.Timestamp\022.\n\nupdated_at\030\010 \001(\0132\032." - "google.protobuf.Timestamp\0223\n\rnotificatio" - "ns\030\t \003(\0132\034.flyteidl.admin.Notification\022." - "\n\013workflow_id\030\013 \001(\0132\031.flyteidl.core.Iden" - "tifierB\017\n\routput_result\"+\n\016SystemMetadat" - "a\022\031\n\021execution_cluster\030\001 \001(\t\"\313\003\n\021Executi" - "onMetadata\022=\n\004mode\030\001 \001(\0162/.flyteidl.admi" - "n.ExecutionMetadata.ExecutionMode\022\021\n\tpri" - "ncipal\030\002 \001(\t\022\017\n\007nesting\030\003 \001(\r\0220\n\014schedul" - "ed_at\030\004 \001(\0132\032.google.protobuf.Timestamp\022" - "E\n\025parent_node_execution\030\005 \001(\0132&.flyteid" - "l.core.NodeExecutionIdentifier\022G\n\023refere" - "nce_execution\030\020 \001(\0132*.flyteidl.core.Work" - "flowExecutionIdentifier\0227\n\017system_metada" - "ta\030\021 \001(\0132\036.flyteidl.admin.SystemMetadata" - "\"X\n\rExecutionMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDUL" - "ED\020\001\022\n\n\006SYSTEM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_" - "WORKFLOW\020\004\"G\n\020NotificationList\0223\n\rnotifi" - "cations\030\001 \003(\0132\034.flyteidl.admin.Notificat" - "ion\"\260\004\n\rExecutionSpec\022.\n\013launch_plan\030\001 \001" - "(\0132\031.flyteidl.core.Identifier\022-\n\006inputs\030" - "\002 \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001\0223\n\010" - "metadata\030\003 \001(\0132!.flyteidl.admin.Executio" - "nMetadata\0229\n\rnotifications\030\005 \001(\0132 .flyte" - "idl.admin.NotificationListH\000\022\025\n\013disable_" - "all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteidl.a" - "dmin.Labels\0220\n\013annotations\030\010 \001(\0132\033.flyte" - "idl.admin.Annotations\0228\n\020security_contex" - "t\030\n \001(\0132\036.flyteidl.core.SecurityContext\022" - "/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admin.Auth" - "RoleB\002\030\001\022;\n\022quality_of_service\030\021 \001(\0132\037.f" - "lyteidl.core.QualityOfService\022\027\n\017max_par" - "allelism\030\022 \001(\005B\030\n\026notification_overrides" - "J\004\010\004\020\005\"b\n\031ExecutionTerminateRequest\0226\n\002i" - "d\030\001 \001(\0132*.flyteidl.core.WorkflowExecutio" - "nIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionT" - "erminateResponse\"Y\n\037WorkflowExecutionGet" - "DataRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core." - "WorkflowExecutionIdentifier\"\336\001\n Workflow" - "ExecutionGetDataResponse\022,\n\007outputs\030\001 \001(" - "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs" - "\030\002 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013f" - "ull_inputs\030\003 \001(\0132\031.flyteidl.core.Literal" - "Map\022/\n\014full_outputs\030\004 \001(\0132\031.flyteidl.cor" - "e.LiteralMapB7Z5github.com/flyteorg/flyt" - "eidl/gen/pb-go/flyteidl/adminb\006proto3" + "\003 \001(\t\"\224\001\n\027ExecutionRecoverRequest\0226\n\002id\030" + "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + "dentifier\022\014\n\004name\030\002 \001(\t\0223\n\010metadata\030\003 \001(" + "\0132!.flyteidl.admin.ExecutionMetadata\"Q\n\027" + "ExecutionCreateResponse\0226\n\002id\030\001 \001(\0132*.fl" + "yteidl.core.WorkflowExecutionIdentifier\"" + "U\n\033WorkflowExecutionGetRequest\0226\n\002id\030\001 \001" + "(\0132*.flyteidl.core.WorkflowExecutionIden" + "tifier\"\243\001\n\tExecution\0226\n\002id\030\001 \001(\0132*.flyte" + "idl.core.WorkflowExecutionIdentifier\022+\n\004" + "spec\030\002 \001(\0132\035.flyteidl.admin.ExecutionSpe" + "c\0221\n\007closure\030\003 \001(\0132 .flyteidl.admin.Exec" + "utionClosure\"M\n\rExecutionList\022-\n\nexecuti" + "ons\030\001 \003(\0132\031.flyteidl.admin.Execution\022\r\n\005" + "token\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\"\353\004\n\020Exe" + "cutionClosure\0221\n\007outputs\030\001 \001(\0132\036.flyteid" + "l.admin.LiteralMapBlobH\000\022.\n\005error\030\002 \001(\0132" + "\035.flyteidl.core.ExecutionErrorH\000\022\031\n\013abor" + "t_cause\030\n \001(\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 " + "\001(\0132\035.flyteidl.admin.AbortMetadataH\000\0226\n\017" + "computed_inputs\030\003 \001(\0132\031.flyteidl.core.Li" + "teralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl.c" + "ore.WorkflowExecution.Phase\022.\n\nstarted_a" + "t\030\005 \001(\0132\032.google.protobuf.Timestamp\022+\n\010d" + "uration\030\006 \001(\0132\031.google.protobuf.Duration" + "\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf.T" + "imestamp\022.\n\nupdated_at\030\010 \001(\0132\032.google.pr" + "otobuf.Timestamp\0223\n\rnotifications\030\t \003(\0132" + "\034.flyteidl.admin.Notification\022.\n\013workflo" + "w_id\030\013 \001(\0132\031.flyteidl.core.IdentifierB\017\n" + "\routput_result\"+\n\016SystemMetadata\022\031\n\021exec" + "ution_cluster\030\001 \001(\t\"\332\003\n\021ExecutionMetadat" + "a\022=\n\004mode\030\001 \001(\0162/.flyteidl.admin.Executi" + "onMetadata.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" + "_node_execution\030\005 \001(\0132&.flyteidl.core.No" + "deExecutionIdentifier\022G\n\023reference_execu" + "tion\030\020 \001(\0132*.flyteidl.core.WorkflowExecu" + "tionIdentifier\0227\n\017system_metadata\030\021 \001(\0132" + "\036.flyteidl.admin.SystemMetadata\"g\n\rExecu" + "tionMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006S" + "YSTEM\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\r" + "notifications\030\001 \003(\0132\034.flyteidl.admin.Not" + "ification\"\260\004\n\rExecutionSpec\022.\n\013launch_pl" + "an\030\001 \001(\0132\031.flyteidl.core.Identifier\022-\n\006i" + "nputs\030\002 \001(\0132\031.flyteidl.core.LiteralMapB\002" + "\030\001\0223\n\010metadata\030\003 \001(\0132!.flyteidl.admin.Ex" + "ecutionMetadata\0229\n\rnotifications\030\005 \001(\0132 " + ".flyteidl.admin.NotificationListH\000\022\025\n\013di" + "sable_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyt" + "eidl.admin.Labels\0220\n\013annotations\030\010 \001(\0132\033" + ".flyteidl.admin.Annotations\0228\n\020security_" + "context\030\n \001(\0132\036.flyteidl.core.SecurityCo" + "ntext\022/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admi" + "n.AuthRoleB\002\030\001\022;\n\022quality_of_service\030\021 \001" + "(\0132\037.flyteidl.core.QualityOfService\022\027\n\017m" + "ax_parallelism\030\022 \001(\005B\030\n\026notification_ove" + "rridesJ\004\010\004\020\005\"b\n\031ExecutionTerminateReques" + "t\0226\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowEx" + "ecutionIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032Exec" + "utionTerminateResponse\"Y\n\037WorkflowExecut" + "ionGetDataRequest\0226\n\002id\030\001 \001(\0132*.flyteidl" + ".core.WorkflowExecutionIdentifier\"\336\001\n Wo" + "rkflowExecutionGetDataResponse\022,\n\007output" + "s\030\001 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022+\n\006" + "inputs\030\002 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030" + "\001\022.\n\013full_inputs\030\003 \001(\0132\031.flyteidl.core.L" + "iteralMap\022/\n\014full_outputs\030\004 \001(\0132\031.flytei" + "dl.core.LiteralMapB7Z5github.com/flyteor" + "g/flyteidl/gen/pb-go/flyteidl/adminb\006pro" + "to3" ; ::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, 3357, + "flyteidl/admin/execution.proto", &assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto, 3523, }; void AddDescriptors_flyteidl_2fadmin_2fexecution_2eproto() { @@ -730,6 +766,7 @@ bool ExecutionMetadata_ExecutionMode_IsValid(int value) { case 2: case 3: case 4: + case 5: return true; default: return false; @@ -742,6 +779,7 @@ const ExecutionMetadata_ExecutionMode ExecutionMetadata::SCHEDULED; const ExecutionMetadata_ExecutionMode ExecutionMetadata::SYSTEM; const ExecutionMetadata_ExecutionMode ExecutionMetadata::RELAUNCH; const ExecutionMetadata_ExecutionMode ExecutionMetadata::CHILD_WORKFLOW; +const ExecutionMetadata_ExecutionMode ExecutionMetadata::RECOVERED; const ExecutionMetadata_ExecutionMode ExecutionMetadata::ExecutionMode_MIN; const ExecutionMetadata_ExecutionMode ExecutionMetadata::ExecutionMode_MAX; const int ExecutionMetadata::ExecutionMode_ARRAYSIZE; @@ -1701,6 +1739,444 @@ ::google::protobuf::Metadata ExecutionRelaunchRequest::GetMetadata() const { } +// =================================================================== + +void ExecutionRecoverRequest::InitAsDefaultInstance() { + ::flyteidl::admin::_ExecutionRecoverRequest_default_instance_._instance.get_mutable()->id_ = const_cast< ::flyteidl::core::WorkflowExecutionIdentifier*>( + ::flyteidl::core::WorkflowExecutionIdentifier::internal_default_instance()); + ::flyteidl::admin::_ExecutionRecoverRequest_default_instance_._instance.get_mutable()->metadata_ = const_cast< ::flyteidl::admin::ExecutionMetadata*>( + ::flyteidl::admin::ExecutionMetadata::internal_default_instance()); +} +class ExecutionRecoverRequest::HasBitSetters { + public: + static const ::flyteidl::core::WorkflowExecutionIdentifier& id(const ExecutionRecoverRequest* msg); + static const ::flyteidl::admin::ExecutionMetadata& metadata(const ExecutionRecoverRequest* msg); +}; + +const ::flyteidl::core::WorkflowExecutionIdentifier& +ExecutionRecoverRequest::HasBitSetters::id(const ExecutionRecoverRequest* msg) { + return *msg->id_; +} +const ::flyteidl::admin::ExecutionMetadata& +ExecutionRecoverRequest::HasBitSetters::metadata(const ExecutionRecoverRequest* msg) { + return *msg->metadata_; +} +void ExecutionRecoverRequest::clear_id() { + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; +} +#if !defined(_MSC_VER) || _MSC_VER >= 1900 +const int ExecutionRecoverRequest::kIdFieldNumber; +const int ExecutionRecoverRequest::kNameFieldNumber; +const int ExecutionRecoverRequest::kMetadataFieldNumber; +#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 + +ExecutionRecoverRequest::ExecutionRecoverRequest() + : ::google::protobuf::Message(), _internal_metadata_(nullptr) { + SharedCtor(); + // @@protoc_insertion_point(constructor:flyteidl.admin.ExecutionRecoverRequest) +} +ExecutionRecoverRequest::ExecutionRecoverRequest(const ExecutionRecoverRequest& from) + : ::google::protobuf::Message(), + _internal_metadata_(nullptr) { + _internal_metadata_.MergeFrom(from._internal_metadata_); + name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (from.name().size() > 0) { + name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_); + } + if (from.has_id()) { + id_ = new ::flyteidl::core::WorkflowExecutionIdentifier(*from.id_); + } else { + id_ = nullptr; + } + if (from.has_metadata()) { + metadata_ = new ::flyteidl::admin::ExecutionMetadata(*from.metadata_); + } else { + metadata_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:flyteidl.admin.ExecutionRecoverRequest) +} + +void ExecutionRecoverRequest::SharedCtor() { + ::google::protobuf::internal::InitSCC( + &scc_info_ExecutionRecoverRequest_flyteidl_2fadmin_2fexecution_2eproto.base); + name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + ::memset(&id_, 0, static_cast( + reinterpret_cast(&metadata_) - + reinterpret_cast(&id_)) + sizeof(metadata_)); +} + +ExecutionRecoverRequest::~ExecutionRecoverRequest() { + // @@protoc_insertion_point(destructor:flyteidl.admin.ExecutionRecoverRequest) + SharedDtor(); +} + +void ExecutionRecoverRequest::SharedDtor() { + name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (this != internal_default_instance()) delete id_; + if (this != internal_default_instance()) delete metadata_; +} + +void ExecutionRecoverRequest::SetCachedSize(int size) const { + _cached_size_.Set(size); +} +const ExecutionRecoverRequest& ExecutionRecoverRequest::default_instance() { + ::google::protobuf::internal::InitSCC(&::scc_info_ExecutionRecoverRequest_flyteidl_2fadmin_2fexecution_2eproto.base); + return *internal_default_instance(); +} + + +void ExecutionRecoverRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:flyteidl.admin.ExecutionRecoverRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); + if (GetArenaNoVirtual() == nullptr && id_ != nullptr) { + delete id_; + } + id_ = nullptr; + if (GetArenaNoVirtual() == nullptr && metadata_ != nullptr) { + delete metadata_; + } + metadata_ = nullptr; + _internal_metadata_.Clear(); +} + +#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER +const char* ExecutionRecoverRequest::_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) { + // .flyteidl.core.WorkflowExecutionIdentifier id = 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 = ::flyteidl::core::WorkflowExecutionIdentifier::_InternalParse; + object = msg->mutable_id(); + 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 name = 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("flyteidl.admin.ExecutionRecoverRequest.name"); + object = msg->mutable_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; + } + // .flyteidl.admin.ExecutionMetadata metadata = 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); + parser_till_end = ::flyteidl::admin::ExecutionMetadata::_InternalParse; + object = msg->mutable_metadata(); + 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; + } + 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 ExecutionRecoverRequest::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:flyteidl.admin.ExecutionRecoverRequest) + 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)) { + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + case 1: { + if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_id())); + } else { + goto handle_unusual; + } + break; + } + + // string name = 2; + case 2: { + if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->name().data(), static_cast(this->name().length()), + ::google::protobuf::internal::WireFormatLite::PARSE, + "flyteidl.admin.ExecutionRecoverRequest.name")); + } else { + goto handle_unusual; + } + break; + } + + // .flyteidl.admin.ExecutionMetadata metadata = 3; + case 3: { + if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessage( + input, mutable_metadata())); + } 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:flyteidl.admin.ExecutionRecoverRequest) + return true; +failure: + // @@protoc_insertion_point(parse_failure:flyteidl.admin.ExecutionRecoverRequest) + return false; +#undef DO_ +} +#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER + +void ExecutionRecoverRequest::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // @@protoc_insertion_point(serialize_start:flyteidl.admin.ExecutionRecoverRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + if (this->has_id()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 1, HasBitSetters::id(this), output); + } + + // string name = 2; + if (this->name().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->name().data(), static_cast(this->name().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.ExecutionRecoverRequest.name"); + ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( + 2, this->name(), output); + } + + // .flyteidl.admin.ExecutionMetadata metadata = 3; + if (this->has_metadata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, HasBitSetters::metadata(this), output); + } + + if (_internal_metadata_.have_unknown_fields()) { + ::google::protobuf::internal::WireFormat::SerializeUnknownFields( + _internal_metadata_.unknown_fields(), output); + } + // @@protoc_insertion_point(serialize_end:flyteidl.admin.ExecutionRecoverRequest) +} + +::google::protobuf::uint8* ExecutionRecoverRequest::InternalSerializeWithCachedSizesToArray( + ::google::protobuf::uint8* target) const { + // @@protoc_insertion_point(serialize_to_array_start:flyteidl.admin.ExecutionRecoverRequest) + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + if (this->has_id()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 1, HasBitSetters::id(this), target); + } + + // string name = 2; + if (this->name().size() > 0) { + ::google::protobuf::internal::WireFormatLite::VerifyUtf8String( + this->name().data(), static_cast(this->name().length()), + ::google::protobuf::internal::WireFormatLite::SERIALIZE, + "flyteidl.admin.ExecutionRecoverRequest.name"); + target = + ::google::protobuf::internal::WireFormatLite::WriteStringToArray( + 2, this->name(), target); + } + + // .flyteidl.admin.ExecutionMetadata metadata = 3; + if (this->has_metadata()) { + target = ::google::protobuf::internal::WireFormatLite:: + InternalWriteMessageToArray( + 3, HasBitSetters::metadata(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:flyteidl.admin.ExecutionRecoverRequest) + return target; +} + +size_t ExecutionRecoverRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:flyteidl.admin.ExecutionRecoverRequest) + 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; + + // string name = 2; + if (this->name().size() > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + if (this->has_id()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *id_); + } + + // .flyteidl.admin.ExecutionMetadata metadata = 3; + if (this->has_metadata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSize( + *metadata_); + } + + int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void ExecutionRecoverRequest::MergeFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:flyteidl.admin.ExecutionRecoverRequest) + GOOGLE_DCHECK_NE(&from, this); + const ExecutionRecoverRequest* source = + ::google::protobuf::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:flyteidl.admin.ExecutionRecoverRequest) + ::google::protobuf::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:flyteidl.admin.ExecutionRecoverRequest) + MergeFrom(*source); + } +} + +void ExecutionRecoverRequest::MergeFrom(const ExecutionRecoverRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:flyteidl.admin.ExecutionRecoverRequest) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom(from._internal_metadata_); + ::google::protobuf::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.name().size() > 0) { + + name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_); + } + if (from.has_id()) { + mutable_id()->::flyteidl::core::WorkflowExecutionIdentifier::MergeFrom(from.id()); + } + if (from.has_metadata()) { + mutable_metadata()->::flyteidl::admin::ExecutionMetadata::MergeFrom(from.metadata()); + } +} + +void ExecutionRecoverRequest::CopyFrom(const ::google::protobuf::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:flyteidl.admin.ExecutionRecoverRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void ExecutionRecoverRequest::CopyFrom(const ExecutionRecoverRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:flyteidl.admin.ExecutionRecoverRequest) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ExecutionRecoverRequest::IsInitialized() const { + return true; +} + +void ExecutionRecoverRequest::Swap(ExecutionRecoverRequest* other) { + if (other == this) return; + InternalSwap(other); +} +void ExecutionRecoverRequest::InternalSwap(ExecutionRecoverRequest* other) { + using std::swap; + _internal_metadata_.Swap(&other->_internal_metadata_); + name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(), + GetArenaNoVirtual()); + swap(id_, other->id_); + swap(metadata_, other->metadata_); +} + +::google::protobuf::Metadata ExecutionRecoverRequest::GetMetadata() const { + ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_flyteidl_2fadmin_2fexecution_2eproto); + return ::file_level_metadata_flyteidl_2fadmin_2fexecution_2eproto[kIndexInFileMessages]; +} + + // =================================================================== void ExecutionCreateResponse::InitAsDefaultInstance() { @@ -8622,6 +9098,9 @@ template<> PROTOBUF_NOINLINE ::flyteidl::admin::ExecutionCreateRequest* Arena::C template<> PROTOBUF_NOINLINE ::flyteidl::admin::ExecutionRelaunchRequest* Arena::CreateMaybeMessage< ::flyteidl::admin::ExecutionRelaunchRequest >(Arena* arena) { return Arena::CreateInternal< ::flyteidl::admin::ExecutionRelaunchRequest >(arena); } +template<> PROTOBUF_NOINLINE ::flyteidl::admin::ExecutionRecoverRequest* Arena::CreateMaybeMessage< ::flyteidl::admin::ExecutionRecoverRequest >(Arena* arena) { + return Arena::CreateInternal< ::flyteidl::admin::ExecutionRecoverRequest >(arena); +} template<> PROTOBUF_NOINLINE ::flyteidl::admin::ExecutionCreateResponse* Arena::CreateMaybeMessage< ::flyteidl::admin::ExecutionCreateResponse >(Arena* arena) { return Arena::CreateInternal< ::flyteidl::admin::ExecutionCreateResponse >(arena); } diff --git a/gen/pb-cpp/flyteidl/admin/execution.pb.h b/gen/pb-cpp/flyteidl/admin/execution.pb.h index 35d2a17b4..3303cc0e6 100644 --- a/gen/pb-cpp/flyteidl/admin/execution.pb.h +++ b/gen/pb-cpp/flyteidl/admin/execution.pb.h @@ -49,7 +49,7 @@ struct TableStruct_flyteidl_2fadmin_2fexecution_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[17] + static const ::google::protobuf::internal::ParseTable schema[18] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::google::protobuf::internal::FieldMetadata field_metadata[]; static const ::google::protobuf::internal::SerializationTable serialization_table[]; @@ -79,6 +79,9 @@ extern ExecutionListDefaultTypeInternal _ExecutionList_default_instance_; class ExecutionMetadata; class ExecutionMetadataDefaultTypeInternal; extern ExecutionMetadataDefaultTypeInternal _ExecutionMetadata_default_instance_; +class ExecutionRecoverRequest; +class ExecutionRecoverRequestDefaultTypeInternal; +extern ExecutionRecoverRequestDefaultTypeInternal _ExecutionRecoverRequest_default_instance_; class ExecutionRelaunchRequest; class ExecutionRelaunchRequestDefaultTypeInternal; extern ExecutionRelaunchRequestDefaultTypeInternal _ExecutionRelaunchRequest_default_instance_; @@ -120,6 +123,7 @@ template<> ::flyteidl::admin::ExecutionCreateRequest* Arena::CreateMaybeMessage< template<> ::flyteidl::admin::ExecutionCreateResponse* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionCreateResponse>(Arena*); template<> ::flyteidl::admin::ExecutionList* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionList>(Arena*); template<> ::flyteidl::admin::ExecutionMetadata* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionMetadata>(Arena*); +template<> ::flyteidl::admin::ExecutionRecoverRequest* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionRecoverRequest>(Arena*); template<> ::flyteidl::admin::ExecutionRelaunchRequest* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionRelaunchRequest>(Arena*); template<> ::flyteidl::admin::ExecutionSpec* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionSpec>(Arena*); template<> ::flyteidl::admin::ExecutionTerminateRequest* Arena::CreateMaybeMessage<::flyteidl::admin::ExecutionTerminateRequest>(Arena*); @@ -141,12 +145,13 @@ enum ExecutionMetadata_ExecutionMode { ExecutionMetadata_ExecutionMode_SYSTEM = 2, ExecutionMetadata_ExecutionMode_RELAUNCH = 3, ExecutionMetadata_ExecutionMode_CHILD_WORKFLOW = 4, + ExecutionMetadata_ExecutionMode_RECOVERED = 5, ExecutionMetadata_ExecutionMode_ExecutionMetadata_ExecutionMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(), ExecutionMetadata_ExecutionMode_ExecutionMetadata_ExecutionMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max() }; bool ExecutionMetadata_ExecutionMode_IsValid(int value); const ExecutionMetadata_ExecutionMode ExecutionMetadata_ExecutionMode_ExecutionMode_MIN = ExecutionMetadata_ExecutionMode_MANUAL; -const ExecutionMetadata_ExecutionMode ExecutionMetadata_ExecutionMode_ExecutionMode_MAX = ExecutionMetadata_ExecutionMode_CHILD_WORKFLOW; +const ExecutionMetadata_ExecutionMode ExecutionMetadata_ExecutionMode_ExecutionMode_MAX = ExecutionMetadata_ExecutionMode_RECOVERED; const int ExecutionMetadata_ExecutionMode_ExecutionMode_ARRAYSIZE = ExecutionMetadata_ExecutionMode_ExecutionMode_MAX + 1; const ::google::protobuf::EnumDescriptor* ExecutionMetadata_ExecutionMode_descriptor(); @@ -461,6 +466,146 @@ class ExecutionRelaunchRequest final : }; // ------------------------------------------------------------------- +class ExecutionRecoverRequest final : + public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.ExecutionRecoverRequest) */ { + public: + ExecutionRecoverRequest(); + virtual ~ExecutionRecoverRequest(); + + ExecutionRecoverRequest(const ExecutionRecoverRequest& from); + + inline ExecutionRecoverRequest& operator=(const ExecutionRecoverRequest& from) { + CopyFrom(from); + return *this; + } + #if LANG_CXX11 + ExecutionRecoverRequest(ExecutionRecoverRequest&& from) noexcept + : ExecutionRecoverRequest() { + *this = ::std::move(from); + } + + inline ExecutionRecoverRequest& operator=(ExecutionRecoverRequest&& 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 ExecutionRecoverRequest& default_instance(); + + static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY + static inline const ExecutionRecoverRequest* internal_default_instance() { + return reinterpret_cast( + &_ExecutionRecoverRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 2; + + void Swap(ExecutionRecoverRequest* other); + friend void swap(ExecutionRecoverRequest& a, ExecutionRecoverRequest& b) { + a.Swap(&b); + } + + // implements Message ---------------------------------------------- + + inline ExecutionRecoverRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + ExecutionRecoverRequest* 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 ExecutionRecoverRequest& from); + void MergeFrom(const ExecutionRecoverRequest& 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(ExecutionRecoverRequest* 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 name = 2; + void clear_name(); + static const int kNameFieldNumber = 2; + const ::std::string& name() const; + void set_name(const ::std::string& value); + #if LANG_CXX11 + void set_name(::std::string&& value); + #endif + void set_name(const char* value); + void set_name(const char* value, size_t size); + ::std::string* mutable_name(); + ::std::string* release_name(); + void set_allocated_name(::std::string* name); + + // .flyteidl.core.WorkflowExecutionIdentifier id = 1; + bool has_id() const; + void clear_id(); + static const int kIdFieldNumber = 1; + const ::flyteidl::core::WorkflowExecutionIdentifier& id() const; + ::flyteidl::core::WorkflowExecutionIdentifier* release_id(); + ::flyteidl::core::WorkflowExecutionIdentifier* mutable_id(); + void set_allocated_id(::flyteidl::core::WorkflowExecutionIdentifier* id); + + // .flyteidl.admin.ExecutionMetadata metadata = 3; + bool has_metadata() const; + void clear_metadata(); + static const int kMetadataFieldNumber = 3; + const ::flyteidl::admin::ExecutionMetadata& metadata() const; + ::flyteidl::admin::ExecutionMetadata* release_metadata(); + ::flyteidl::admin::ExecutionMetadata* mutable_metadata(); + void set_allocated_metadata(::flyteidl::admin::ExecutionMetadata* metadata); + + // @@protoc_insertion_point(class_scope:flyteidl.admin.ExecutionRecoverRequest) + private: + class HasBitSetters; + + ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; + ::google::protobuf::internal::ArenaStringPtr name_; + ::flyteidl::core::WorkflowExecutionIdentifier* id_; + ::flyteidl::admin::ExecutionMetadata* metadata_; + mutable ::google::protobuf::internal::CachedSize _cached_size_; + friend struct ::TableStruct_flyteidl_2fadmin_2fexecution_2eproto; +}; +// ------------------------------------------------------------------- + class ExecutionCreateResponse final : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:flyteidl.admin.ExecutionCreateResponse) */ { public: @@ -499,7 +644,7 @@ class ExecutionCreateResponse final : &_ExecutionCreateResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 2; + 3; void Swap(ExecutionCreateResponse* other); friend void swap(ExecutionCreateResponse& a, ExecutionCreateResponse& b) { @@ -614,7 +759,7 @@ class WorkflowExecutionGetRequest final : &_WorkflowExecutionGetRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 3; + 4; void Swap(WorkflowExecutionGetRequest* other); friend void swap(WorkflowExecutionGetRequest& a, WorkflowExecutionGetRequest& b) { @@ -729,7 +874,7 @@ class Execution final : &_Execution_default_instance_); } static constexpr int kIndexInFileMessages = - 4; + 5; void Swap(Execution* other); friend void swap(Execution& a, Execution& b) { @@ -864,7 +1009,7 @@ class ExecutionList final : &_ExecutionList_default_instance_); } static constexpr int kIndexInFileMessages = - 5; + 6; void Swap(ExecutionList* other); friend void swap(ExecutionList& a, ExecutionList& b) { @@ -1003,7 +1148,7 @@ class LiteralMapBlob final : &_LiteralMapBlob_default_instance_); } static constexpr int kIndexInFileMessages = - 6; + 7; void Swap(LiteralMapBlob* other); friend void swap(LiteralMapBlob& a, LiteralMapBlob& b) { @@ -1148,7 +1293,7 @@ class AbortMetadata final : &_AbortMetadata_default_instance_); } static constexpr int kIndexInFileMessages = - 7; + 8; void Swap(AbortMetadata* other); friend void swap(AbortMetadata& a, AbortMetadata& b) { @@ -1291,7 +1436,7 @@ class ExecutionClosure final : &_ExecutionClosure_default_instance_); } static constexpr int kIndexInFileMessages = - 8; + 9; void Swap(ExecutionClosure* other); friend void swap(ExecutionClosure& a, ExecutionClosure& b) { @@ -1538,7 +1683,7 @@ class SystemMetadata final : &_SystemMetadata_default_instance_); } static constexpr int kIndexInFileMessages = - 9; + 10; void Swap(SystemMetadata* other); friend void swap(SystemMetadata& a, SystemMetadata& b) { @@ -1658,7 +1803,7 @@ class ExecutionMetadata final : &_ExecutionMetadata_default_instance_); } static constexpr int kIndexInFileMessages = - 10; + 11; void Swap(ExecutionMetadata* other); friend void swap(ExecutionMetadata& a, ExecutionMetadata& b) { @@ -1724,6 +1869,8 @@ class ExecutionMetadata final : ExecutionMetadata_ExecutionMode_RELAUNCH; static const ExecutionMode CHILD_WORKFLOW = ExecutionMetadata_ExecutionMode_CHILD_WORKFLOW; + static const ExecutionMode RECOVERED = + ExecutionMetadata_ExecutionMode_RECOVERED; static inline bool ExecutionMode_IsValid(int value) { return ExecutionMetadata_ExecutionMode_IsValid(value); } @@ -1864,7 +2011,7 @@ class NotificationList final : &_NotificationList_default_instance_); } static constexpr int kIndexInFileMessages = - 11; + 12; void Swap(NotificationList* other); friend void swap(NotificationList& a, NotificationList& b) { @@ -1988,7 +2135,7 @@ class ExecutionSpec final : &_ExecutionSpec_default_instance_); } static constexpr int kIndexInFileMessages = - 12; + 13; void Swap(ExecutionSpec* other); friend void swap(ExecutionSpec& a, ExecutionSpec& b) { @@ -2212,7 +2359,7 @@ class ExecutionTerminateRequest final : &_ExecutionTerminateRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 13; + 14; void Swap(ExecutionTerminateRequest* other); friend void swap(ExecutionTerminateRequest& a, ExecutionTerminateRequest& b) { @@ -2342,7 +2489,7 @@ class ExecutionTerminateResponse final : &_ExecutionTerminateResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 14; + 15; void Swap(ExecutionTerminateResponse* other); friend void swap(ExecutionTerminateResponse& a, ExecutionTerminateResponse& b) { @@ -2447,7 +2594,7 @@ class WorkflowExecutionGetDataRequest final : &_WorkflowExecutionGetDataRequest_default_instance_); } static constexpr int kIndexInFileMessages = - 15; + 16; void Swap(WorkflowExecutionGetDataRequest* other); friend void swap(WorkflowExecutionGetDataRequest& a, WorkflowExecutionGetDataRequest& b) { @@ -2562,7 +2709,7 @@ class WorkflowExecutionGetDataResponse final : &_WorkflowExecutionGetDataResponse_default_instance_); } static constexpr int kIndexInFileMessages = - 16; + 17; void Swap(WorkflowExecutionGetDataResponse* other); friend void swap(WorkflowExecutionGetDataResponse& a, WorkflowExecutionGetDataResponse& b) { @@ -3037,6 +3184,159 @@ inline void ExecutionRelaunchRequest::set_allocated_name(::std::string* name) { // ------------------------------------------------------------------- +// ExecutionRecoverRequest + +// .flyteidl.core.WorkflowExecutionIdentifier id = 1; +inline bool ExecutionRecoverRequest::has_id() const { + return this != internal_default_instance() && id_ != nullptr; +} +inline const ::flyteidl::core::WorkflowExecutionIdentifier& ExecutionRecoverRequest::id() const { + const ::flyteidl::core::WorkflowExecutionIdentifier* p = id_; + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionRecoverRequest.id) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::core::_WorkflowExecutionIdentifier_default_instance_); +} +inline ::flyteidl::core::WorkflowExecutionIdentifier* ExecutionRecoverRequest::release_id() { + // @@protoc_insertion_point(field_release:flyteidl.admin.ExecutionRecoverRequest.id) + + ::flyteidl::core::WorkflowExecutionIdentifier* temp = id_; + id_ = nullptr; + return temp; +} +inline ::flyteidl::core::WorkflowExecutionIdentifier* ExecutionRecoverRequest::mutable_id() { + + if (id_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::core::WorkflowExecutionIdentifier>(GetArenaNoVirtual()); + id_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.ExecutionRecoverRequest.id) + return id_; +} +inline void ExecutionRecoverRequest::set_allocated_id(::flyteidl::core::WorkflowExecutionIdentifier* id) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_); + } + if (id) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + id = ::google::protobuf::internal::GetOwnedMessage( + message_arena, id, submessage_arena); + } + + } else { + + } + id_ = id; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionRecoverRequest.id) +} + +// string name = 2; +inline void ExecutionRecoverRequest::clear_name() { + name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline const ::std::string& ExecutionRecoverRequest::name() const { + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionRecoverRequest.name) + return name_.GetNoArena(); +} +inline void ExecutionRecoverRequest::set_name(const ::std::string& value) { + + name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); + // @@protoc_insertion_point(field_set:flyteidl.admin.ExecutionRecoverRequest.name) +} +#if LANG_CXX11 +inline void ExecutionRecoverRequest::set_name(::std::string&& value) { + + name_.SetNoArena( + &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value)); + // @@protoc_insertion_point(field_set_rvalue:flyteidl.admin.ExecutionRecoverRequest.name) +} +#endif +inline void ExecutionRecoverRequest::set_name(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); + // @@protoc_insertion_point(field_set_char:flyteidl.admin.ExecutionRecoverRequest.name) +} +inline void ExecutionRecoverRequest::set_name(const char* value, size_t size) { + + name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), + ::std::string(reinterpret_cast(value), size)); + // @@protoc_insertion_point(field_set_pointer:flyteidl.admin.ExecutionRecoverRequest.name) +} +inline ::std::string* ExecutionRecoverRequest::mutable_name() { + + // @@protoc_insertion_point(field_mutable:flyteidl.admin.ExecutionRecoverRequest.name) + return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline ::std::string* ExecutionRecoverRequest::release_name() { + // @@protoc_insertion_point(field_release:flyteidl.admin.ExecutionRecoverRequest.name) + + return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); +} +inline void ExecutionRecoverRequest::set_allocated_name(::std::string* name) { + if (name != nullptr) { + + } else { + + } + name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name); + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionRecoverRequest.name) +} + +// .flyteidl.admin.ExecutionMetadata metadata = 3; +inline bool ExecutionRecoverRequest::has_metadata() const { + return this != internal_default_instance() && metadata_ != nullptr; +} +inline void ExecutionRecoverRequest::clear_metadata() { + if (GetArenaNoVirtual() == nullptr && metadata_ != nullptr) { + delete metadata_; + } + metadata_ = nullptr; +} +inline const ::flyteidl::admin::ExecutionMetadata& ExecutionRecoverRequest::metadata() const { + const ::flyteidl::admin::ExecutionMetadata* p = metadata_; + // @@protoc_insertion_point(field_get:flyteidl.admin.ExecutionRecoverRequest.metadata) + return p != nullptr ? *p : *reinterpret_cast( + &::flyteidl::admin::_ExecutionMetadata_default_instance_); +} +inline ::flyteidl::admin::ExecutionMetadata* ExecutionRecoverRequest::release_metadata() { + // @@protoc_insertion_point(field_release:flyteidl.admin.ExecutionRecoverRequest.metadata) + + ::flyteidl::admin::ExecutionMetadata* temp = metadata_; + metadata_ = nullptr; + return temp; +} +inline ::flyteidl::admin::ExecutionMetadata* ExecutionRecoverRequest::mutable_metadata() { + + if (metadata_ == nullptr) { + auto* p = CreateMaybeMessage<::flyteidl::admin::ExecutionMetadata>(GetArenaNoVirtual()); + metadata_ = p; + } + // @@protoc_insertion_point(field_mutable:flyteidl.admin.ExecutionRecoverRequest.metadata) + return metadata_; +} +inline void ExecutionRecoverRequest::set_allocated_metadata(::flyteidl::admin::ExecutionMetadata* metadata) { + ::google::protobuf::Arena* message_arena = GetArenaNoVirtual(); + if (message_arena == nullptr) { + delete metadata_; + } + if (metadata) { + ::google::protobuf::Arena* submessage_arena = nullptr; + if (message_arena != submessage_arena) { + metadata = ::google::protobuf::internal::GetOwnedMessage( + message_arena, metadata, submessage_arena); + } + + } else { + + } + metadata_ = metadata; + // @@protoc_insertion_point(field_set_allocated:flyteidl.admin.ExecutionRecoverRequest.metadata) +} + +// ------------------------------------------------------------------- + // ExecutionCreateResponse // .flyteidl.core.WorkflowExecutionIdentifier id = 1; @@ -5355,6 +5655,8 @@ inline void WorkflowExecutionGetDataResponse::set_allocated_full_outputs(::flyte // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/gen/pb-cpp/flyteidl/core/execution.pb.cc b/gen/pb-cpp/flyteidl/core/execution.pb.cc index 97bb1bcd3..00cd97a15 100644 --- a/gen/pb-cpp/flyteidl/core/execution.pb.cc +++ b/gen/pb-cpp/flyteidl/core/execution.pb.cc @@ -248,38 +248,38 @@ const char descriptor_table_protodef_flyteidl_2fcore_2fexecution_2eproto[] = "\001\n\021WorkflowExecution\"\203\001\n\005Phase\022\r\n\tUNDEFI" "NED\020\000\022\n\n\006QUEUED\020\001\022\013\n\007RUNNING\020\002\022\016\n\nSUCCEE" "DING\020\003\022\r\n\tSUCCEEDED\020\004\022\013\n\007FAILING\020\005\022\n\n\006FA" - "ILED\020\006\022\013\n\007ABORTED\020\007\022\r\n\tTIMED_OUT\020\010\"\247\001\n\rN" - "odeExecution\"\225\001\n\005Phase\022\r\n\tUNDEFINED\020\000\022\n\n" + "ILED\020\006\022\013\n\007ABORTED\020\007\022\r\n\tTIMED_OUT\020\010\"\266\001\n\rN" + "odeExecution\"\244\001\n\005Phase\022\r\n\tUNDEFINED\020\000\022\n\n" "\006QUEUED\020\001\022\013\n\007RUNNING\020\002\022\r\n\tSUCCEEDED\020\003\022\013\n" "\007FAILING\020\004\022\n\n\006FAILED\020\005\022\013\n\007ABORTED\020\006\022\013\n\007S" "KIPPED\020\007\022\r\n\tTIMED_OUT\020\010\022\023\n\017DYNAMIC_RUNNI" - "NG\020\t\"\226\001\n\rTaskExecution\"\204\001\n\005Phase\022\r\n\tUNDE" - "FINED\020\000\022\n\n\006QUEUED\020\001\022\013\n\007RUNNING\020\002\022\r\n\tSUCC" - "EEDED\020\003\022\013\n\007ABORTED\020\004\022\n\n\006FAILED\020\005\022\020\n\014INIT" - "IALIZING\020\006\022\031\n\025WAITING_FOR_RESOURCES\020\007\"\251\001" - "\n\016ExecutionError\022\014\n\004code\030\001 \001(\t\022\017\n\007messag" - "e\030\002 \001(\t\022\021\n\terror_uri\030\003 \001(\t\0225\n\004kind\030\004 \001(\016" - "2\'.flyteidl.core.ExecutionError.ErrorKin" - "d\".\n\tErrorKind\022\013\n\007UNKNOWN\020\000\022\010\n\004USER\020\001\022\n\n" - "\006SYSTEM\020\002\"\273\001\n\007TaskLog\022\013\n\003uri\030\001 \001(\t\022\014\n\004na" - "me\030\002 \001(\t\022<\n\016message_format\030\003 \001(\0162$.flyte" - "idl.core.TaskLog.MessageFormat\022&\n\003ttl\030\004 " - "\001(\0132\031.google.protobuf.Duration\"/\n\rMessag" - "eFormat\022\013\n\007UNKNOWN\020\000\022\007\n\003CSV\020\001\022\010\n\004JSON\020\002\"" - "J\n\024QualityOfServiceSpec\0222\n\017queueing_budg" - "et\030\001 \001(\0132\031.google.protobuf.Duration\"\302\001\n\020" - "QualityOfService\0224\n\004tier\030\001 \001(\0162$.flyteid" - "l.core.QualityOfService.TierH\000\0223\n\004spec\030\002" - " \001(\0132#.flyteidl.core.QualityOfServiceSpe" - "cH\000\"4\n\004Tier\022\r\n\tUNDEFINED\020\000\022\010\n\004HIGH\020\001\022\n\n\006" - "MEDIUM\020\002\022\007\n\003LOW\020\003B\r\n\013designationB6Z4gith" - "ub.com/flyteorg/flyteidl/gen/pb-go/flyte" - "idl/coreb\006proto3" + "NG\020\t\022\r\n\tRECOVERED\020\n\"\226\001\n\rTaskExecution\"\204\001" + "\n\005Phase\022\r\n\tUNDEFINED\020\000\022\n\n\006QUEUED\020\001\022\013\n\007RU" + "NNING\020\002\022\r\n\tSUCCEEDED\020\003\022\013\n\007ABORTED\020\004\022\n\n\006F" + "AILED\020\005\022\020\n\014INITIALIZING\020\006\022\031\n\025WAITING_FOR" + "_RESOURCES\020\007\"\251\001\n\016ExecutionError\022\014\n\004code\030" + "\001 \001(\t\022\017\n\007message\030\002 \001(\t\022\021\n\terror_uri\030\003 \001(" + "\t\0225\n\004kind\030\004 \001(\0162\'.flyteidl.core.Executio" + "nError.ErrorKind\".\n\tErrorKind\022\013\n\007UNKNOWN" + "\020\000\022\010\n\004USER\020\001\022\n\n\006SYSTEM\020\002\"\273\001\n\007TaskLog\022\013\n\003" + "uri\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022<\n\016message_forma" + "t\030\003 \001(\0162$.flyteidl.core.TaskLog.MessageF" + "ormat\022&\n\003ttl\030\004 \001(\0132\031.google.protobuf.Dur" + "ation\"/\n\rMessageFormat\022\013\n\007UNKNOWN\020\000\022\007\n\003C" + "SV\020\001\022\010\n\004JSON\020\002\"J\n\024QualityOfServiceSpec\0222" + "\n\017queueing_budget\030\001 \001(\0132\031.google.protobu" + "f.Duration\"\302\001\n\020QualityOfService\0224\n\004tier\030" + "\001 \001(\0162$.flyteidl.core.QualityOfService.T" + "ierH\000\0223\n\004spec\030\002 \001(\0132#.flyteidl.core.Qual" + "ityOfServiceSpecH\000\"4\n\004Tier\022\r\n\tUNDEFINED\020" + "\000\022\010\n\004HIGH\020\001\022\n\n\006MEDIUM\020\002\022\007\n\003LOW\020\003B\r\n\013desi" + "gnationB6Z4github.com/flyteorg/flyteidl/" + "gen/pb-go/flyteidl/coreb\006proto3" ; ::google::protobuf::internal::DescriptorTable descriptor_table_flyteidl_2fcore_2fexecution_2eproto = { false, InitDefaults_flyteidl_2fcore_2fexecution_2eproto, descriptor_table_protodef_flyteidl_2fcore_2fexecution_2eproto, - "flyteidl/core/execution.proto", &assign_descriptors_table_flyteidl_2fcore_2fexecution_2eproto, 1256, + "flyteidl/core/execution.proto", &assign_descriptors_table_flyteidl_2fcore_2fexecution_2eproto, 1271, }; void AddDescriptors_flyteidl_2fcore_2fexecution_2eproto() { @@ -345,6 +345,7 @@ bool NodeExecution_Phase_IsValid(int value) { case 7: case 8: case 9: + case 10: return true; default: return false; @@ -362,6 +363,7 @@ const NodeExecution_Phase NodeExecution::ABORTED; const NodeExecution_Phase NodeExecution::SKIPPED; const NodeExecution_Phase NodeExecution::TIMED_OUT; const NodeExecution_Phase NodeExecution::DYNAMIC_RUNNING; +const NodeExecution_Phase NodeExecution::RECOVERED; const NodeExecution_Phase NodeExecution::Phase_MIN; const NodeExecution_Phase NodeExecution::Phase_MAX; const int NodeExecution::Phase_ARRAYSIZE; diff --git a/gen/pb-cpp/flyteidl/core/execution.pb.h b/gen/pb-cpp/flyteidl/core/execution.pb.h index b397a9958..67e21915d 100644 --- a/gen/pb-cpp/flyteidl/core/execution.pb.h +++ b/gen/pb-cpp/flyteidl/core/execution.pb.h @@ -128,12 +128,13 @@ enum NodeExecution_Phase { NodeExecution_Phase_SKIPPED = 7, NodeExecution_Phase_TIMED_OUT = 8, NodeExecution_Phase_DYNAMIC_RUNNING = 9, + NodeExecution_Phase_RECOVERED = 10, NodeExecution_Phase_NodeExecution_Phase_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(), NodeExecution_Phase_NodeExecution_Phase_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max() }; bool NodeExecution_Phase_IsValid(int value); const NodeExecution_Phase NodeExecution_Phase_Phase_MIN = NodeExecution_Phase_UNDEFINED; -const NodeExecution_Phase NodeExecution_Phase_Phase_MAX = NodeExecution_Phase_DYNAMIC_RUNNING; +const NodeExecution_Phase NodeExecution_Phase_Phase_MAX = NodeExecution_Phase_RECOVERED; const int NodeExecution_Phase_Phase_ARRAYSIZE = NodeExecution_Phase_Phase_MAX + 1; const ::google::protobuf::EnumDescriptor* NodeExecution_Phase_descriptor(); @@ -501,6 +502,8 @@ class NodeExecution final : NodeExecution_Phase_TIMED_OUT; static const Phase DYNAMIC_RUNNING = NodeExecution_Phase_DYNAMIC_RUNNING; + static const Phase RECOVERED = + NodeExecution_Phase_RECOVERED; static inline bool Phase_IsValid(int value) { return NodeExecution_Phase_IsValid(value); } diff --git a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc index 7f976f701..087df9e7b 100644 --- a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.cc @@ -37,6 +37,7 @@ static const char* AdminService_method_names[] = { "/flyteidl.service.AdminService/UpdateLaunchPlan", "/flyteidl.service.AdminService/CreateExecution", "/flyteidl.service.AdminService/RelaunchExecution", + "/flyteidl.service.AdminService/RecoverExecution", "/flyteidl.service.AdminService/GetExecution", "/flyteidl.service.AdminService/GetExecutionData", "/flyteidl.service.AdminService/ListExecutions", @@ -91,34 +92,35 @@ AdminService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& chann , rpcmethod_UpdateLaunchPlan_(AdminService_method_names[14], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_CreateExecution_(AdminService_method_names[15], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_RelaunchExecution_(AdminService_method_names[16], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetExecution_(AdminService_method_names[17], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetExecutionData_(AdminService_method_names[18], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListExecutions_(AdminService_method_names[19], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_TerminateExecution_(AdminService_method_names[20], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetNodeExecution_(AdminService_method_names[21], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListNodeExecutions_(AdminService_method_names[22], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListNodeExecutionsForTask_(AdminService_method_names[23], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetNodeExecutionData_(AdminService_method_names[24], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_RegisterProject_(AdminService_method_names[25], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_UpdateProject_(AdminService_method_names[26], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListProjects_(AdminService_method_names[27], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_CreateWorkflowEvent_(AdminService_method_names[28], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_CreateNodeEvent_(AdminService_method_names[29], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_CreateTaskEvent_(AdminService_method_names[30], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetTaskExecution_(AdminService_method_names[31], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListTaskExecutions_(AdminService_method_names[32], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetTaskExecutionData_(AdminService_method_names[33], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_UpdateProjectDomainAttributes_(AdminService_method_names[34], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetProjectDomainAttributes_(AdminService_method_names[35], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_DeleteProjectDomainAttributes_(AdminService_method_names[36], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_UpdateWorkflowAttributes_(AdminService_method_names[37], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetWorkflowAttributes_(AdminService_method_names[38], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_DeleteWorkflowAttributes_(AdminService_method_names[39], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListMatchableAttributes_(AdminService_method_names[40], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ListNamedEntities_(AdminService_method_names[41], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetNamedEntity_(AdminService_method_names[42], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_UpdateNamedEntity_(AdminService_method_names[43], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_GetVersion_(AdminService_method_names[44], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_RecoverExecution_(AdminService_method_names[17], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetExecution_(AdminService_method_names[18], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetExecutionData_(AdminService_method_names[19], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListExecutions_(AdminService_method_names[20], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_TerminateExecution_(AdminService_method_names[21], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetNodeExecution_(AdminService_method_names[22], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListNodeExecutions_(AdminService_method_names[23], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListNodeExecutionsForTask_(AdminService_method_names[24], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetNodeExecutionData_(AdminService_method_names[25], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_RegisterProject_(AdminService_method_names[26], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_UpdateProject_(AdminService_method_names[27], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListProjects_(AdminService_method_names[28], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_CreateWorkflowEvent_(AdminService_method_names[29], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_CreateNodeEvent_(AdminService_method_names[30], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_CreateTaskEvent_(AdminService_method_names[31], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetTaskExecution_(AdminService_method_names[32], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListTaskExecutions_(AdminService_method_names[33], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetTaskExecutionData_(AdminService_method_names[34], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_UpdateProjectDomainAttributes_(AdminService_method_names[35], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetProjectDomainAttributes_(AdminService_method_names[36], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_DeleteProjectDomainAttributes_(AdminService_method_names[37], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_UpdateWorkflowAttributes_(AdminService_method_names[38], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetWorkflowAttributes_(AdminService_method_names[39], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_DeleteWorkflowAttributes_(AdminService_method_names[40], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListMatchableAttributes_(AdminService_method_names[41], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_ListNamedEntities_(AdminService_method_names[42], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetNamedEntity_(AdminService_method_names[43], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_UpdateNamedEntity_(AdminService_method_names[44], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) + , rpcmethod_GetVersion_(AdminService_method_names[45], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status AdminService::Stub::CreateTask(::grpc::ClientContext* context, const ::flyteidl::admin::TaskCreateRequest& request, ::flyteidl::admin::TaskCreateResponse* response) { @@ -597,6 +599,34 @@ ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::ExecutionCreateResponse>::Create(channel_.get(), cq, rpcmethod_RelaunchExecution_, context, request, false); } +::grpc::Status AdminService::Stub::RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::flyteidl::admin::ExecutionCreateResponse* response) { + return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_RecoverExecution_, context, request, response); +} + +void AdminService::Stub::experimental_async::RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_RecoverExecution_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::RecoverExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_RecoverExecution_, context, request, response, std::move(f)); +} + +void AdminService::Stub::experimental_async::RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_RecoverExecution_, context, request, response, reactor); +} + +void AdminService::Stub::experimental_async::RecoverExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_RecoverExecution_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* AdminService::Stub::AsyncRecoverExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::ExecutionCreateResponse>::Create(channel_.get(), cq, rpcmethod_RecoverExecution_, context, request, true); +} + +::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* AdminService::Stub::PrepareAsyncRecoverExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderFactory< ::flyteidl::admin::ExecutionCreateResponse>::Create(channel_.get(), cq, rpcmethod_RecoverExecution_, context, request, false); +} + ::grpc::Status AdminService::Stub::GetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::flyteidl::admin::Execution* response) { return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetExecution_, context, request, response); } @@ -1470,140 +1500,145 @@ AdminService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( AdminService_method_names[17], ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ExecutionRecoverRequest, ::flyteidl::admin::ExecutionCreateResponse>( + std::mem_fn(&AdminService::Service::RecoverExecution), this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + AdminService_method_names[18], + ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowExecutionGetRequest, ::flyteidl::admin::Execution>( std::mem_fn(&AdminService::Service::GetExecution), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[18], + AdminService_method_names[19], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowExecutionGetDataRequest, ::flyteidl::admin::WorkflowExecutionGetDataResponse>( std::mem_fn(&AdminService::Service::GetExecutionData), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[19], + AdminService_method_names[20], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ResourceListRequest, ::flyteidl::admin::ExecutionList>( std::mem_fn(&AdminService::Service::ListExecutions), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[20], + AdminService_method_names[21], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ExecutionTerminateRequest, ::flyteidl::admin::ExecutionTerminateResponse>( std::mem_fn(&AdminService::Service::TerminateExecution), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[21], + AdminService_method_names[22], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NodeExecutionGetRequest, ::flyteidl::admin::NodeExecution>( std::mem_fn(&AdminService::Service::GetNodeExecution), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[22], + AdminService_method_names[23], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NodeExecutionListRequest, ::flyteidl::admin::NodeExecutionList>( std::mem_fn(&AdminService::Service::ListNodeExecutions), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[23], + AdminService_method_names[24], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NodeExecutionForTaskListRequest, ::flyteidl::admin::NodeExecutionList>( std::mem_fn(&AdminService::Service::ListNodeExecutionsForTask), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[24], + AdminService_method_names[25], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NodeExecutionGetDataRequest, ::flyteidl::admin::NodeExecutionGetDataResponse>( std::mem_fn(&AdminService::Service::GetNodeExecutionData), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[25], + AdminService_method_names[26], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ProjectRegisterRequest, ::flyteidl::admin::ProjectRegisterResponse>( std::mem_fn(&AdminService::Service::RegisterProject), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[26], + AdminService_method_names[27], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::Project, ::flyteidl::admin::ProjectUpdateResponse>( std::mem_fn(&AdminService::Service::UpdateProject), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[27], + AdminService_method_names[28], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ProjectListRequest, ::flyteidl::admin::Projects>( std::mem_fn(&AdminService::Service::ListProjects), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[28], + AdminService_method_names[29], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowExecutionEventRequest, ::flyteidl::admin::WorkflowExecutionEventResponse>( std::mem_fn(&AdminService::Service::CreateWorkflowEvent), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[29], + AdminService_method_names[30], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NodeExecutionEventRequest, ::flyteidl::admin::NodeExecutionEventResponse>( std::mem_fn(&AdminService::Service::CreateNodeEvent), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[30], + AdminService_method_names[31], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::TaskExecutionEventRequest, ::flyteidl::admin::TaskExecutionEventResponse>( std::mem_fn(&AdminService::Service::CreateTaskEvent), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[31], + AdminService_method_names[32], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::TaskExecutionGetRequest, ::flyteidl::admin::TaskExecution>( std::mem_fn(&AdminService::Service::GetTaskExecution), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[32], + AdminService_method_names[33], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::TaskExecutionListRequest, ::flyteidl::admin::TaskExecutionList>( std::mem_fn(&AdminService::Service::ListTaskExecutions), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[33], + AdminService_method_names[34], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::TaskExecutionGetDataRequest, ::flyteidl::admin::TaskExecutionGetDataResponse>( std::mem_fn(&AdminService::Service::GetTaskExecutionData), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[34], + AdminService_method_names[35], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ProjectDomainAttributesUpdateRequest, ::flyteidl::admin::ProjectDomainAttributesUpdateResponse>( std::mem_fn(&AdminService::Service::UpdateProjectDomainAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[35], + AdminService_method_names[36], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ProjectDomainAttributesGetRequest, ::flyteidl::admin::ProjectDomainAttributesGetResponse>( std::mem_fn(&AdminService::Service::GetProjectDomainAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[36], + AdminService_method_names[37], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ProjectDomainAttributesDeleteRequest, ::flyteidl::admin::ProjectDomainAttributesDeleteResponse>( std::mem_fn(&AdminService::Service::DeleteProjectDomainAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[37], + AdminService_method_names[38], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowAttributesUpdateRequest, ::flyteidl::admin::WorkflowAttributesUpdateResponse>( std::mem_fn(&AdminService::Service::UpdateWorkflowAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[38], + AdminService_method_names[39], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowAttributesGetRequest, ::flyteidl::admin::WorkflowAttributesGetResponse>( std::mem_fn(&AdminService::Service::GetWorkflowAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[39], + AdminService_method_names[40], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::WorkflowAttributesDeleteRequest, ::flyteidl::admin::WorkflowAttributesDeleteResponse>( std::mem_fn(&AdminService::Service::DeleteWorkflowAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[40], + AdminService_method_names[41], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::ListMatchableAttributesRequest, ::flyteidl::admin::ListMatchableAttributesResponse>( std::mem_fn(&AdminService::Service::ListMatchableAttributes), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[41], + AdminService_method_names[42], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NamedEntityListRequest, ::flyteidl::admin::NamedEntityList>( std::mem_fn(&AdminService::Service::ListNamedEntities), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[42], + AdminService_method_names[43], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NamedEntityGetRequest, ::flyteidl::admin::NamedEntity>( std::mem_fn(&AdminService::Service::GetNamedEntity), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[43], + AdminService_method_names[44], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::NamedEntityUpdateRequest, ::flyteidl::admin::NamedEntityUpdateResponse>( std::mem_fn(&AdminService::Service::UpdateNamedEntity), this))); AddMethod(new ::grpc::internal::RpcServiceMethod( - AdminService_method_names[44], + AdminService_method_names[45], ::grpc::internal::RpcMethod::NORMAL_RPC, new ::grpc::internal::RpcMethodHandler< AdminService::Service, ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>( std::mem_fn(&AdminService::Service::GetVersion), this))); @@ -1731,6 +1766,13 @@ ::grpc::Status AdminService::Service::RelaunchExecution(::grpc::ServerContext* c return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status AdminService::Service::RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + ::grpc::Status AdminService::Service::GetExecution(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest* request, ::flyteidl::admin::Execution* response) { (void) context; (void) request; diff --git a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h index ce4e2a74c..e601c3131 100644 --- a/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h +++ b/gen/pb-cpp/flyteidl/service/admin.grpc.pb.h @@ -186,6 +186,18 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>> PrepareAsyncRelaunchExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>>(PrepareAsyncRelaunchExecutionRaw(context, request, cq)); } + // Recreates a previously-run workflow execution that will only start executing from the last known failure point. + // In Recover mode, users cannot change any input parameters or update the version of the execution. + // This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, + // downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. + // See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. + virtual ::grpc::Status RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::flyteidl::admin::ExecutionCreateResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>> AsyncRecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>>(AsyncRecoverExecutionRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>> PrepareAsyncRecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>>(PrepareAsyncRecoverExecutionRaw(context, request, cq)); + } // Fetches a :ref:`ref_flyteidl.admin.Execution`. virtual ::grpc::Status GetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::flyteidl::admin::Execution* response) = 0; std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::Execution>> AsyncGetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::grpc::CompletionQueue* cq) { @@ -499,6 +511,15 @@ class AdminService final { virtual void RelaunchExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function) = 0; virtual void RelaunchExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; virtual void RelaunchExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + // Recreates a previously-run workflow execution that will only start executing from the last known failure point. + // In Recover mode, users cannot change any input parameters or update the version of the execution. + // This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, + // downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. + // See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. + virtual void RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function) = 0; + virtual void RecoverExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function) = 0; + virtual void RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + virtual void RecoverExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; // Fetches a :ref:`ref_flyteidl.admin.Execution`. virtual void GetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest* request, ::flyteidl::admin::Execution* response, std::function) = 0; virtual void GetExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::Execution* response, std::function) = 0; @@ -677,6 +698,8 @@ class AdminService final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>* PrepareAsyncCreateExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionCreateRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>* AsyncRelaunchExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>* PrepareAsyncRelaunchExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>* AsyncRecoverExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::ExecutionCreateResponse>* PrepareAsyncRecoverExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::Execution>* AsyncGetExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::Execution>* PrepareAsyncGetExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::flyteidl::admin::WorkflowExecutionGetDataResponse>* AsyncGetExecutionDataRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetDataRequest& request, ::grpc::CompletionQueue* cq) = 0; @@ -856,6 +879,13 @@ class AdminService final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>> PrepareAsyncRelaunchExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>>(PrepareAsyncRelaunchExecutionRaw(context, request, cq)); } + ::grpc::Status RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::flyteidl::admin::ExecutionCreateResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>> AsyncRecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>>(AsyncRecoverExecutionRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>> PrepareAsyncRecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>>(PrepareAsyncRecoverExecutionRaw(context, request, cq)); + } ::grpc::Status GetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::flyteidl::admin::Execution* response) override; std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::Execution>> AsyncGetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::Execution>>(AsyncGetExecutionRaw(context, request, cq)); @@ -1123,6 +1153,10 @@ class AdminService final { void RelaunchExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function) override; void RelaunchExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void RelaunchExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function) override; + void RecoverExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, std::function) override; + void RecoverExecution(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + void RecoverExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; void GetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest* request, ::flyteidl::admin::Execution* response, std::function) override; void GetExecution(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::flyteidl::admin::Execution* response, std::function) override; void GetExecution(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest* request, ::flyteidl::admin::Execution* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; @@ -1280,6 +1314,8 @@ class AdminService final { ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* PrepareAsyncCreateExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionCreateRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* AsyncRelaunchExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* PrepareAsyncRelaunchExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* AsyncRecoverExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::ExecutionCreateResponse>* PrepareAsyncRecoverExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::ExecutionRecoverRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::Execution>* AsyncGetExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::Execution>* PrepareAsyncGetExecutionRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::flyteidl::admin::WorkflowExecutionGetDataResponse>* AsyncGetExecutionDataRaw(::grpc::ClientContext* context, const ::flyteidl::admin::WorkflowExecutionGetDataRequest& request, ::grpc::CompletionQueue* cq) override; @@ -1353,6 +1389,7 @@ class AdminService final { const ::grpc::internal::RpcMethod rpcmethod_UpdateLaunchPlan_; const ::grpc::internal::RpcMethod rpcmethod_CreateExecution_; const ::grpc::internal::RpcMethod rpcmethod_RelaunchExecution_; + const ::grpc::internal::RpcMethod rpcmethod_RecoverExecution_; const ::grpc::internal::RpcMethod rpcmethod_GetExecution_; const ::grpc::internal::RpcMethod rpcmethod_GetExecutionData_; const ::grpc::internal::RpcMethod rpcmethod_ListExecutions_; @@ -1422,6 +1459,12 @@ class AdminService final { virtual ::grpc::Status CreateExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionCreateRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response); // Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution` virtual ::grpc::Status RelaunchExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response); + // Recreates a previously-run workflow execution that will only start executing from the last known failure point. + // In Recover mode, users cannot change any input parameters or update the version of the execution. + // This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, + // downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. + // See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. + virtual ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response); // Fetches a :ref:`ref_flyteidl.admin.Execution`. virtual ::grpc::Status GetExecution(::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest* request, ::flyteidl::admin::Execution* response); // Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`. @@ -1821,12 +1864,32 @@ class AdminService final { } }; template + class WithAsyncMethod_RecoverExecution : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithAsyncMethod_RecoverExecution() { + ::grpc::Service::MarkMethodAsync(17); + } + ~WithAsyncMethod_RecoverExecution() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestRecoverExecution(::grpc::ServerContext* context, ::flyteidl::admin::ExecutionRecoverRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ExecutionCreateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { + ::grpc::Service::RequestAsyncUnary(17, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class WithAsyncMethod_GetExecution : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetExecution() { - ::grpc::Service::MarkMethodAsync(17); + ::grpc::Service::MarkMethodAsync(18); } ~WithAsyncMethod_GetExecution() override { BaseClassMustBeDerivedFromService(this); @@ -1837,7 +1900,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetExecution(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowExecutionGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::Execution>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(17, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1846,7 +1909,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetExecutionData() { - ::grpc::Service::MarkMethodAsync(18); + ::grpc::Service::MarkMethodAsync(19); } ~WithAsyncMethod_GetExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -1857,7 +1920,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetExecutionData(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowExecutionGetDataRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::WorkflowExecutionGetDataResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1866,7 +1929,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListExecutions() { - ::grpc::Service::MarkMethodAsync(19); + ::grpc::Service::MarkMethodAsync(20); } ~WithAsyncMethod_ListExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -1877,7 +1940,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListExecutions(::grpc::ServerContext* context, ::flyteidl::admin::ResourceListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ExecutionList>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1886,7 +1949,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_TerminateExecution() { - ::grpc::Service::MarkMethodAsync(20); + ::grpc::Service::MarkMethodAsync(21); } ~WithAsyncMethod_TerminateExecution() override { BaseClassMustBeDerivedFromService(this); @@ -1897,7 +1960,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestTerminateExecution(::grpc::ServerContext* context, ::flyteidl::admin::ExecutionTerminateRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ExecutionTerminateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1906,7 +1969,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetNodeExecution() { - ::grpc::Service::MarkMethodAsync(21); + ::grpc::Service::MarkMethodAsync(22); } ~WithAsyncMethod_GetNodeExecution() override { BaseClassMustBeDerivedFromService(this); @@ -1917,7 +1980,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetNodeExecution(::grpc::ServerContext* context, ::flyteidl::admin::NodeExecutionGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NodeExecution>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(22, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1926,7 +1989,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListNodeExecutions() { - ::grpc::Service::MarkMethodAsync(22); + ::grpc::Service::MarkMethodAsync(23); } ~WithAsyncMethod_ListNodeExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -1937,7 +2000,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListNodeExecutions(::grpc::ServerContext* context, ::flyteidl::admin::NodeExecutionListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NodeExecutionList>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(22, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(23, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1946,7 +2009,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListNodeExecutionsForTask() { - ::grpc::Service::MarkMethodAsync(23); + ::grpc::Service::MarkMethodAsync(24); } ~WithAsyncMethod_ListNodeExecutionsForTask() override { BaseClassMustBeDerivedFromService(this); @@ -1957,7 +2020,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListNodeExecutionsForTask(::grpc::ServerContext* context, ::flyteidl::admin::NodeExecutionForTaskListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NodeExecutionList>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(23, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(24, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1966,7 +2029,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetNodeExecutionData() { - ::grpc::Service::MarkMethodAsync(24); + ::grpc::Service::MarkMethodAsync(25); } ~WithAsyncMethod_GetNodeExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -1977,7 +2040,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetNodeExecutionData(::grpc::ServerContext* context, ::flyteidl::admin::NodeExecutionGetDataRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NodeExecutionGetDataResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(24, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(25, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -1986,7 +2049,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_RegisterProject() { - ::grpc::Service::MarkMethodAsync(25); + ::grpc::Service::MarkMethodAsync(26); } ~WithAsyncMethod_RegisterProject() override { BaseClassMustBeDerivedFromService(this); @@ -1997,7 +2060,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestRegisterProject(::grpc::ServerContext* context, ::flyteidl::admin::ProjectRegisterRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ProjectRegisterResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(25, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(26, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2006,7 +2069,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_UpdateProject() { - ::grpc::Service::MarkMethodAsync(26); + ::grpc::Service::MarkMethodAsync(27); } ~WithAsyncMethod_UpdateProject() override { BaseClassMustBeDerivedFromService(this); @@ -2017,7 +2080,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateProject(::grpc::ServerContext* context, ::flyteidl::admin::Project* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ProjectUpdateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(26, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(27, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2026,7 +2089,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListProjects() { - ::grpc::Service::MarkMethodAsync(27); + ::grpc::Service::MarkMethodAsync(28); } ~WithAsyncMethod_ListProjects() override { BaseClassMustBeDerivedFromService(this); @@ -2037,7 +2100,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListProjects(::grpc::ServerContext* context, ::flyteidl::admin::ProjectListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::Projects>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(27, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(28, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2046,7 +2109,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_CreateWorkflowEvent() { - ::grpc::Service::MarkMethodAsync(28); + ::grpc::Service::MarkMethodAsync(29); } ~WithAsyncMethod_CreateWorkflowEvent() override { BaseClassMustBeDerivedFromService(this); @@ -2057,7 +2120,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestCreateWorkflowEvent(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowExecutionEventRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::WorkflowExecutionEventResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(28, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(29, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2066,7 +2129,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_CreateNodeEvent() { - ::grpc::Service::MarkMethodAsync(29); + ::grpc::Service::MarkMethodAsync(30); } ~WithAsyncMethod_CreateNodeEvent() override { BaseClassMustBeDerivedFromService(this); @@ -2077,7 +2140,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestCreateNodeEvent(::grpc::ServerContext* context, ::flyteidl::admin::NodeExecutionEventRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NodeExecutionEventResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(29, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(30, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2086,7 +2149,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_CreateTaskEvent() { - ::grpc::Service::MarkMethodAsync(30); + ::grpc::Service::MarkMethodAsync(31); } ~WithAsyncMethod_CreateTaskEvent() override { BaseClassMustBeDerivedFromService(this); @@ -2097,7 +2160,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestCreateTaskEvent(::grpc::ServerContext* context, ::flyteidl::admin::TaskExecutionEventRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::TaskExecutionEventResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(30, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(31, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2106,7 +2169,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetTaskExecution() { - ::grpc::Service::MarkMethodAsync(31); + ::grpc::Service::MarkMethodAsync(32); } ~WithAsyncMethod_GetTaskExecution() override { BaseClassMustBeDerivedFromService(this); @@ -2117,7 +2180,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetTaskExecution(::grpc::ServerContext* context, ::flyteidl::admin::TaskExecutionGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::TaskExecution>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(31, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(32, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2126,7 +2189,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListTaskExecutions() { - ::grpc::Service::MarkMethodAsync(32); + ::grpc::Service::MarkMethodAsync(33); } ~WithAsyncMethod_ListTaskExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -2137,7 +2200,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListTaskExecutions(::grpc::ServerContext* context, ::flyteidl::admin::TaskExecutionListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::TaskExecutionList>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(32, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(33, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2146,7 +2209,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetTaskExecutionData() { - ::grpc::Service::MarkMethodAsync(33); + ::grpc::Service::MarkMethodAsync(34); } ~WithAsyncMethod_GetTaskExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -2157,7 +2220,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetTaskExecutionData(::grpc::ServerContext* context, ::flyteidl::admin::TaskExecutionGetDataRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::TaskExecutionGetDataResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(33, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(34, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2166,7 +2229,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_UpdateProjectDomainAttributes() { - ::grpc::Service::MarkMethodAsync(34); + ::grpc::Service::MarkMethodAsync(35); } ~WithAsyncMethod_UpdateProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2177,7 +2240,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateProjectDomainAttributes(::grpc::ServerContext* context, ::flyteidl::admin::ProjectDomainAttributesUpdateRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ProjectDomainAttributesUpdateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(34, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(35, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2186,7 +2249,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetProjectDomainAttributes() { - ::grpc::Service::MarkMethodAsync(35); + ::grpc::Service::MarkMethodAsync(36); } ~WithAsyncMethod_GetProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2197,7 +2260,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetProjectDomainAttributes(::grpc::ServerContext* context, ::flyteidl::admin::ProjectDomainAttributesGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ProjectDomainAttributesGetResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(35, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(36, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2206,7 +2269,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_DeleteProjectDomainAttributes() { - ::grpc::Service::MarkMethodAsync(36); + ::grpc::Service::MarkMethodAsync(37); } ~WithAsyncMethod_DeleteProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2217,7 +2280,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestDeleteProjectDomainAttributes(::grpc::ServerContext* context, ::flyteidl::admin::ProjectDomainAttributesDeleteRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ProjectDomainAttributesDeleteResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(36, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(37, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2226,7 +2289,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_UpdateWorkflowAttributes() { - ::grpc::Service::MarkMethodAsync(37); + ::grpc::Service::MarkMethodAsync(38); } ~WithAsyncMethod_UpdateWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2237,7 +2300,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateWorkflowAttributes(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowAttributesUpdateRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::WorkflowAttributesUpdateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(37, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(38, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2246,7 +2309,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetWorkflowAttributes() { - ::grpc::Service::MarkMethodAsync(38); + ::grpc::Service::MarkMethodAsync(39); } ~WithAsyncMethod_GetWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2257,7 +2320,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetWorkflowAttributes(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowAttributesGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::WorkflowAttributesGetResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(38, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(39, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2266,7 +2329,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_DeleteWorkflowAttributes() { - ::grpc::Service::MarkMethodAsync(39); + ::grpc::Service::MarkMethodAsync(40); } ~WithAsyncMethod_DeleteWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2277,7 +2340,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestDeleteWorkflowAttributes(::grpc::ServerContext* context, ::flyteidl::admin::WorkflowAttributesDeleteRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::WorkflowAttributesDeleteResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(39, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(40, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2286,7 +2349,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListMatchableAttributes() { - ::grpc::Service::MarkMethodAsync(40); + ::grpc::Service::MarkMethodAsync(41); } ~WithAsyncMethod_ListMatchableAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -2297,7 +2360,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListMatchableAttributes(::grpc::ServerContext* context, ::flyteidl::admin::ListMatchableAttributesRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::ListMatchableAttributesResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(40, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(41, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2306,7 +2369,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_ListNamedEntities() { - ::grpc::Service::MarkMethodAsync(41); + ::grpc::Service::MarkMethodAsync(42); } ~WithAsyncMethod_ListNamedEntities() override { BaseClassMustBeDerivedFromService(this); @@ -2317,7 +2380,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListNamedEntities(::grpc::ServerContext* context, ::flyteidl::admin::NamedEntityListRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NamedEntityList>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(41, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(42, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2326,7 +2389,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetNamedEntity() { - ::grpc::Service::MarkMethodAsync(42); + ::grpc::Service::MarkMethodAsync(43); } ~WithAsyncMethod_GetNamedEntity() override { BaseClassMustBeDerivedFromService(this); @@ -2337,7 +2400,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetNamedEntity(::grpc::ServerContext* context, ::flyteidl::admin::NamedEntityGetRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NamedEntity>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(42, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(43, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2346,7 +2409,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_UpdateNamedEntity() { - ::grpc::Service::MarkMethodAsync(43); + ::grpc::Service::MarkMethodAsync(44); } ~WithAsyncMethod_UpdateNamedEntity() override { BaseClassMustBeDerivedFromService(this); @@ -2357,7 +2420,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateNamedEntity(::grpc::ServerContext* context, ::flyteidl::admin::NamedEntityUpdateRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::NamedEntityUpdateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(43, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(44, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -2366,7 +2429,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithAsyncMethod_GetVersion() { - ::grpc::Service::MarkMethodAsync(44); + ::grpc::Service::MarkMethodAsync(45); } ~WithAsyncMethod_GetVersion() override { BaseClassMustBeDerivedFromService(this); @@ -2377,10 +2440,10 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetVersion(::grpc::ServerContext* context, ::flyteidl::admin::GetVersionRequest* request, ::grpc::ServerAsyncResponseWriter< ::flyteidl::admin::GetVersionResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) { - ::grpc::Service::RequestAsyncUnary(44, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(45, context, request, response, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; + typedef WithAsyncMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_CreateTask : public BaseClass { private: @@ -2909,12 +2972,43 @@ class AdminService final { virtual void RelaunchExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRelaunchRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithCallbackMethod_RecoverExecution : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithCallbackMethod_RecoverExecution() { + ::grpc::Service::experimental().MarkMethodCallback(17, + new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ExecutionRecoverRequest, ::flyteidl::admin::ExecutionCreateResponse>( + [this](::grpc::ServerContext* context, + const ::flyteidl::admin::ExecutionRecoverRequest* request, + ::flyteidl::admin::ExecutionCreateResponse* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + return this->RecoverExecution(context, request, response, controller); + })); + } + void SetMessageAllocatorFor_RecoverExecution( + ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ExecutionRecoverRequest, ::flyteidl::admin::ExecutionCreateResponse>* allocator) { + static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ExecutionRecoverRequest, ::flyteidl::admin::ExecutionCreateResponse>*>( + ::grpc::Service::experimental().GetHandler(17)) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_RecoverExecution() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class ExperimentalWithCallbackMethod_GetExecution : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetExecution() { - ::grpc::Service::experimental().MarkMethodCallback(17, + ::grpc::Service::experimental().MarkMethodCallback(18, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetRequest, ::flyteidl::admin::Execution>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetRequest* request, @@ -2926,7 +3020,7 @@ class AdminService final { void SetMessageAllocatorFor_GetExecution( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowExecutionGetRequest, ::flyteidl::admin::Execution>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetRequest, ::flyteidl::admin::Execution>*>( - ::grpc::Service::experimental().GetHandler(17)) + ::grpc::Service::experimental().GetHandler(18)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetExecution() override { @@ -2945,7 +3039,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetExecutionData() { - ::grpc::Service::experimental().MarkMethodCallback(18, + ::grpc::Service::experimental().MarkMethodCallback(19, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetDataRequest, ::flyteidl::admin::WorkflowExecutionGetDataResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionGetDataRequest* request, @@ -2957,7 +3051,7 @@ class AdminService final { void SetMessageAllocatorFor_GetExecutionData( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowExecutionGetDataRequest, ::flyteidl::admin::WorkflowExecutionGetDataResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetDataRequest, ::flyteidl::admin::WorkflowExecutionGetDataResponse>*>( - ::grpc::Service::experimental().GetHandler(18)) + ::grpc::Service::experimental().GetHandler(19)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetExecutionData() override { @@ -2976,7 +3070,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListExecutions() { - ::grpc::Service::experimental().MarkMethodCallback(19, + ::grpc::Service::experimental().MarkMethodCallback(20, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ResourceListRequest, ::flyteidl::admin::ExecutionList>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ResourceListRequest* request, @@ -2988,7 +3082,7 @@ class AdminService final { void SetMessageAllocatorFor_ListExecutions( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ResourceListRequest, ::flyteidl::admin::ExecutionList>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ResourceListRequest, ::flyteidl::admin::ExecutionList>*>( - ::grpc::Service::experimental().GetHandler(19)) + ::grpc::Service::experimental().GetHandler(20)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListExecutions() override { @@ -3007,7 +3101,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_TerminateExecution() { - ::grpc::Service::experimental().MarkMethodCallback(20, + ::grpc::Service::experimental().MarkMethodCallback(21, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ExecutionTerminateRequest, ::flyteidl::admin::ExecutionTerminateResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionTerminateRequest* request, @@ -3019,7 +3113,7 @@ class AdminService final { void SetMessageAllocatorFor_TerminateExecution( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ExecutionTerminateRequest, ::flyteidl::admin::ExecutionTerminateResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ExecutionTerminateRequest, ::flyteidl::admin::ExecutionTerminateResponse>*>( - ::grpc::Service::experimental().GetHandler(20)) + ::grpc::Service::experimental().GetHandler(21)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_TerminateExecution() override { @@ -3038,7 +3132,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetNodeExecution() { - ::grpc::Service::experimental().MarkMethodCallback(21, + ::grpc::Service::experimental().MarkMethodCallback(22, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionGetRequest, ::flyteidl::admin::NodeExecution>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NodeExecutionGetRequest* request, @@ -3050,7 +3144,7 @@ class AdminService final { void SetMessageAllocatorFor_GetNodeExecution( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NodeExecutionGetRequest, ::flyteidl::admin::NodeExecution>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionGetRequest, ::flyteidl::admin::NodeExecution>*>( - ::grpc::Service::experimental().GetHandler(21)) + ::grpc::Service::experimental().GetHandler(22)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetNodeExecution() override { @@ -3069,7 +3163,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListNodeExecutions() { - ::grpc::Service::experimental().MarkMethodCallback(22, + ::grpc::Service::experimental().MarkMethodCallback(23, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionListRequest, ::flyteidl::admin::NodeExecutionList>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NodeExecutionListRequest* request, @@ -3081,7 +3175,7 @@ class AdminService final { void SetMessageAllocatorFor_ListNodeExecutions( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NodeExecutionListRequest, ::flyteidl::admin::NodeExecutionList>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionListRequest, ::flyteidl::admin::NodeExecutionList>*>( - ::grpc::Service::experimental().GetHandler(22)) + ::grpc::Service::experimental().GetHandler(23)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListNodeExecutions() override { @@ -3100,7 +3194,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListNodeExecutionsForTask() { - ::grpc::Service::experimental().MarkMethodCallback(23, + ::grpc::Service::experimental().MarkMethodCallback(24, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionForTaskListRequest, ::flyteidl::admin::NodeExecutionList>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NodeExecutionForTaskListRequest* request, @@ -3112,7 +3206,7 @@ class AdminService final { void SetMessageAllocatorFor_ListNodeExecutionsForTask( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NodeExecutionForTaskListRequest, ::flyteidl::admin::NodeExecutionList>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionForTaskListRequest, ::flyteidl::admin::NodeExecutionList>*>( - ::grpc::Service::experimental().GetHandler(23)) + ::grpc::Service::experimental().GetHandler(24)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListNodeExecutionsForTask() override { @@ -3131,7 +3225,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetNodeExecutionData() { - ::grpc::Service::experimental().MarkMethodCallback(24, + ::grpc::Service::experimental().MarkMethodCallback(25, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionGetDataRequest, ::flyteidl::admin::NodeExecutionGetDataResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NodeExecutionGetDataRequest* request, @@ -3143,7 +3237,7 @@ class AdminService final { void SetMessageAllocatorFor_GetNodeExecutionData( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NodeExecutionGetDataRequest, ::flyteidl::admin::NodeExecutionGetDataResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionGetDataRequest, ::flyteidl::admin::NodeExecutionGetDataResponse>*>( - ::grpc::Service::experimental().GetHandler(24)) + ::grpc::Service::experimental().GetHandler(25)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetNodeExecutionData() override { @@ -3162,7 +3256,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_RegisterProject() { - ::grpc::Service::experimental().MarkMethodCallback(25, + ::grpc::Service::experimental().MarkMethodCallback(26, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectRegisterRequest, ::flyteidl::admin::ProjectRegisterResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ProjectRegisterRequest* request, @@ -3174,7 +3268,7 @@ class AdminService final { void SetMessageAllocatorFor_RegisterProject( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ProjectRegisterRequest, ::flyteidl::admin::ProjectRegisterResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectRegisterRequest, ::flyteidl::admin::ProjectRegisterResponse>*>( - ::grpc::Service::experimental().GetHandler(25)) + ::grpc::Service::experimental().GetHandler(26)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_RegisterProject() override { @@ -3193,7 +3287,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_UpdateProject() { - ::grpc::Service::experimental().MarkMethodCallback(26, + ::grpc::Service::experimental().MarkMethodCallback(27, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::Project, ::flyteidl::admin::ProjectUpdateResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::Project* request, @@ -3205,7 +3299,7 @@ class AdminService final { void SetMessageAllocatorFor_UpdateProject( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::Project, ::flyteidl::admin::ProjectUpdateResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::Project, ::flyteidl::admin::ProjectUpdateResponse>*>( - ::grpc::Service::experimental().GetHandler(26)) + ::grpc::Service::experimental().GetHandler(27)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_UpdateProject() override { @@ -3224,7 +3318,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListProjects() { - ::grpc::Service::experimental().MarkMethodCallback(27, + ::grpc::Service::experimental().MarkMethodCallback(28, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectListRequest, ::flyteidl::admin::Projects>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ProjectListRequest* request, @@ -3236,7 +3330,7 @@ class AdminService final { void SetMessageAllocatorFor_ListProjects( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ProjectListRequest, ::flyteidl::admin::Projects>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectListRequest, ::flyteidl::admin::Projects>*>( - ::grpc::Service::experimental().GetHandler(27)) + ::grpc::Service::experimental().GetHandler(28)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListProjects() override { @@ -3255,7 +3349,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_CreateWorkflowEvent() { - ::grpc::Service::experimental().MarkMethodCallback(28, + ::grpc::Service::experimental().MarkMethodCallback(29, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionEventRequest, ::flyteidl::admin::WorkflowExecutionEventResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowExecutionEventRequest* request, @@ -3267,7 +3361,7 @@ class AdminService final { void SetMessageAllocatorFor_CreateWorkflowEvent( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowExecutionEventRequest, ::flyteidl::admin::WorkflowExecutionEventResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowExecutionEventRequest, ::flyteidl::admin::WorkflowExecutionEventResponse>*>( - ::grpc::Service::experimental().GetHandler(28)) + ::grpc::Service::experimental().GetHandler(29)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_CreateWorkflowEvent() override { @@ -3286,7 +3380,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_CreateNodeEvent() { - ::grpc::Service::experimental().MarkMethodCallback(29, + ::grpc::Service::experimental().MarkMethodCallback(30, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionEventRequest, ::flyteidl::admin::NodeExecutionEventResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NodeExecutionEventRequest* request, @@ -3298,7 +3392,7 @@ class AdminService final { void SetMessageAllocatorFor_CreateNodeEvent( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NodeExecutionEventRequest, ::flyteidl::admin::NodeExecutionEventResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NodeExecutionEventRequest, ::flyteidl::admin::NodeExecutionEventResponse>*>( - ::grpc::Service::experimental().GetHandler(29)) + ::grpc::Service::experimental().GetHandler(30)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_CreateNodeEvent() override { @@ -3317,7 +3411,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_CreateTaskEvent() { - ::grpc::Service::experimental().MarkMethodCallback(30, + ::grpc::Service::experimental().MarkMethodCallback(31, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionEventRequest, ::flyteidl::admin::TaskExecutionEventResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::TaskExecutionEventRequest* request, @@ -3329,7 +3423,7 @@ class AdminService final { void SetMessageAllocatorFor_CreateTaskEvent( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::TaskExecutionEventRequest, ::flyteidl::admin::TaskExecutionEventResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionEventRequest, ::flyteidl::admin::TaskExecutionEventResponse>*>( - ::grpc::Service::experimental().GetHandler(30)) + ::grpc::Service::experimental().GetHandler(31)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_CreateTaskEvent() override { @@ -3348,7 +3442,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetTaskExecution() { - ::grpc::Service::experimental().MarkMethodCallback(31, + ::grpc::Service::experimental().MarkMethodCallback(32, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionGetRequest, ::flyteidl::admin::TaskExecution>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::TaskExecutionGetRequest* request, @@ -3360,7 +3454,7 @@ class AdminService final { void SetMessageAllocatorFor_GetTaskExecution( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::TaskExecutionGetRequest, ::flyteidl::admin::TaskExecution>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionGetRequest, ::flyteidl::admin::TaskExecution>*>( - ::grpc::Service::experimental().GetHandler(31)) + ::grpc::Service::experimental().GetHandler(32)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetTaskExecution() override { @@ -3379,7 +3473,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListTaskExecutions() { - ::grpc::Service::experimental().MarkMethodCallback(32, + ::grpc::Service::experimental().MarkMethodCallback(33, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionListRequest, ::flyteidl::admin::TaskExecutionList>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::TaskExecutionListRequest* request, @@ -3391,7 +3485,7 @@ class AdminService final { void SetMessageAllocatorFor_ListTaskExecutions( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::TaskExecutionListRequest, ::flyteidl::admin::TaskExecutionList>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionListRequest, ::flyteidl::admin::TaskExecutionList>*>( - ::grpc::Service::experimental().GetHandler(32)) + ::grpc::Service::experimental().GetHandler(33)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListTaskExecutions() override { @@ -3410,7 +3504,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetTaskExecutionData() { - ::grpc::Service::experimental().MarkMethodCallback(33, + ::grpc::Service::experimental().MarkMethodCallback(34, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionGetDataRequest, ::flyteidl::admin::TaskExecutionGetDataResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::TaskExecutionGetDataRequest* request, @@ -3422,7 +3516,7 @@ class AdminService final { void SetMessageAllocatorFor_GetTaskExecutionData( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::TaskExecutionGetDataRequest, ::flyteidl::admin::TaskExecutionGetDataResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::TaskExecutionGetDataRequest, ::flyteidl::admin::TaskExecutionGetDataResponse>*>( - ::grpc::Service::experimental().GetHandler(33)) + ::grpc::Service::experimental().GetHandler(34)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetTaskExecutionData() override { @@ -3441,7 +3535,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_UpdateProjectDomainAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(34, + ::grpc::Service::experimental().MarkMethodCallback(35, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesUpdateRequest, ::flyteidl::admin::ProjectDomainAttributesUpdateResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ProjectDomainAttributesUpdateRequest* request, @@ -3453,7 +3547,7 @@ class AdminService final { void SetMessageAllocatorFor_UpdateProjectDomainAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ProjectDomainAttributesUpdateRequest, ::flyteidl::admin::ProjectDomainAttributesUpdateResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesUpdateRequest, ::flyteidl::admin::ProjectDomainAttributesUpdateResponse>*>( - ::grpc::Service::experimental().GetHandler(34)) + ::grpc::Service::experimental().GetHandler(35)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_UpdateProjectDomainAttributes() override { @@ -3472,7 +3566,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetProjectDomainAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(35, + ::grpc::Service::experimental().MarkMethodCallback(36, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesGetRequest, ::flyteidl::admin::ProjectDomainAttributesGetResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ProjectDomainAttributesGetRequest* request, @@ -3484,7 +3578,7 @@ class AdminService final { void SetMessageAllocatorFor_GetProjectDomainAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ProjectDomainAttributesGetRequest, ::flyteidl::admin::ProjectDomainAttributesGetResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesGetRequest, ::flyteidl::admin::ProjectDomainAttributesGetResponse>*>( - ::grpc::Service::experimental().GetHandler(35)) + ::grpc::Service::experimental().GetHandler(36)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetProjectDomainAttributes() override { @@ -3503,7 +3597,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_DeleteProjectDomainAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(36, + ::grpc::Service::experimental().MarkMethodCallback(37, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesDeleteRequest, ::flyteidl::admin::ProjectDomainAttributesDeleteResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ProjectDomainAttributesDeleteRequest* request, @@ -3515,7 +3609,7 @@ class AdminService final { void SetMessageAllocatorFor_DeleteProjectDomainAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ProjectDomainAttributesDeleteRequest, ::flyteidl::admin::ProjectDomainAttributesDeleteResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesDeleteRequest, ::flyteidl::admin::ProjectDomainAttributesDeleteResponse>*>( - ::grpc::Service::experimental().GetHandler(36)) + ::grpc::Service::experimental().GetHandler(37)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_DeleteProjectDomainAttributes() override { @@ -3534,7 +3628,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_UpdateWorkflowAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(37, + ::grpc::Service::experimental().MarkMethodCallback(38, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowAttributesUpdateRequest, ::flyteidl::admin::WorkflowAttributesUpdateResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowAttributesUpdateRequest* request, @@ -3546,7 +3640,7 @@ class AdminService final { void SetMessageAllocatorFor_UpdateWorkflowAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowAttributesUpdateRequest, ::flyteidl::admin::WorkflowAttributesUpdateResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowAttributesUpdateRequest, ::flyteidl::admin::WorkflowAttributesUpdateResponse>*>( - ::grpc::Service::experimental().GetHandler(37)) + ::grpc::Service::experimental().GetHandler(38)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_UpdateWorkflowAttributes() override { @@ -3565,7 +3659,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetWorkflowAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(38, + ::grpc::Service::experimental().MarkMethodCallback(39, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowAttributesGetRequest, ::flyteidl::admin::WorkflowAttributesGetResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowAttributesGetRequest* request, @@ -3577,7 +3671,7 @@ class AdminService final { void SetMessageAllocatorFor_GetWorkflowAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowAttributesGetRequest, ::flyteidl::admin::WorkflowAttributesGetResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowAttributesGetRequest, ::flyteidl::admin::WorkflowAttributesGetResponse>*>( - ::grpc::Service::experimental().GetHandler(38)) + ::grpc::Service::experimental().GetHandler(39)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetWorkflowAttributes() override { @@ -3596,7 +3690,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_DeleteWorkflowAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(39, + ::grpc::Service::experimental().MarkMethodCallback(40, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowAttributesDeleteRequest, ::flyteidl::admin::WorkflowAttributesDeleteResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::WorkflowAttributesDeleteRequest* request, @@ -3608,7 +3702,7 @@ class AdminService final { void SetMessageAllocatorFor_DeleteWorkflowAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::WorkflowAttributesDeleteRequest, ::flyteidl::admin::WorkflowAttributesDeleteResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::WorkflowAttributesDeleteRequest, ::flyteidl::admin::WorkflowAttributesDeleteResponse>*>( - ::grpc::Service::experimental().GetHandler(39)) + ::grpc::Service::experimental().GetHandler(40)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_DeleteWorkflowAttributes() override { @@ -3627,7 +3721,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListMatchableAttributes() { - ::grpc::Service::experimental().MarkMethodCallback(40, + ::grpc::Service::experimental().MarkMethodCallback(41, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ListMatchableAttributesRequest, ::flyteidl::admin::ListMatchableAttributesResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::ListMatchableAttributesRequest* request, @@ -3639,7 +3733,7 @@ class AdminService final { void SetMessageAllocatorFor_ListMatchableAttributes( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::ListMatchableAttributesRequest, ::flyteidl::admin::ListMatchableAttributesResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::ListMatchableAttributesRequest, ::flyteidl::admin::ListMatchableAttributesResponse>*>( - ::grpc::Service::experimental().GetHandler(40)) + ::grpc::Service::experimental().GetHandler(41)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListMatchableAttributes() override { @@ -3658,7 +3752,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_ListNamedEntities() { - ::grpc::Service::experimental().MarkMethodCallback(41, + ::grpc::Service::experimental().MarkMethodCallback(42, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NamedEntityListRequest, ::flyteidl::admin::NamedEntityList>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NamedEntityListRequest* request, @@ -3670,7 +3764,7 @@ class AdminService final { void SetMessageAllocatorFor_ListNamedEntities( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NamedEntityListRequest, ::flyteidl::admin::NamedEntityList>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NamedEntityListRequest, ::flyteidl::admin::NamedEntityList>*>( - ::grpc::Service::experimental().GetHandler(41)) + ::grpc::Service::experimental().GetHandler(42)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_ListNamedEntities() override { @@ -3689,7 +3783,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetNamedEntity() { - ::grpc::Service::experimental().MarkMethodCallback(42, + ::grpc::Service::experimental().MarkMethodCallback(43, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NamedEntityGetRequest, ::flyteidl::admin::NamedEntity>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NamedEntityGetRequest* request, @@ -3701,7 +3795,7 @@ class AdminService final { void SetMessageAllocatorFor_GetNamedEntity( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NamedEntityGetRequest, ::flyteidl::admin::NamedEntity>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NamedEntityGetRequest, ::flyteidl::admin::NamedEntity>*>( - ::grpc::Service::experimental().GetHandler(42)) + ::grpc::Service::experimental().GetHandler(43)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetNamedEntity() override { @@ -3720,7 +3814,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_UpdateNamedEntity() { - ::grpc::Service::experimental().MarkMethodCallback(43, + ::grpc::Service::experimental().MarkMethodCallback(44, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NamedEntityUpdateRequest, ::flyteidl::admin::NamedEntityUpdateResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::NamedEntityUpdateRequest* request, @@ -3732,7 +3826,7 @@ class AdminService final { void SetMessageAllocatorFor_UpdateNamedEntity( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::NamedEntityUpdateRequest, ::flyteidl::admin::NamedEntityUpdateResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::NamedEntityUpdateRequest, ::flyteidl::admin::NamedEntityUpdateResponse>*>( - ::grpc::Service::experimental().GetHandler(43)) + ::grpc::Service::experimental().GetHandler(44)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_UpdateNamedEntity() override { @@ -3751,7 +3845,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithCallbackMethod_GetVersion() { - ::grpc::Service::experimental().MarkMethodCallback(44, + ::grpc::Service::experimental().MarkMethodCallback(45, new ::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>( [this](::grpc::ServerContext* context, const ::flyteidl::admin::GetVersionRequest* request, @@ -3763,7 +3857,7 @@ class AdminService final { void SetMessageAllocatorFor_GetVersion( ::grpc::experimental::MessageAllocator< ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>* allocator) { static_cast<::grpc::internal::CallbackUnaryHandler< ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>*>( - ::grpc::Service::experimental().GetHandler(44)) + ::grpc::Service::experimental().GetHandler(45)) ->SetMessageAllocator(allocator); } ~ExperimentalWithCallbackMethod_GetVersion() override { @@ -3776,7 +3870,7 @@ class AdminService final { } virtual void GetVersion(::grpc::ServerContext* context, const ::flyteidl::admin::GetVersionRequest* request, ::flyteidl::admin::GetVersionResponse* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; - typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; + typedef ExperimentalWithCallbackMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_CreateTask : public BaseClass { private: @@ -4067,12 +4161,29 @@ class AdminService final { } }; template + class WithGenericMethod_RecoverExecution : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithGenericMethod_RecoverExecution() { + ::grpc::Service::MarkMethodGeneric(17); + } + ~WithGenericMethod_RecoverExecution() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithGenericMethod_GetExecution : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetExecution() { - ::grpc::Service::MarkMethodGeneric(17); + ::grpc::Service::MarkMethodGeneric(18); } ~WithGenericMethod_GetExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4089,7 +4200,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetExecutionData() { - ::grpc::Service::MarkMethodGeneric(18); + ::grpc::Service::MarkMethodGeneric(19); } ~WithGenericMethod_GetExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -4106,7 +4217,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListExecutions() { - ::grpc::Service::MarkMethodGeneric(19); + ::grpc::Service::MarkMethodGeneric(20); } ~WithGenericMethod_ListExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -4123,7 +4234,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_TerminateExecution() { - ::grpc::Service::MarkMethodGeneric(20); + ::grpc::Service::MarkMethodGeneric(21); } ~WithGenericMethod_TerminateExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4140,7 +4251,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetNodeExecution() { - ::grpc::Service::MarkMethodGeneric(21); + ::grpc::Service::MarkMethodGeneric(22); } ~WithGenericMethod_GetNodeExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4157,7 +4268,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListNodeExecutions() { - ::grpc::Service::MarkMethodGeneric(22); + ::grpc::Service::MarkMethodGeneric(23); } ~WithGenericMethod_ListNodeExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -4174,7 +4285,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListNodeExecutionsForTask() { - ::grpc::Service::MarkMethodGeneric(23); + ::grpc::Service::MarkMethodGeneric(24); } ~WithGenericMethod_ListNodeExecutionsForTask() override { BaseClassMustBeDerivedFromService(this); @@ -4191,7 +4302,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetNodeExecutionData() { - ::grpc::Service::MarkMethodGeneric(24); + ::grpc::Service::MarkMethodGeneric(25); } ~WithGenericMethod_GetNodeExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -4208,7 +4319,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_RegisterProject() { - ::grpc::Service::MarkMethodGeneric(25); + ::grpc::Service::MarkMethodGeneric(26); } ~WithGenericMethod_RegisterProject() override { BaseClassMustBeDerivedFromService(this); @@ -4225,7 +4336,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_UpdateProject() { - ::grpc::Service::MarkMethodGeneric(26); + ::grpc::Service::MarkMethodGeneric(27); } ~WithGenericMethod_UpdateProject() override { BaseClassMustBeDerivedFromService(this); @@ -4242,7 +4353,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListProjects() { - ::grpc::Service::MarkMethodGeneric(27); + ::grpc::Service::MarkMethodGeneric(28); } ~WithGenericMethod_ListProjects() override { BaseClassMustBeDerivedFromService(this); @@ -4259,7 +4370,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_CreateWorkflowEvent() { - ::grpc::Service::MarkMethodGeneric(28); + ::grpc::Service::MarkMethodGeneric(29); } ~WithGenericMethod_CreateWorkflowEvent() override { BaseClassMustBeDerivedFromService(this); @@ -4276,7 +4387,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_CreateNodeEvent() { - ::grpc::Service::MarkMethodGeneric(29); + ::grpc::Service::MarkMethodGeneric(30); } ~WithGenericMethod_CreateNodeEvent() override { BaseClassMustBeDerivedFromService(this); @@ -4293,7 +4404,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_CreateTaskEvent() { - ::grpc::Service::MarkMethodGeneric(30); + ::grpc::Service::MarkMethodGeneric(31); } ~WithGenericMethod_CreateTaskEvent() override { BaseClassMustBeDerivedFromService(this); @@ -4310,7 +4421,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetTaskExecution() { - ::grpc::Service::MarkMethodGeneric(31); + ::grpc::Service::MarkMethodGeneric(32); } ~WithGenericMethod_GetTaskExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4327,7 +4438,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListTaskExecutions() { - ::grpc::Service::MarkMethodGeneric(32); + ::grpc::Service::MarkMethodGeneric(33); } ~WithGenericMethod_ListTaskExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -4344,7 +4455,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetTaskExecutionData() { - ::grpc::Service::MarkMethodGeneric(33); + ::grpc::Service::MarkMethodGeneric(34); } ~WithGenericMethod_GetTaskExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -4361,7 +4472,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_UpdateProjectDomainAttributes() { - ::grpc::Service::MarkMethodGeneric(34); + ::grpc::Service::MarkMethodGeneric(35); } ~WithGenericMethod_UpdateProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4378,7 +4489,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetProjectDomainAttributes() { - ::grpc::Service::MarkMethodGeneric(35); + ::grpc::Service::MarkMethodGeneric(36); } ~WithGenericMethod_GetProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4395,7 +4506,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_DeleteProjectDomainAttributes() { - ::grpc::Service::MarkMethodGeneric(36); + ::grpc::Service::MarkMethodGeneric(37); } ~WithGenericMethod_DeleteProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4412,7 +4523,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_UpdateWorkflowAttributes() { - ::grpc::Service::MarkMethodGeneric(37); + ::grpc::Service::MarkMethodGeneric(38); } ~WithGenericMethod_UpdateWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4429,7 +4540,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetWorkflowAttributes() { - ::grpc::Service::MarkMethodGeneric(38); + ::grpc::Service::MarkMethodGeneric(39); } ~WithGenericMethod_GetWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4446,7 +4557,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_DeleteWorkflowAttributes() { - ::grpc::Service::MarkMethodGeneric(39); + ::grpc::Service::MarkMethodGeneric(40); } ~WithGenericMethod_DeleteWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4463,7 +4574,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListMatchableAttributes() { - ::grpc::Service::MarkMethodGeneric(40); + ::grpc::Service::MarkMethodGeneric(41); } ~WithGenericMethod_ListMatchableAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -4480,7 +4591,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_ListNamedEntities() { - ::grpc::Service::MarkMethodGeneric(41); + ::grpc::Service::MarkMethodGeneric(42); } ~WithGenericMethod_ListNamedEntities() override { BaseClassMustBeDerivedFromService(this); @@ -4497,7 +4608,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetNamedEntity() { - ::grpc::Service::MarkMethodGeneric(42); + ::grpc::Service::MarkMethodGeneric(43); } ~WithGenericMethod_GetNamedEntity() override { BaseClassMustBeDerivedFromService(this); @@ -4514,7 +4625,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_UpdateNamedEntity() { - ::grpc::Service::MarkMethodGeneric(43); + ::grpc::Service::MarkMethodGeneric(44); } ~WithGenericMethod_UpdateNamedEntity() override { BaseClassMustBeDerivedFromService(this); @@ -4531,7 +4642,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithGenericMethod_GetVersion() { - ::grpc::Service::MarkMethodGeneric(44); + ::grpc::Service::MarkMethodGeneric(45); } ~WithGenericMethod_GetVersion() override { BaseClassMustBeDerivedFromService(this); @@ -4883,12 +4994,32 @@ class AdminService final { } }; template + class WithRawMethod_RecoverExecution : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithRawMethod_RecoverExecution() { + ::grpc::Service::MarkMethodRaw(17); + } + ~WithRawMethod_RecoverExecution() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestRecoverExecution(::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(17, context, request, response, new_call_cq, notification_cq, tag); + } + }; + template class WithRawMethod_GetExecution : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetExecution() { - ::grpc::Service::MarkMethodRaw(17); + ::grpc::Service::MarkMethodRaw(18); } ~WithRawMethod_GetExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4899,7 +5030,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetExecution(::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(17, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -4908,7 +5039,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetExecutionData() { - ::grpc::Service::MarkMethodRaw(18); + ::grpc::Service::MarkMethodRaw(19); } ~WithRawMethod_GetExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -4919,7 +5050,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetExecutionData(::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(18, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -4928,7 +5059,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListExecutions() { - ::grpc::Service::MarkMethodRaw(19); + ::grpc::Service::MarkMethodRaw(20); } ~WithRawMethod_ListExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -4939,7 +5070,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListExecutions(::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(19, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -4948,7 +5079,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_TerminateExecution() { - ::grpc::Service::MarkMethodRaw(20); + ::grpc::Service::MarkMethodRaw(21); } ~WithRawMethod_TerminateExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4959,7 +5090,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestTerminateExecution(::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(20, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -4968,7 +5099,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetNodeExecution() { - ::grpc::Service::MarkMethodRaw(21); + ::grpc::Service::MarkMethodRaw(22); } ~WithRawMethod_GetNodeExecution() override { BaseClassMustBeDerivedFromService(this); @@ -4979,7 +5110,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetNodeExecution(::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(21, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(22, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -4988,7 +5119,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListNodeExecutions() { - ::grpc::Service::MarkMethodRaw(22); + ::grpc::Service::MarkMethodRaw(23); } ~WithRawMethod_ListNodeExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -4999,7 +5130,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListNodeExecutions(::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(22, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(23, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5008,7 +5139,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListNodeExecutionsForTask() { - ::grpc::Service::MarkMethodRaw(23); + ::grpc::Service::MarkMethodRaw(24); } ~WithRawMethod_ListNodeExecutionsForTask() override { BaseClassMustBeDerivedFromService(this); @@ -5019,7 +5150,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListNodeExecutionsForTask(::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(23, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(24, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5028,7 +5159,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetNodeExecutionData() { - ::grpc::Service::MarkMethodRaw(24); + ::grpc::Service::MarkMethodRaw(25); } ~WithRawMethod_GetNodeExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -5039,7 +5170,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetNodeExecutionData(::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(24, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(25, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5048,7 +5179,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_RegisterProject() { - ::grpc::Service::MarkMethodRaw(25); + ::grpc::Service::MarkMethodRaw(26); } ~WithRawMethod_RegisterProject() override { BaseClassMustBeDerivedFromService(this); @@ -5059,7 +5190,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestRegisterProject(::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(25, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(26, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5068,7 +5199,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_UpdateProject() { - ::grpc::Service::MarkMethodRaw(26); + ::grpc::Service::MarkMethodRaw(27); } ~WithRawMethod_UpdateProject() override { BaseClassMustBeDerivedFromService(this); @@ -5079,7 +5210,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateProject(::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(26, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(27, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5088,7 +5219,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListProjects() { - ::grpc::Service::MarkMethodRaw(27); + ::grpc::Service::MarkMethodRaw(28); } ~WithRawMethod_ListProjects() override { BaseClassMustBeDerivedFromService(this); @@ -5099,7 +5230,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListProjects(::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(27, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(28, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5108,7 +5239,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_CreateWorkflowEvent() { - ::grpc::Service::MarkMethodRaw(28); + ::grpc::Service::MarkMethodRaw(29); } ~WithRawMethod_CreateWorkflowEvent() override { BaseClassMustBeDerivedFromService(this); @@ -5119,7 +5250,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestCreateWorkflowEvent(::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(28, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(29, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5128,7 +5259,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_CreateNodeEvent() { - ::grpc::Service::MarkMethodRaw(29); + ::grpc::Service::MarkMethodRaw(30); } ~WithRawMethod_CreateNodeEvent() override { BaseClassMustBeDerivedFromService(this); @@ -5139,7 +5270,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestCreateNodeEvent(::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(29, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(30, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5148,7 +5279,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_CreateTaskEvent() { - ::grpc::Service::MarkMethodRaw(30); + ::grpc::Service::MarkMethodRaw(31); } ~WithRawMethod_CreateTaskEvent() override { BaseClassMustBeDerivedFromService(this); @@ -5159,7 +5290,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestCreateTaskEvent(::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(30, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(31, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5168,7 +5299,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetTaskExecution() { - ::grpc::Service::MarkMethodRaw(31); + ::grpc::Service::MarkMethodRaw(32); } ~WithRawMethod_GetTaskExecution() override { BaseClassMustBeDerivedFromService(this); @@ -5179,7 +5310,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetTaskExecution(::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(31, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(32, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5188,7 +5319,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListTaskExecutions() { - ::grpc::Service::MarkMethodRaw(32); + ::grpc::Service::MarkMethodRaw(33); } ~WithRawMethod_ListTaskExecutions() override { BaseClassMustBeDerivedFromService(this); @@ -5199,7 +5330,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListTaskExecutions(::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(32, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(33, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5208,7 +5339,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetTaskExecutionData() { - ::grpc::Service::MarkMethodRaw(33); + ::grpc::Service::MarkMethodRaw(34); } ~WithRawMethod_GetTaskExecutionData() override { BaseClassMustBeDerivedFromService(this); @@ -5219,7 +5350,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetTaskExecutionData(::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(33, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(34, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5228,7 +5359,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_UpdateProjectDomainAttributes() { - ::grpc::Service::MarkMethodRaw(34); + ::grpc::Service::MarkMethodRaw(35); } ~WithRawMethod_UpdateProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5239,7 +5370,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateProjectDomainAttributes(::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(34, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(35, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5248,7 +5379,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetProjectDomainAttributes() { - ::grpc::Service::MarkMethodRaw(35); + ::grpc::Service::MarkMethodRaw(36); } ~WithRawMethod_GetProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5259,7 +5390,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetProjectDomainAttributes(::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(35, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(36, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5268,7 +5399,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_DeleteProjectDomainAttributes() { - ::grpc::Service::MarkMethodRaw(36); + ::grpc::Service::MarkMethodRaw(37); } ~WithRawMethod_DeleteProjectDomainAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5279,7 +5410,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestDeleteProjectDomainAttributes(::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(36, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(37, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5288,7 +5419,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_UpdateWorkflowAttributes() { - ::grpc::Service::MarkMethodRaw(37); + ::grpc::Service::MarkMethodRaw(38); } ~WithRawMethod_UpdateWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5299,7 +5430,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateWorkflowAttributes(::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(37, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(38, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5308,7 +5439,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetWorkflowAttributes() { - ::grpc::Service::MarkMethodRaw(38); + ::grpc::Service::MarkMethodRaw(39); } ~WithRawMethod_GetWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5319,7 +5450,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetWorkflowAttributes(::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(38, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(39, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5328,7 +5459,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_DeleteWorkflowAttributes() { - ::grpc::Service::MarkMethodRaw(39); + ::grpc::Service::MarkMethodRaw(40); } ~WithRawMethod_DeleteWorkflowAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5339,7 +5470,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestDeleteWorkflowAttributes(::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(39, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(40, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5348,7 +5479,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListMatchableAttributes() { - ::grpc::Service::MarkMethodRaw(40); + ::grpc::Service::MarkMethodRaw(41); } ~WithRawMethod_ListMatchableAttributes() override { BaseClassMustBeDerivedFromService(this); @@ -5359,7 +5490,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListMatchableAttributes(::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(40, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(41, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5368,7 +5499,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_ListNamedEntities() { - ::grpc::Service::MarkMethodRaw(41); + ::grpc::Service::MarkMethodRaw(42); } ~WithRawMethod_ListNamedEntities() override { BaseClassMustBeDerivedFromService(this); @@ -5379,7 +5510,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestListNamedEntities(::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(41, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(42, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5388,7 +5519,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetNamedEntity() { - ::grpc::Service::MarkMethodRaw(42); + ::grpc::Service::MarkMethodRaw(43); } ~WithRawMethod_GetNamedEntity() override { BaseClassMustBeDerivedFromService(this); @@ -5399,7 +5530,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetNamedEntity(::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(42, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(43, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5408,7 +5539,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_UpdateNamedEntity() { - ::grpc::Service::MarkMethodRaw(43); + ::grpc::Service::MarkMethodRaw(44); } ~WithRawMethod_UpdateNamedEntity() override { BaseClassMustBeDerivedFromService(this); @@ -5419,7 +5550,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestUpdateNamedEntity(::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(43, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(44, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5428,7 +5559,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithRawMethod_GetVersion() { - ::grpc::Service::MarkMethodRaw(44); + ::grpc::Service::MarkMethodRaw(45); } ~WithRawMethod_GetVersion() override { BaseClassMustBeDerivedFromService(this); @@ -5439,7 +5570,7 @@ class AdminService final { return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } void RequestGetVersion(::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(44, context, request, response, new_call_cq, notification_cq, tag); + ::grpc::Service::RequestAsyncUnary(45, context, request, response, new_call_cq, notification_cq, tag); } }; template @@ -5868,12 +5999,37 @@ class AdminService final { virtual void RelaunchExecution(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } }; template + class ExperimentalWithRawCallbackMethod_RecoverExecution : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + ExperimentalWithRawCallbackMethod_RecoverExecution() { + ::grpc::Service::experimental().MarkMethodRawCallback(17, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this](::grpc::ServerContext* context, + const ::grpc::ByteBuffer* request, + ::grpc::ByteBuffer* response, + ::grpc::experimental::ServerCallbackRpcController* controller) { + this->RecoverExecution(context, request, response, controller); + })); + } + ~ExperimentalWithRawCallbackMethod_RecoverExecution() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + virtual void RecoverExecution(::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response, ::grpc::experimental::ServerCallbackRpcController* controller) { controller->Finish(::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "")); } + }; + template class ExperimentalWithRawCallbackMethod_GetExecution : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetExecution() { - ::grpc::Service::experimental().MarkMethodRawCallback(17, + ::grpc::Service::experimental().MarkMethodRawCallback(18, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -5898,7 +6054,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetExecutionData() { - ::grpc::Service::experimental().MarkMethodRawCallback(18, + ::grpc::Service::experimental().MarkMethodRawCallback(19, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -5923,7 +6079,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListExecutions() { - ::grpc::Service::experimental().MarkMethodRawCallback(19, + ::grpc::Service::experimental().MarkMethodRawCallback(20, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -5948,7 +6104,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_TerminateExecution() { - ::grpc::Service::experimental().MarkMethodRawCallback(20, + ::grpc::Service::experimental().MarkMethodRawCallback(21, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -5973,7 +6129,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetNodeExecution() { - ::grpc::Service::experimental().MarkMethodRawCallback(21, + ::grpc::Service::experimental().MarkMethodRawCallback(22, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -5998,7 +6154,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListNodeExecutions() { - ::grpc::Service::experimental().MarkMethodRawCallback(22, + ::grpc::Service::experimental().MarkMethodRawCallback(23, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6023,7 +6179,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListNodeExecutionsForTask() { - ::grpc::Service::experimental().MarkMethodRawCallback(23, + ::grpc::Service::experimental().MarkMethodRawCallback(24, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6048,7 +6204,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetNodeExecutionData() { - ::grpc::Service::experimental().MarkMethodRawCallback(24, + ::grpc::Service::experimental().MarkMethodRawCallback(25, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6073,7 +6229,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_RegisterProject() { - ::grpc::Service::experimental().MarkMethodRawCallback(25, + ::grpc::Service::experimental().MarkMethodRawCallback(26, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6098,7 +6254,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_UpdateProject() { - ::grpc::Service::experimental().MarkMethodRawCallback(26, + ::grpc::Service::experimental().MarkMethodRawCallback(27, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6123,7 +6279,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListProjects() { - ::grpc::Service::experimental().MarkMethodRawCallback(27, + ::grpc::Service::experimental().MarkMethodRawCallback(28, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6148,7 +6304,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_CreateWorkflowEvent() { - ::grpc::Service::experimental().MarkMethodRawCallback(28, + ::grpc::Service::experimental().MarkMethodRawCallback(29, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6173,7 +6329,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_CreateNodeEvent() { - ::grpc::Service::experimental().MarkMethodRawCallback(29, + ::grpc::Service::experimental().MarkMethodRawCallback(30, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6198,7 +6354,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_CreateTaskEvent() { - ::grpc::Service::experimental().MarkMethodRawCallback(30, + ::grpc::Service::experimental().MarkMethodRawCallback(31, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6223,7 +6379,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetTaskExecution() { - ::grpc::Service::experimental().MarkMethodRawCallback(31, + ::grpc::Service::experimental().MarkMethodRawCallback(32, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6248,7 +6404,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListTaskExecutions() { - ::grpc::Service::experimental().MarkMethodRawCallback(32, + ::grpc::Service::experimental().MarkMethodRawCallback(33, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6273,7 +6429,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetTaskExecutionData() { - ::grpc::Service::experimental().MarkMethodRawCallback(33, + ::grpc::Service::experimental().MarkMethodRawCallback(34, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6298,7 +6454,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_UpdateProjectDomainAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(34, + ::grpc::Service::experimental().MarkMethodRawCallback(35, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6323,7 +6479,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetProjectDomainAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(35, + ::grpc::Service::experimental().MarkMethodRawCallback(36, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6348,7 +6504,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_DeleteProjectDomainAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(36, + ::grpc::Service::experimental().MarkMethodRawCallback(37, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6373,7 +6529,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_UpdateWorkflowAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(37, + ::grpc::Service::experimental().MarkMethodRawCallback(38, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6398,7 +6554,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetWorkflowAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(38, + ::grpc::Service::experimental().MarkMethodRawCallback(39, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6423,7 +6579,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_DeleteWorkflowAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(39, + ::grpc::Service::experimental().MarkMethodRawCallback(40, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6448,7 +6604,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListMatchableAttributes() { - ::grpc::Service::experimental().MarkMethodRawCallback(40, + ::grpc::Service::experimental().MarkMethodRawCallback(41, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6473,7 +6629,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_ListNamedEntities() { - ::grpc::Service::experimental().MarkMethodRawCallback(41, + ::grpc::Service::experimental().MarkMethodRawCallback(42, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6498,7 +6654,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetNamedEntity() { - ::grpc::Service::experimental().MarkMethodRawCallback(42, + ::grpc::Service::experimental().MarkMethodRawCallback(43, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6523,7 +6679,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_UpdateNamedEntity() { - ::grpc::Service::experimental().MarkMethodRawCallback(43, + ::grpc::Service::experimental().MarkMethodRawCallback(44, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6548,7 +6704,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: ExperimentalWithRawCallbackMethod_GetVersion() { - ::grpc::Service::experimental().MarkMethodRawCallback(44, + ::grpc::Service::experimental().MarkMethodRawCallback(45, new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( [this](::grpc::ServerContext* context, const ::grpc::ByteBuffer* request, @@ -6908,12 +7064,32 @@ class AdminService final { virtual ::grpc::Status StreamedRelaunchExecution(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::ExecutionRelaunchRequest,::flyteidl::admin::ExecutionCreateResponse>* server_unary_streamer) = 0; }; template + class WithStreamedUnaryMethod_RecoverExecution : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service *service) {} + public: + WithStreamedUnaryMethod_RecoverExecution() { + ::grpc::Service::MarkMethodStreamed(17, + new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ExecutionRecoverRequest, ::flyteidl::admin::ExecutionCreateResponse>(std::bind(&WithStreamedUnaryMethod_RecoverExecution::StreamedRecoverExecution, this, std::placeholders::_1, std::placeholders::_2))); + } + ~WithStreamedUnaryMethod_RecoverExecution() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status RecoverExecution(::grpc::ServerContext* context, const ::flyteidl::admin::ExecutionRecoverRequest* request, ::flyteidl::admin::ExecutionCreateResponse* response) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedRecoverExecution(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::ExecutionRecoverRequest,::flyteidl::admin::ExecutionCreateResponse>* server_unary_streamer) = 0; + }; + template class WithStreamedUnaryMethod_GetExecution : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetExecution() { - ::grpc::Service::MarkMethodStreamed(17, + ::grpc::Service::MarkMethodStreamed(18, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetRequest, ::flyteidl::admin::Execution>(std::bind(&WithStreamedUnaryMethod_GetExecution::StreamedGetExecution, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetExecution() override { @@ -6933,7 +7109,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetExecutionData() { - ::grpc::Service::MarkMethodStreamed(18, + ::grpc::Service::MarkMethodStreamed(19, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowExecutionGetDataRequest, ::flyteidl::admin::WorkflowExecutionGetDataResponse>(std::bind(&WithStreamedUnaryMethod_GetExecutionData::StreamedGetExecutionData, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetExecutionData() override { @@ -6953,7 +7129,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListExecutions() { - ::grpc::Service::MarkMethodStreamed(19, + ::grpc::Service::MarkMethodStreamed(20, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ResourceListRequest, ::flyteidl::admin::ExecutionList>(std::bind(&WithStreamedUnaryMethod_ListExecutions::StreamedListExecutions, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListExecutions() override { @@ -6973,7 +7149,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_TerminateExecution() { - ::grpc::Service::MarkMethodStreamed(20, + ::grpc::Service::MarkMethodStreamed(21, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ExecutionTerminateRequest, ::flyteidl::admin::ExecutionTerminateResponse>(std::bind(&WithStreamedUnaryMethod_TerminateExecution::StreamedTerminateExecution, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_TerminateExecution() override { @@ -6993,7 +7169,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetNodeExecution() { - ::grpc::Service::MarkMethodStreamed(21, + ::grpc::Service::MarkMethodStreamed(22, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NodeExecutionGetRequest, ::flyteidl::admin::NodeExecution>(std::bind(&WithStreamedUnaryMethod_GetNodeExecution::StreamedGetNodeExecution, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetNodeExecution() override { @@ -7013,7 +7189,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListNodeExecutions() { - ::grpc::Service::MarkMethodStreamed(22, + ::grpc::Service::MarkMethodStreamed(23, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NodeExecutionListRequest, ::flyteidl::admin::NodeExecutionList>(std::bind(&WithStreamedUnaryMethod_ListNodeExecutions::StreamedListNodeExecutions, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListNodeExecutions() override { @@ -7033,7 +7209,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListNodeExecutionsForTask() { - ::grpc::Service::MarkMethodStreamed(23, + ::grpc::Service::MarkMethodStreamed(24, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NodeExecutionForTaskListRequest, ::flyteidl::admin::NodeExecutionList>(std::bind(&WithStreamedUnaryMethod_ListNodeExecutionsForTask::StreamedListNodeExecutionsForTask, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListNodeExecutionsForTask() override { @@ -7053,7 +7229,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetNodeExecutionData() { - ::grpc::Service::MarkMethodStreamed(24, + ::grpc::Service::MarkMethodStreamed(25, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NodeExecutionGetDataRequest, ::flyteidl::admin::NodeExecutionGetDataResponse>(std::bind(&WithStreamedUnaryMethod_GetNodeExecutionData::StreamedGetNodeExecutionData, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetNodeExecutionData() override { @@ -7073,7 +7249,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_RegisterProject() { - ::grpc::Service::MarkMethodStreamed(25, + ::grpc::Service::MarkMethodStreamed(26, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ProjectRegisterRequest, ::flyteidl::admin::ProjectRegisterResponse>(std::bind(&WithStreamedUnaryMethod_RegisterProject::StreamedRegisterProject, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_RegisterProject() override { @@ -7093,7 +7269,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_UpdateProject() { - ::grpc::Service::MarkMethodStreamed(26, + ::grpc::Service::MarkMethodStreamed(27, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::Project, ::flyteidl::admin::ProjectUpdateResponse>(std::bind(&WithStreamedUnaryMethod_UpdateProject::StreamedUpdateProject, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_UpdateProject() override { @@ -7113,7 +7289,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListProjects() { - ::grpc::Service::MarkMethodStreamed(27, + ::grpc::Service::MarkMethodStreamed(28, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ProjectListRequest, ::flyteidl::admin::Projects>(std::bind(&WithStreamedUnaryMethod_ListProjects::StreamedListProjects, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListProjects() override { @@ -7133,7 +7309,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_CreateWorkflowEvent() { - ::grpc::Service::MarkMethodStreamed(28, + ::grpc::Service::MarkMethodStreamed(29, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowExecutionEventRequest, ::flyteidl::admin::WorkflowExecutionEventResponse>(std::bind(&WithStreamedUnaryMethod_CreateWorkflowEvent::StreamedCreateWorkflowEvent, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_CreateWorkflowEvent() override { @@ -7153,7 +7329,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_CreateNodeEvent() { - ::grpc::Service::MarkMethodStreamed(29, + ::grpc::Service::MarkMethodStreamed(30, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NodeExecutionEventRequest, ::flyteidl::admin::NodeExecutionEventResponse>(std::bind(&WithStreamedUnaryMethod_CreateNodeEvent::StreamedCreateNodeEvent, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_CreateNodeEvent() override { @@ -7173,7 +7349,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_CreateTaskEvent() { - ::grpc::Service::MarkMethodStreamed(30, + ::grpc::Service::MarkMethodStreamed(31, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::TaskExecutionEventRequest, ::flyteidl::admin::TaskExecutionEventResponse>(std::bind(&WithStreamedUnaryMethod_CreateTaskEvent::StreamedCreateTaskEvent, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_CreateTaskEvent() override { @@ -7193,7 +7369,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetTaskExecution() { - ::grpc::Service::MarkMethodStreamed(31, + ::grpc::Service::MarkMethodStreamed(32, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::TaskExecutionGetRequest, ::flyteidl::admin::TaskExecution>(std::bind(&WithStreamedUnaryMethod_GetTaskExecution::StreamedGetTaskExecution, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetTaskExecution() override { @@ -7213,7 +7389,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListTaskExecutions() { - ::grpc::Service::MarkMethodStreamed(32, + ::grpc::Service::MarkMethodStreamed(33, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::TaskExecutionListRequest, ::flyteidl::admin::TaskExecutionList>(std::bind(&WithStreamedUnaryMethod_ListTaskExecutions::StreamedListTaskExecutions, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListTaskExecutions() override { @@ -7233,7 +7409,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetTaskExecutionData() { - ::grpc::Service::MarkMethodStreamed(33, + ::grpc::Service::MarkMethodStreamed(34, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::TaskExecutionGetDataRequest, ::flyteidl::admin::TaskExecutionGetDataResponse>(std::bind(&WithStreamedUnaryMethod_GetTaskExecutionData::StreamedGetTaskExecutionData, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetTaskExecutionData() override { @@ -7253,7 +7429,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_UpdateProjectDomainAttributes() { - ::grpc::Service::MarkMethodStreamed(34, + ::grpc::Service::MarkMethodStreamed(35, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesUpdateRequest, ::flyteidl::admin::ProjectDomainAttributesUpdateResponse>(std::bind(&WithStreamedUnaryMethod_UpdateProjectDomainAttributes::StreamedUpdateProjectDomainAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_UpdateProjectDomainAttributes() override { @@ -7273,7 +7449,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetProjectDomainAttributes() { - ::grpc::Service::MarkMethodStreamed(35, + ::grpc::Service::MarkMethodStreamed(36, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesGetRequest, ::flyteidl::admin::ProjectDomainAttributesGetResponse>(std::bind(&WithStreamedUnaryMethod_GetProjectDomainAttributes::StreamedGetProjectDomainAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetProjectDomainAttributes() override { @@ -7293,7 +7469,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_DeleteProjectDomainAttributes() { - ::grpc::Service::MarkMethodStreamed(36, + ::grpc::Service::MarkMethodStreamed(37, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ProjectDomainAttributesDeleteRequest, ::flyteidl::admin::ProjectDomainAttributesDeleteResponse>(std::bind(&WithStreamedUnaryMethod_DeleteProjectDomainAttributes::StreamedDeleteProjectDomainAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_DeleteProjectDomainAttributes() override { @@ -7313,7 +7489,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_UpdateWorkflowAttributes() { - ::grpc::Service::MarkMethodStreamed(37, + ::grpc::Service::MarkMethodStreamed(38, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowAttributesUpdateRequest, ::flyteidl::admin::WorkflowAttributesUpdateResponse>(std::bind(&WithStreamedUnaryMethod_UpdateWorkflowAttributes::StreamedUpdateWorkflowAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_UpdateWorkflowAttributes() override { @@ -7333,7 +7509,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetWorkflowAttributes() { - ::grpc::Service::MarkMethodStreamed(38, + ::grpc::Service::MarkMethodStreamed(39, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowAttributesGetRequest, ::flyteidl::admin::WorkflowAttributesGetResponse>(std::bind(&WithStreamedUnaryMethod_GetWorkflowAttributes::StreamedGetWorkflowAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetWorkflowAttributes() override { @@ -7353,7 +7529,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_DeleteWorkflowAttributes() { - ::grpc::Service::MarkMethodStreamed(39, + ::grpc::Service::MarkMethodStreamed(40, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::WorkflowAttributesDeleteRequest, ::flyteidl::admin::WorkflowAttributesDeleteResponse>(std::bind(&WithStreamedUnaryMethod_DeleteWorkflowAttributes::StreamedDeleteWorkflowAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_DeleteWorkflowAttributes() override { @@ -7373,7 +7549,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListMatchableAttributes() { - ::grpc::Service::MarkMethodStreamed(40, + ::grpc::Service::MarkMethodStreamed(41, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::ListMatchableAttributesRequest, ::flyteidl::admin::ListMatchableAttributesResponse>(std::bind(&WithStreamedUnaryMethod_ListMatchableAttributes::StreamedListMatchableAttributes, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListMatchableAttributes() override { @@ -7393,7 +7569,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_ListNamedEntities() { - ::grpc::Service::MarkMethodStreamed(41, + ::grpc::Service::MarkMethodStreamed(42, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NamedEntityListRequest, ::flyteidl::admin::NamedEntityList>(std::bind(&WithStreamedUnaryMethod_ListNamedEntities::StreamedListNamedEntities, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_ListNamedEntities() override { @@ -7413,7 +7589,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetNamedEntity() { - ::grpc::Service::MarkMethodStreamed(42, + ::grpc::Service::MarkMethodStreamed(43, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NamedEntityGetRequest, ::flyteidl::admin::NamedEntity>(std::bind(&WithStreamedUnaryMethod_GetNamedEntity::StreamedGetNamedEntity, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetNamedEntity() override { @@ -7433,7 +7609,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_UpdateNamedEntity() { - ::grpc::Service::MarkMethodStreamed(43, + ::grpc::Service::MarkMethodStreamed(44, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::NamedEntityUpdateRequest, ::flyteidl::admin::NamedEntityUpdateResponse>(std::bind(&WithStreamedUnaryMethod_UpdateNamedEntity::StreamedUpdateNamedEntity, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_UpdateNamedEntity() override { @@ -7453,7 +7629,7 @@ class AdminService final { void BaseClassMustBeDerivedFromService(const Service *service) {} public: WithStreamedUnaryMethod_GetVersion() { - ::grpc::Service::MarkMethodStreamed(44, + ::grpc::Service::MarkMethodStreamed(45, new ::grpc::internal::StreamedUnaryHandler< ::flyteidl::admin::GetVersionRequest, ::flyteidl::admin::GetVersionResponse>(std::bind(&WithStreamedUnaryMethod_GetVersion::StreamedGetVersion, this, std::placeholders::_1, std::placeholders::_2))); } ~WithStreamedUnaryMethod_GetVersion() override { @@ -7467,9 +7643,9 @@ class AdminService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedGetVersion(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::flyteidl::admin::GetVersionRequest,::flyteidl::admin::GetVersionResponse>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; + typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService; typedef Service SplitStreamedService; - typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService; + typedef WithStreamedUnaryMethod_CreateTask > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService; }; } // namespace service diff --git a/gen/pb-cpp/flyteidl/service/admin.pb.cc b/gen/pb-cpp/flyteidl/service/admin.pb.cc index 6fb7dde6c..7efee4d43 100644 --- a/gen/pb-cpp/flyteidl/service/admin.pb.cc +++ b/gen/pb-cpp/flyteidl/service/admin.pb.cc @@ -51,7 +51,7 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto[] = "dmin/task_execution.proto\032\034flyteidl/admi" "n/version.proto\032\033flyteidl/admin/common.p" "roto\032,protoc-gen-swagger/options/annotat" - "ions.proto2\245a\n\014AdminService\022\305\002\n\nCreateTa" + "ions.proto2\305f\n\014AdminService\022\305\002\n\nCreateTa" "sk\022!.flyteidl.admin.TaskCreateRequest\032\"." "flyteidl.admin.TaskCreateResponse\"\357\001\202\323\344\223" "\002\022\"\r/api/v1/tasks:\001*\222A\323\001\032&Create and reg" @@ -170,206 +170,223 @@ const char descriptor_table_protodef_flyteidl_2fservice_2fadmin_2eproto[] = "idl.admin.ExecutionRelaunchRequest\032\'.fly" "teidl.admin.ExecutionCreateResponse\"I\202\323\344" "\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032\036" - "Relaunch a workflow execution.\022\302\001\n\014GetEx" - "ecution\022+.flyteidl.admin.WorkflowExecuti" - "onGetRequest\032\031.flyteidl.admin.Execution\"" - "j\202\323\344\223\0027\0225/api/v1/executions/{id.project}" - "/{id.domain}/{id.name}\222A*\032(Retrieve an e" - "xisting workflow execution.\022\202\002\n\020GetExecu" - "tionData\022/.flyteidl.admin.WorkflowExecut" - "ionGetDataRequest\0320.flyteidl.admin.Workf" - "lowExecutionGetDataResponse\"\212\001\202\323\344\223\002<\022:/a" - "pi/v1/data/executions/{id.project}/{id.d" - "omain}/{id.name}\222AE\032CRetrieve input and " - "output data from an existing workflow ex" - "ecution.\022\310\001\n\016ListExecutions\022#.flyteidl.a" - "dmin.ResourceListRequest\032\035.flyteidl.admi" - "n.ExecutionList\"r\202\323\344\223\002-\022+/api/v1/executi" - "ons/{id.project}/{id.domain}\222A<\032:Fetch e" - "xisting workflow executions matching inp" - "ut filters.\022\364\001\n\022TerminateExecution\022).fly" - "teidl.admin.ExecutionTerminateRequest\032*." - "flyteidl.admin.ExecutionTerminateRespons" - "e\"\206\001\202\323\344\223\002:*5/api/v1/executions/{id.proje" - "ct}/{id.domain}/{id.name}:\001*\222AC\032ATermina" - "te the active workflow execution specifi" - "ed in the request.\022\374\001\n\020GetNodeExecution\022" - "\'.flyteidl.admin.NodeExecutionGetRequest" - "\032\035.flyteidl.admin.NodeExecution\"\237\001\202\323\344\223\002p" - "\022n/api/v1/node_executions/{id.execution_" - "id.project}/{id.execution_id.domain}/{id" - ".execution_id.name}/{id.node_id}\222A&\032$Ret" - "rieve an existing node execution.\022\232\002\n\022Li" - "stNodeExecutions\022(.flyteidl.admin.NodeEx" - "ecutionListRequest\032!.flyteidl.admin.Node" - "ExecutionList\"\266\001\202\323\344\223\002u\022s/api/v1/node_exe" - "cutions/{workflow_execution_id.project}/" - "{workflow_execution_id.domain}/{workflow" - "_execution_id.name}\222A8\0326Fetch existing n" - "ode executions matching input filters.\022\357" - "\004\n\031ListNodeExecutionsForTask\022/.flyteidl." - "admin.NodeExecutionForTaskListRequest\032!." - "flyteidl.admin.NodeExecutionList\"\375\003\202\323\344\223\002" - "\254\003\022\251\003/api/v1/children/task_executions/{t" - "ask_execution_id.node_execution_id.execu" - "tion_id.project}/{task_execution_id.node" - "_execution_id.execution_id.domain}/{task" - "_execution_id.node_execution_id.executio" - "n_id.name}/{task_execution_id.node_execu" - "tion_id.node_id}/{task_execution_id.task" - "_id.project}/{task_execution_id.task_id." - "domain}/{task_execution_id.task_id.name}" - "/{task_execution_id.task_id.version}/{ta" - "sk_execution_id.retry_attempt}\222AG\032EFetch" - " child node executions launched by the s" - "pecified task execution.\022\263\002\n\024GetNodeExec" - "utionData\022+.flyteidl.admin.NodeExecution" - "GetDataRequest\032,.flyteidl.admin.NodeExec" - "utionGetDataResponse\"\277\001\202\323\344\223\002u\022s/api/v1/d" - "ata/node_executions/{id.execution_id.pro" - "ject}/{id.execution_id.domain}/{id.execu" - "tion_id.name}/{id.node_id}\222AA\032\?Retrieve " - "input and output data from an existing n" - "ode execution.\022\227\001\n\017RegisterProject\022&.fly" - "teidl.admin.ProjectRegisterRequest\032\'.fly" - "teidl.admin.ProjectRegisterResponse\"3\202\323\344" - "\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023Register a " - "project.\022\207\001\n\rUpdateProject\022\027.flyteidl.ad" - "min.Project\032%.flyteidl.admin.ProjectUpda" - "teResponse\"6\202\323\344\223\002\032\032\025/api/v1/projects/{id" - "}:\001*\222A\023\032\021Update a project.\022\205\001\n\014ListProje" - "cts\022\".flyteidl.admin.ProjectListRequest\032" - "\030.flyteidl.admin.Projects\"7\202\323\344\223\002\022\022\020/api/" - "v1/projects\222A\034\032\032Fetch registered project" - "s.\022\335\001\n\023CreateWorkflowEvent\022-.flyteidl.ad" - "min.WorkflowExecutionEventRequest\032..flyt" - "eidl.admin.WorkflowExecutionEventRespons" - "e\"g\202\323\344\223\002\035\"\030/api/v1/events/workflows:\001*\222A" - "A\032\?Create a workflow execution event rec" - "ording a phase transition.\022\311\001\n\017CreateNod" - "eEvent\022).flyteidl.admin.NodeExecutionEve" - "ntRequest\032*.flyteidl.admin.NodeExecution" - "EventResponse\"_\202\323\344\223\002\031\"\024/api/v1/events/no" - "des:\001*\222A=\032;Create a node execution event" - " recording a phase transition.\022\311\001\n\017Creat" - "eTaskEvent\022).flyteidl.admin.TaskExecutio" - "nEventRequest\032*.flyteidl.admin.TaskExecu" - "tionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1/event" - "s/tasks:\001*\222A=\032;Create a task execution e" - "vent recording a phase transition.\022\251\003\n\020G" - "etTaskExecution\022\'.flyteidl.admin.TaskExe" - "cutionGetRequest\032\035.flyteidl.admin.TaskEx" - "ecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/task_executi" - "ons/{id.node_execution_id.execution_id.p" - "roject}/{id.node_execution_id.execution_" - "id.domain}/{id.node_execution_id.executi" - "on_id.name}/{id.node_execution_id.node_i" - "d}/{id.task_id.project}/{id.task_id.doma" - "in}/{id.task_id.name}/{id.task_id.versio" - "n}/{id.retry_attempt}\222A&\032$Retrieve an ex" - "isting task execution.\022\323\002\n\022ListTaskExecu" - "tions\022(.flyteidl.admin.TaskExecutionList" - "Request\032!.flyteidl.admin.TaskExecutionLi" - "st\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_executions/{" + "Relaunch a workflow execution.\022\235\005\n\020Recov" + "erExecution\022\'.flyteidl.admin.ExecutionRe" + "coverRequest\032\'.flyteidl.admin.ExecutionC" + "reateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executio" + "ns/recover:\001*\222A\215\004\032\212\004Recreates a previous" + "ly-run workflow execution that will only" + " start executing from the last known fai" + "lure point. In Recover mode, users canno" + "t change any input parameters or update " + "the version of the execution. This is ex" + "tremely useful to recover from system er" + "rors and byzantine faults like - Loss of" + " K8s cluster, bugs in platform or instab" + "ility, machine failures, downstream syst" + "em failures (downstream services), or si" + "mply to recover executions that failed b" + "ecause of retry exhaustion and should co" + "mplete if tried again.\022\302\001\n\014GetExecution\022" + "+.flyteidl.admin.WorkflowExecutionGetReq" + "uest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027\022" + "5/api/v1/executions/{id.project}/{id.dom" + "ain}/{id.name}\222A*\032(Retrieve an existing " + "workflow execution.\022\202\002\n\020GetExecutionData" + "\022/.flyteidl.admin.WorkflowExecutionGetDa" + "taRequest\0320.flyteidl.admin.WorkflowExecu" + "tionGetDataResponse\"\212\001\202\323\344\223\002<\022:/api/v1/da" + "ta/executions/{id.project}/{id.domain}/{" + "id.name}\222AE\032CRetrieve input and output d" + "ata from an existing workflow execution." + "\022\310\001\n\016ListExecutions\022#.flyteidl.admin.Res" + "ourceListRequest\032\035.flyteidl.admin.Execut" + "ionList\"r\202\323\344\223\002-\022+/api/v1/executions/{id." + "project}/{id.domain}\222A<\032:Fetch existing " + "workflow executions matching input filte" + "rs.\022\364\001\n\022TerminateExecution\022).flyteidl.ad" + "min.ExecutionTerminateRequest\032*.flyteidl" + ".admin.ExecutionTerminateResponse\"\206\001\202\323\344\223" + "\002:*5/api/v1/executions/{id.project}/{id." + "domain}/{id.name}:\001*\222AC\032ATerminate the a" + "ctive workflow execution specified in th" + "e request.\022\374\001\n\020GetNodeExecution\022\'.flytei" + "dl.admin.NodeExecutionGetRequest\032\035.flyte" + "idl.admin.NodeExecution\"\237\001\202\323\344\223\002p\022n/api/v" + "1/node_executions/{id.execution_id.proje" + "ct}/{id.execution_id.domain}/{id.executi" + "on_id.name}/{id.node_id}\222A&\032$Retrieve an" + " existing node execution.\022\232\002\n\022ListNodeEx" + "ecutions\022(.flyteidl.admin.NodeExecutionL" + "istRequest\032!.flyteidl.admin.NodeExecutio" + "nList\"\266\001\202\323\344\223\002u\022s/api/v1/node_executions/" + "{workflow_execution_id.project}/{workflo" + "w_execution_id.domain}/{workflow_executi" + "on_id.name}\222A8\0326Fetch existing node exec" + "utions matching input filters.\022\357\004\n\031ListN" + "odeExecutionsForTask\022/.flyteidl.admin.No" + "deExecutionForTaskListRequest\032!.flyteidl" + ".admin.NodeExecutionList\"\375\003\202\323\344\223\002\254\003\022\251\003/ap" + "i/v1/children/task_executions/{task_exec" + "ution_id.node_execution_id.execution_id." + "project}/{task_execution_id.node_executi" + "on_id.execution_id.domain}/{task_executi" + "on_id.node_execution_id.execution_id.nam" + "e}/{task_execution_id.node_execution_id." + "node_id}/{task_execution_id.task_id.proj" + "ect}/{task_execution_id.task_id.domain}/" + "{task_execution_id.task_id.name}/{task_e" + "xecution_id.task_id.version}/{task_execu" + "tion_id.retry_attempt}\222AG\032EFetch child n" + "ode executions launched by the specified" + " task execution.\022\263\002\n\024GetNodeExecutionDat" + "a\022+.flyteidl.admin.NodeExecutionGetDataR" + "equest\032,.flyteidl.admin.NodeExecutionGet" + "DataResponse\"\277\001\202\323\344\223\002u\022s/api/v1/data/node" + "_executions/{id.execution_id.project}/{i" + "d.execution_id.domain}/{id.execution_id." + "name}/{id.node_id}\222AA\032\?Retrieve input an" + "d output data from an existing node exec" + "ution.\022\227\001\n\017RegisterProject\022&.flyteidl.ad" + "min.ProjectRegisterRequest\032\'.flyteidl.ad" + "min.ProjectRegisterResponse\"3\202\323\344\223\002\025\"\020/ap" + "i/v1/projects:\001*\222A\025\032\023Register a project." + "\022\207\001\n\rUpdateProject\022\027.flyteidl.admin.Proj" + "ect\032%.flyteidl.admin.ProjectUpdateRespon" + "se\"6\202\323\344\223\002\032\032\025/api/v1/projects/{id}:\001*\222A\023\032" + "\021Update a project.\022\205\001\n\014ListProjects\022\".fl" + "yteidl.admin.ProjectListRequest\032\030.flytei" + "dl.admin.Projects\"7\202\323\344\223\002\022\022\020/api/v1/proje" + "cts\222A\034\032\032Fetch registered projects.\022\335\001\n\023C" + "reateWorkflowEvent\022-.flyteidl.admin.Work" + "flowExecutionEventRequest\032..flyteidl.adm" + "in.WorkflowExecutionEventResponse\"g\202\323\344\223\002" + "\035\"\030/api/v1/events/workflows:\001*\222AA\032\?Creat" + "e a workflow execution event recording a" + " phase transition.\022\311\001\n\017CreateNodeEvent\022)" + ".flyteidl.admin.NodeExecutionEventReques" + "t\032*.flyteidl.admin.NodeExecutionEventRes" + "ponse\"_\202\323\344\223\002\031\"\024/api/v1/events/nodes:\001*\222A" + "=\032;Create a node execution event recordi" + "ng a phase transition.\022\311\001\n\017CreateTaskEve" + "nt\022).flyteidl.admin.TaskExecutionEventRe" + "quest\032*.flyteidl.admin.TaskExecutionEven" + "tResponse\"_\202\323\344\223\002\031\"\024/api/v1/events/tasks:" + "\001*\222A=\032;Create a task execution event rec" + "ording a phase transition.\022\251\003\n\020GetTaskEx" + "ecution\022\'.flyteidl.admin.TaskExecutionGe" + "tRequest\032\035.flyteidl.admin.TaskExecution\"" + "\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/task_executions/{id." "node_execution_id.execution_id.project}/" - "{node_execution_id.execution_id.domain}/" - "{node_execution_id.execution_id.name}/{n" - "ode_execution_id.node_id}\222A8\0326Fetch exis" - "ting task executions matching input filt" - "ers.\022\340\003\n\024GetTaskExecutionData\022+.flyteidl" - ".admin.TaskExecutionGetDataRequest\032,.fly" - "teidl.admin.TaskExecutionGetDataResponse" - "\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_execution" - "s/{id.node_execution_id.execution_id.pro" - "ject}/{id.node_execution_id.execution_id" - ".domain}/{id.node_execution_id.execution" - "_id.name}/{id.node_execution_id.node_id}" - "/{id.task_id.project}/{id.task_id.domain" - "}/{id.task_id.name}/{id.task_id.version}" - "/{id.retry_attempt}\222AA\032\?Retrieve input a" - "nd output data from an existing task exe" - "cution.\022\277\002\n\035UpdateProjectDomainAttribute" - "s\0224.flyteidl.admin.ProjectDomainAttribut" - "esUpdateRequest\0325.flyteidl.admin.Project" - "DomainAttributesUpdateResponse\"\260\001\202\323\344\223\002O\032" - "J/api/v1/project_domain_attributes/{attr" - "ibutes.project}/{attributes.domain}:\001*\222A" - "X\032VUpdate the customized resource attrib" - "utes associated with a project-domain co" - "mbination\022\237\002\n\032GetProjectDomainAttributes" - "\0221.flyteidl.admin.ProjectDomainAttribute" - "sGetRequest\0322.flyteidl.admin.ProjectDoma" - "inAttributesGetResponse\"\231\001\202\323\344\223\0026\0224/api/v" - "1/project_domain_attributes/{project}/{d" - "omain}\222AZ\032XRetrieve the customized resou" - "rce attributes associated with a project" - "-domain combination\022\251\002\n\035DeleteProjectDom" - "ainAttributes\0224.flyteidl.admin.ProjectDo" - "mainAttributesDeleteRequest\0325.flyteidl.a" - "dmin.ProjectDomainAttributesDeleteRespon" - "se\"\232\001\202\323\344\223\0029*4/api/v1/project_domain_attr" - "ibutes/{project}/{domain}:\001*\222AX\032VDelete " - "the customized resource attributes assoc" - "iated with a project-domain combination\022" - "\316\002\n\030UpdateWorkflowAttributes\022/.flyteidl." - "admin.WorkflowAttributesUpdateRequest\0320." - "flyteidl.admin.WorkflowAttributesUpdateR" - "esponse\"\316\001\202\323\344\223\002_\032Z/api/v1/workflow_attri" - "butes/{attributes.project}/{attributes.d" - "omain}/{attributes.workflow}:\001*\222Af\032dUpda" - "te the customized resource attributes as" - "sociated with a project, domain and work" - "flow combination\022\243\002\n\025GetWorkflowAttribut" - "es\022,.flyteidl.admin.WorkflowAttributesGe" - "tRequest\032-.flyteidl.admin.WorkflowAttrib" - "utesGetResponse\"\254\001\202\323\344\223\002;\0229/api/v1/workfl" - "ow_attributes/{project}/{domain}/{workfl" - "ow}\222Ah\032fRetrieve the customized resource" - " attributes associated with a project, d" - "omain and workflow combination\022\255\002\n\030Delet" - "eWorkflowAttributes\022/.flyteidl.admin.Wor" - "kflowAttributesDeleteRequest\0320.flyteidl." - "admin.WorkflowAttributesDeleteResponse\"\255" - "\001\202\323\344\223\002>*9/api/v1/workflow_attributes/{pr" - "oject}/{domain}/{workflow}:\001*\222Af\032dDelete" - " the customized resource attributes asso" - "ciated with a project, domain and workfl" - "ow combination\022\341\001\n\027ListMatchableAttribut" - "es\022..flyteidl.admin.ListMatchableAttribu" - "tesRequest\032/.flyteidl.admin.ListMatchabl" - "eAttributesResponse\"e\202\323\344\223\002\036\022\034/api/v1/mat" - "chable_attributes\222A>\032*" + "9/api/v1/workflow_attributes/{project}/{" + "domain}/{workflow}:\001*\222Af\032dDelete the cus" + "tomized resource attributes associated w" + "ith a project, domain and workflow combi" + "nation\022\341\001\n\027ListMatchableAttributes\022..fly" + "teidl.admin.ListMatchableAttributesReque" + "st\032/.flyteidl.admin.ListMatchableAttribu" + "tesResponse\"e\202\323\344\223\002\036\022\034/api/v1/matchable_a" + "ttributes\222A>\032= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminExecutionCreateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Create and upload a :ref:`ref_flyteidl.admin.LaunchPlan` definition Create and register a launch plan definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -126,10 +126,10 @@ Create and register a launch plan definition. */ func (a *AdminServiceApiService) CreateLaunchPlan(ctx context.Context, body AdminLaunchPlanCreateRequest) (AdminLaunchPlanCreateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlanCreateResponse ) @@ -177,58 +177,58 @@ func (a *AdminServiceApiService) CreateLaunchPlan(ctx context.Context, body Admi if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlanCreateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + if localVarHttpResponse.StatusCode == 400 { var v interface{} - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + if localVarHttpResponse.StatusCode == 409 { var v interface{} - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Indicates a :ref:`ref_flyteidl.event.NodeExecutionEvent` has occurred. Create a node execution event recording a phase transition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -238,10 +238,10 @@ Create a node execution event recording a phase transition. */ func (a *AdminServiceApiService) CreateNodeEvent(ctx context.Context, body AdminNodeExecutionEventRequest) (AdminNodeExecutionEventResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNodeExecutionEventResponse ) @@ -289,36 +289,36 @@ func (a *AdminServiceApiService) CreateNodeEvent(ctx context.Context, body Admin if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNodeExecutionEventResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Create and upload a :ref:`ref_flyteidl.admin.Task` definition Create and register a task definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -328,10 +328,10 @@ Create and register a task definition. */ func (a *AdminServiceApiService) CreateTask(ctx context.Context, body AdminTaskCreateRequest) (AdminTaskCreateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTaskCreateResponse ) @@ -379,58 +379,58 @@ func (a *AdminServiceApiService) CreateTask(ctx context.Context, body AdminTaskC if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTaskCreateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + if localVarHttpResponse.StatusCode == 400 { var v interface{} - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + if localVarHttpResponse.StatusCode == 409 { var v interface{} - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Indicates a :ref:`ref_flyteidl.event.TaskExecutionEvent` has occurred. Create a task execution event recording a phase transition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -440,10 +440,10 @@ Create a task execution event recording a phase transition. */ func (a *AdminServiceApiService) CreateTaskEvent(ctx context.Context, body AdminTaskExecutionEventRequest) (AdminTaskExecutionEventResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTaskExecutionEventResponse ) @@ -491,36 +491,36 @@ func (a *AdminServiceApiService) CreateTaskEvent(ctx context.Context, body Admin if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTaskExecutionEventResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Create and upload a :ref:`ref_flyteidl.admin.Workflow` definition Create and register a workflow definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -530,10 +530,10 @@ Create and register a workflow definition. */ func (a *AdminServiceApiService) CreateWorkflow(ctx context.Context, body AdminWorkflowCreateRequest) (AdminWorkflowCreateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowCreateResponse ) @@ -581,58 +581,58 @@ func (a *AdminServiceApiService) CreateWorkflow(ctx context.Context, body AdminW if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowCreateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + if localVarHttpResponse.StatusCode == 400 { var v interface{} - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + if localVarHttpResponse.StatusCode == 409 { var v interface{} - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Indicates a :ref:`ref_flyteidl.event.WorkflowExecutionEvent` has occurred. Create a workflow execution event recording a phase transition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -642,10 +642,10 @@ Create a workflow execution event recording a phase transition. */ func (a *AdminServiceApiService) CreateWorkflowEvent(ctx context.Context, body AdminWorkflowExecutionEventRequest) (AdminWorkflowExecutionEventResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowExecutionEventResponse ) @@ -693,36 +693,36 @@ func (a *AdminServiceApiService) CreateWorkflowEvent(ctx context.Context, body A if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowExecutionEventResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain. Delete the customized resource attributes associated with a project-domain combination * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -734,10 +734,10 @@ Delete the customized resource attributes associated with a project-domain combi */ func (a *AdminServiceApiService) DeleteProjectDomainAttributes(ctx context.Context, project string, domain string, body AdminProjectDomainAttributesDeleteRequest) (AdminProjectDomainAttributesDeleteResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Delete") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminProjectDomainAttributesDeleteResponse ) @@ -787,36 +787,36 @@ func (a *AdminServiceApiService) DeleteProjectDomainAttributes(ctx context.Conte if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminProjectDomainAttributesDeleteResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Deletes custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow. Delete the customized resource attributes associated with a project, domain and workflow combination * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -829,10 +829,10 @@ Delete the customized resource attributes associated with a project, domain and */ func (a *AdminServiceApiService) DeleteWorkflowAttributes(ctx context.Context, project string, domain string, workflow string, body AdminWorkflowAttributesDeleteRequest) (AdminWorkflowAttributesDeleteResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Delete") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowAttributesDeleteResponse ) @@ -883,36 +883,36 @@ func (a *AdminServiceApiService) DeleteWorkflowAttributes(ctx context.Context, p if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowAttributesDeleteResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch the active version of a :ref:`ref_flyteidl.admin.LaunchPlan`. Retrieve the active launch plan version specified by input request filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -924,10 +924,10 @@ Retrieve the active launch plan version specified by input request filters. */ func (a *AdminServiceApiService) GetActiveLaunchPlan(ctx context.Context, idProject string, idDomain string, idName string) (AdminLaunchPlan, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlan ) @@ -976,36 +976,36 @@ func (a *AdminServiceApiService) GetActiveLaunchPlan(ctx context.Context, idProj if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlan - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches a :ref:`ref_flyteidl.admin.Execution`. Retrieve an existing workflow execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1017,10 +1017,10 @@ Retrieve an existing workflow execution. */ func (a *AdminServiceApiService) GetExecution(ctx context.Context, idProject string, idDomain string, idName string) (AdminExecution, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminExecution ) @@ -1069,36 +1069,36 @@ func (a *AdminServiceApiService) GetExecution(ctx context.Context, idProject str if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminExecution - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`. Retrieve input and output data from an existing workflow execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1110,10 +1110,10 @@ Retrieve input and output data from an existing workflow execution. */ func (a *AdminServiceApiService) GetExecutionData(ctx context.Context, idProject string, idDomain string, idName string) (AdminWorkflowExecutionGetDataResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowExecutionGetDataResponse ) @@ -1162,36 +1162,36 @@ func (a *AdminServiceApiService) GetExecutionData(ctx context.Context, idProject if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowExecutionGetDataResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a :ref:`ref_flyteidl.admin.LaunchPlan` definition. Retrieve an existing launch plan definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1205,16 +1205,16 @@ Retrieve an existing launch plan definition. @return AdminLaunchPlan */ -type GetLaunchPlanOpts struct { +type GetLaunchPlanOpts struct { IdResourceType optional.String } func (a *AdminServiceApiService) GetLaunchPlan(ctx context.Context, idProject string, idDomain string, idName string, idVersion string, localVarOptionals *GetLaunchPlanOpts) (AdminLaunchPlan, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlan ) @@ -1267,36 +1267,36 @@ func (a *AdminServiceApiService) GetLaunchPlan(ctx context.Context, idProject st if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlan - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Returns a :ref:`ref_flyteidl.admin.NamedEntity` object. Retrieve a NamedEntity object. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1309,10 +1309,10 @@ Retrieve a NamedEntity object. */ func (a *AdminServiceApiService) GetNamedEntity(ctx context.Context, resourceType string, idProject string, idDomain string, idName string) (AdminNamedEntity, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNamedEntity ) @@ -1362,36 +1362,36 @@ func (a *AdminServiceApiService) GetNamedEntity(ctx context.Context, resourceTyp if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNamedEntity - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches a :ref:`ref_flyteidl.admin.NodeExecution`. Retrieve an existing node execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1404,10 +1404,10 @@ Retrieve an existing node execution. */ func (a *AdminServiceApiService) GetNodeExecution(ctx context.Context, idExecutionIdProject string, idExecutionIdDomain string, idExecutionIdName string, idNodeId string) (FlyteidladminNodeExecution, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue FlyteidladminNodeExecution ) @@ -1457,36 +1457,36 @@ func (a *AdminServiceApiService) GetNodeExecution(ctx context.Context, idExecuti if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v FlyteidladminNodeExecution - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches input and output data for a :ref:`ref_flyteidl.admin.NodeExecution`. Retrieve input and output data from an existing node execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1499,10 +1499,10 @@ Retrieve input and output data from an existing node execution. */ func (a *AdminServiceApiService) GetNodeExecutionData(ctx context.Context, idExecutionIdProject string, idExecutionIdDomain string, idExecutionIdName string, idNodeId string) (AdminNodeExecutionGetDataResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNodeExecutionGetDataResponse ) @@ -1552,36 +1552,36 @@ func (a *AdminServiceApiService) GetNodeExecutionData(ctx context.Context, idExe if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNodeExecutionGetDataResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain. Retrieve the customized resource attributes associated with a project-domain combination * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1593,16 +1593,16 @@ Retrieve the customized resource attributes associated with a project-domain com @return AdminProjectDomainAttributesGetResponse */ -type GetProjectDomainAttributesOpts struct { +type GetProjectDomainAttributesOpts struct { ResourceType optional.String } func (a *AdminServiceApiService) GetProjectDomainAttributes(ctx context.Context, project string, domain string, localVarOptionals *GetProjectDomainAttributesOpts) (AdminProjectDomainAttributesGetResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminProjectDomainAttributesGetResponse ) @@ -1653,36 +1653,36 @@ func (a *AdminServiceApiService) GetProjectDomainAttributes(ctx context.Context, if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminProjectDomainAttributesGetResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a :ref:`ref_flyteidl.admin.Task` definition. Retrieve an existing task definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1696,16 +1696,16 @@ Retrieve an existing task definition. @return AdminTask */ -type GetTaskOpts struct { +type GetTaskOpts struct { IdResourceType optional.String } func (a *AdminServiceApiService) GetTask(ctx context.Context, idProject string, idDomain string, idName string, idVersion string, localVarOptionals *GetTaskOpts) (AdminTask, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTask ) @@ -1758,36 +1758,36 @@ func (a *AdminServiceApiService) GetTask(ctx context.Context, idProject string, if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTask - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches a :ref:`ref_flyteidl.admin.TaskExecution`. Retrieve an existing task execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1806,16 +1806,16 @@ Retrieve an existing task execution. @return FlyteidladminTaskExecution */ -type GetTaskExecutionOpts struct { +type GetTaskExecutionOpts struct { IdTaskIdResourceType optional.String } func (a *AdminServiceApiService) GetTaskExecution(ctx context.Context, idNodeExecutionIdExecutionIdProject string, idNodeExecutionIdExecutionIdDomain string, idNodeExecutionIdExecutionIdName string, idNodeExecutionIdNodeId string, idTaskIdProject string, idTaskIdDomain string, idTaskIdName string, idTaskIdVersion string, idRetryAttempt int64, localVarOptionals *GetTaskExecutionOpts) (FlyteidladminTaskExecution, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue FlyteidladminTaskExecution ) @@ -1873,36 +1873,36 @@ func (a *AdminServiceApiService) GetTaskExecution(ctx context.Context, idNodeExe if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v FlyteidladminTaskExecution - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches input and output data for a :ref:`ref_flyteidl.admin.TaskExecution`. Retrieve input and output data from an existing task execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -1921,16 +1921,16 @@ Retrieve input and output data from an existing task execution. @return AdminTaskExecutionGetDataResponse */ -type GetTaskExecutionDataOpts struct { +type GetTaskExecutionDataOpts struct { IdTaskIdResourceType optional.String } func (a *AdminServiceApiService) GetTaskExecutionData(ctx context.Context, idNodeExecutionIdExecutionIdProject string, idNodeExecutionIdExecutionIdDomain string, idNodeExecutionIdExecutionIdName string, idNodeExecutionIdNodeId string, idTaskIdProject string, idTaskIdDomain string, idTaskIdName string, idTaskIdVersion string, idRetryAttempt int64, localVarOptionals *GetTaskExecutionDataOpts) (AdminTaskExecutionGetDataResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTaskExecutionGetDataResponse ) @@ -1988,36 +1988,36 @@ func (a *AdminServiceApiService) GetTaskExecutionData(ctx context.Context, idNod if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTaskExecutionGetDataResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Retrieve the Version (including the Build information) for FlyteAdmin service * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2026,10 +2026,10 @@ Retrieve the Version (including the Build information) for FlyteAdmin service */ func (a *AdminServiceApiService) GetVersion(ctx context.Context) (AdminGetVersionResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminGetVersionResponse ) @@ -2075,36 +2075,36 @@ func (a *AdminServiceApiService) GetVersion(ctx context.Context) (AdminGetVersio if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminGetVersionResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a :ref:`ref_flyteidl.admin.Workflow` definition. Retrieve an existing workflow definition. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2118,16 +2118,16 @@ Retrieve an existing workflow definition. @return AdminWorkflow */ -type GetWorkflowOpts struct { +type GetWorkflowOpts struct { IdResourceType optional.String } func (a *AdminServiceApiService) GetWorkflow(ctx context.Context, idProject string, idDomain string, idName string, idVersion string, localVarOptionals *GetWorkflowOpts) (AdminWorkflow, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflow ) @@ -2180,36 +2180,36 @@ func (a *AdminServiceApiService) GetWorkflow(ctx context.Context, idProject stri if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflow - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow. Retrieve the customized resource attributes associated with a project, domain and workflow combination * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2222,16 +2222,16 @@ Retrieve the customized resource attributes associated with a project, domain an @return AdminWorkflowAttributesGetResponse */ -type GetWorkflowAttributesOpts struct { +type GetWorkflowAttributesOpts struct { ResourceType optional.String } func (a *AdminServiceApiService) GetWorkflowAttributes(ctx context.Context, project string, domain string, workflow string, localVarOptionals *GetWorkflowAttributesOpts) (AdminWorkflowAttributesGetResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowAttributesGetResponse ) @@ -2283,36 +2283,36 @@ func (a *AdminServiceApiService) GetWorkflowAttributes(ctx context.Context, proj if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowAttributesGetResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService List active versions of :ref:`ref_flyteidl.admin.LaunchPlan`. Fetch the active launch plan versions specified by input request filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2327,19 +2327,19 @@ Fetch the active launch plan versions specified by input request filters. @return AdminLaunchPlanList */ -type ListActiveLaunchPlansOpts struct { - Limit optional.Int64 - Token optional.String - SortByKey optional.String +type ListActiveLaunchPlansOpts struct { + Limit optional.Int64 + Token optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListActiveLaunchPlans(ctx context.Context, project string, domain string, localVarOptionals *ListActiveLaunchPlansOpts) (AdminLaunchPlanList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlanList ) @@ -2399,36 +2399,36 @@ func (a *AdminServiceApiService) ListActiveLaunchPlans(ctx context.Context, proj if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlanList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.Execution`. Fetch existing workflow executions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2445,21 +2445,21 @@ Fetch existing workflow executions matching input filters. @return AdminExecutionList */ -type ListExecutionsOpts struct { - IdName optional.String - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListExecutionsOpts struct { + IdName optional.String + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListExecutions(ctx context.Context, idProject string, idDomain string, localVarOptionals *ListExecutionsOpts) (AdminExecutionList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminExecutionList ) @@ -2525,36 +2525,36 @@ func (a *AdminServiceApiService) ListExecutions(ctx context.Context, idProject s if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminExecutionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of launch plan objects. Fetch existing launch plan definition identifiers matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2570,20 +2570,20 @@ Fetch existing launch plan definition identifiers matching input filters. @return AdminNamedEntityIdentifierList */ -type ListLaunchPlanIdsOpts struct { - Limit optional.Int64 - Token optional.String - SortByKey optional.String +type ListLaunchPlanIdsOpts struct { + Limit optional.Int64 + Token optional.String + SortByKey optional.String SortByDirection optional.String - Filters optional.String + Filters optional.String } func (a *AdminServiceApiService) ListLaunchPlanIds(ctx context.Context, project string, domain string, localVarOptionals *ListLaunchPlanIdsOpts) (AdminNamedEntityIdentifierList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNamedEntityIdentifierList ) @@ -2646,36 +2646,36 @@ func (a *AdminServiceApiService) ListLaunchPlanIds(ctx context.Context, project if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNamedEntityIdentifierList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions. Fetch existing launch plan definitions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2692,20 +2692,20 @@ Fetch existing launch plan definitions matching input filters. @return AdminLaunchPlanList */ -type ListLaunchPlansOpts struct { - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListLaunchPlansOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListLaunchPlans(ctx context.Context, idProject string, idDomain string, idName string, localVarOptionals *ListLaunchPlansOpts) (AdminLaunchPlanList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlanList ) @@ -2769,36 +2769,36 @@ func (a *AdminServiceApiService) ListLaunchPlans(ctx context.Context, idProject if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlanList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.LaunchPlan` definitions. Fetch existing launch plan definitions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2815,21 +2815,21 @@ Fetch existing launch plan definitions matching input filters. @return AdminLaunchPlanList */ -type ListLaunchPlans2Opts struct { - IdName optional.String - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListLaunchPlans2Opts struct { + IdName optional.String + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListLaunchPlans2(ctx context.Context, idProject string, idDomain string, localVarOptionals *ListLaunchPlans2Opts) (AdminLaunchPlanList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlanList ) @@ -2895,36 +2895,36 @@ func (a *AdminServiceApiService) ListLaunchPlans2(ctx context.Context, idProject if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlanList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Lists custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a specific resource type. Retrieve a list of MatchableAttributesConfiguration objects. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -2934,16 +2934,16 @@ Retrieve a list of MatchableAttributesConfiguration objects. @return AdminListMatchableAttributesResponse */ -type ListMatchableAttributesOpts struct { +type ListMatchableAttributesOpts struct { ResourceType optional.String } func (a *AdminServiceApiService) ListMatchableAttributes(ctx context.Context, localVarOptionals *ListMatchableAttributesOpts) (AdminListMatchableAttributesResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminListMatchableAttributesResponse ) @@ -2992,36 +2992,36 @@ func (a *AdminServiceApiService) ListMatchableAttributes(ctx context.Context, lo if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminListMatchableAttributesResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Returns a list of :ref:`ref_flyteidl.admin.NamedEntity` objects. Retrieve a list of NamedEntity objects sharing a common resource type, project, and domain. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3038,20 +3038,20 @@ Retrieve a list of NamedEntity objects sharing a common resource type, project, @return AdminNamedEntityList */ -type ListNamedEntitiesOpts struct { - Limit optional.Int64 - Token optional.String - SortByKey optional.String +type ListNamedEntitiesOpts struct { + Limit optional.Int64 + Token optional.String + SortByKey optional.String SortByDirection optional.String - Filters optional.String + Filters optional.String } func (a *AdminServiceApiService) ListNamedEntities(ctx context.Context, resourceType string, project string, domain string, localVarOptionals *ListNamedEntitiesOpts) (AdminNamedEntityList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNamedEntityList ) @@ -3115,36 +3115,36 @@ func (a *AdminServiceApiService) ListNamedEntities(ctx context.Context, resource if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNamedEntityList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution`. Fetch existing node executions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3153,7 +3153,7 @@ Fetch existing node executions matching input filters. * @param workflowExecutionIdName User or system provided value for the resource. * @param optional nil or *ListNodeExecutionsOpts - Optional Parameters: * @param "Limit" (optional.Int64) - Indicates the number of resources to be returned. +required. - * @param "Token" (optional.String) - + * @param "Token" (optional.String) - * @param "Filters" (optional.String) - Indicates a list of filters passed as string. More info on constructing filters : <Link> +optional. * @param "SortByKey" (optional.String) - Indicates an attribute to sort the response values. +required. * @param "SortByDirection" (optional.String) - Indicates the direction to apply sort key for response values. +optional. - DESCENDING: By default, fields are sorted in descending order. @@ -3162,21 +3162,21 @@ Fetch existing node executions matching input filters. @return AdminNodeExecutionList */ -type ListNodeExecutionsOpts struct { - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListNodeExecutionsOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String - UniqueParentId optional.String + UniqueParentId optional.String } func (a *AdminServiceApiService) ListNodeExecutions(ctx context.Context, workflowExecutionIdProject string, workflowExecutionIdDomain string, workflowExecutionIdName string, localVarOptionals *ListNodeExecutionsOpts) (AdminNodeExecutionList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNodeExecutionList ) @@ -3243,36 +3243,36 @@ func (a *AdminServiceApiService) ListNodeExecutions(ctx context.Context, workflo if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNodeExecutionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.NodeExecution` launched by the reference :ref:`ref_flyteidl.admin.TaskExecution`. Fetch child node executions launched by the specified task execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3296,21 +3296,21 @@ Fetch child node executions launched by the specified task execution. @return AdminNodeExecutionList */ -type ListNodeExecutionsForTaskOpts struct { +type ListNodeExecutionsForTaskOpts struct { TaskExecutionIdTaskIdResourceType optional.String - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String - SortByDirection optional.String + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String + SortByDirection optional.String } func (a *AdminServiceApiService) ListNodeExecutionsForTask(ctx context.Context, taskExecutionIdNodeExecutionIdExecutionIdProject string, taskExecutionIdNodeExecutionIdExecutionIdDomain string, taskExecutionIdNodeExecutionIdExecutionIdName string, taskExecutionIdNodeExecutionIdNodeId string, taskExecutionIdTaskIdProject string, taskExecutionIdTaskIdDomain string, taskExecutionIdTaskIdName string, taskExecutionIdTaskIdVersion string, taskExecutionIdRetryAttempt int64, localVarOptionals *ListNodeExecutionsForTaskOpts) (AdminNodeExecutionList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNodeExecutionList ) @@ -3383,36 +3383,36 @@ func (a *AdminServiceApiService) ListNodeExecutionsForTask(ctx context.Context, if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNodeExecutionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches a list of :ref:`ref_flyteidl.admin.Project` Fetch registered projects. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3426,20 +3426,20 @@ Fetch registered projects. @return AdminProjects */ -type ListProjectsOpts struct { - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListProjectsOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListProjects(ctx context.Context, localVarOptionals *ListProjectsOpts) (AdminProjects, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminProjects ) @@ -3500,36 +3500,36 @@ func (a *AdminServiceApiService) ListProjects(ctx context.Context, localVarOptio if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminProjects - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetches a list of :ref:`ref_flyteidl.admin.TaskExecution`. Fetch existing task executions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3547,20 +3547,20 @@ Fetch existing task executions matching input filters. @return AdminTaskExecutionList */ -type ListTaskExecutionsOpts struct { - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListTaskExecutionsOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListTaskExecutions(ctx context.Context, nodeExecutionIdExecutionIdProject string, nodeExecutionIdExecutionIdDomain string, nodeExecutionIdExecutionIdName string, nodeExecutionIdNodeId string, localVarOptionals *ListTaskExecutionsOpts) (AdminTaskExecutionList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTaskExecutionList ) @@ -3625,36 +3625,36 @@ func (a *AdminServiceApiService) ListTaskExecutions(ctx context.Context, nodeExe if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTaskExecutionList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of task objects. Fetch existing task definition identifiers matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3670,20 +3670,20 @@ Fetch existing task definition identifiers matching input filters. @return AdminNamedEntityIdentifierList */ -type ListTaskIdsOpts struct { - Limit optional.Int64 - Token optional.String - SortByKey optional.String +type ListTaskIdsOpts struct { + Limit optional.Int64 + Token optional.String + SortByKey optional.String SortByDirection optional.String - Filters optional.String + Filters optional.String } func (a *AdminServiceApiService) ListTaskIds(ctx context.Context, project string, domain string, localVarOptionals *ListTaskIdsOpts) (AdminNamedEntityIdentifierList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNamedEntityIdentifierList ) @@ -3746,36 +3746,36 @@ func (a *AdminServiceApiService) ListTaskIds(ctx context.Context, project string if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNamedEntityIdentifierList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions. Fetch existing task definitions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3792,20 +3792,20 @@ Fetch existing task definitions matching input filters. @return AdminTaskList */ -type ListTasksOpts struct { - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListTasksOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListTasks(ctx context.Context, idProject string, idDomain string, idName string, localVarOptionals *ListTasksOpts) (AdminTaskList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTaskList ) @@ -3869,36 +3869,36 @@ func (a *AdminServiceApiService) ListTasks(ctx context.Context, idProject string if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTaskList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.Task` definitions. Fetch existing task definitions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -3915,21 +3915,21 @@ Fetch existing task definitions matching input filters. @return AdminTaskList */ -type ListTasks2Opts struct { - IdName optional.String - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListTasks2Opts struct { + IdName optional.String + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListTasks2(ctx context.Context, idProject string, idDomain string, localVarOptionals *ListTasks2Opts) (AdminTaskList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminTaskList ) @@ -3995,36 +3995,36 @@ func (a *AdminServiceApiService) ListTasks2(ctx context.Context, idProject strin if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminTaskList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.NamedEntityIdentifier` of workflow objects. Fetch an existing workflow definition identifiers matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4040,20 +4040,20 @@ Fetch an existing workflow definition identifiers matching input filters. @return AdminNamedEntityIdentifierList */ -type ListWorkflowIdsOpts struct { - Limit optional.Int64 - Token optional.String - SortByKey optional.String +type ListWorkflowIdsOpts struct { + Limit optional.Int64 + Token optional.String + SortByKey optional.String SortByDirection optional.String - Filters optional.String + Filters optional.String } func (a *AdminServiceApiService) ListWorkflowIds(ctx context.Context, project string, domain string, localVarOptionals *ListWorkflowIdsOpts) (AdminNamedEntityIdentifierList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNamedEntityIdentifierList ) @@ -4116,36 +4116,36 @@ func (a *AdminServiceApiService) ListWorkflowIds(ctx context.Context, project st if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNamedEntityIdentifierList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions. Fetch existing workflow definitions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4162,20 +4162,20 @@ Fetch existing workflow definitions matching input filters. @return AdminWorkflowList */ -type ListWorkflowsOpts struct { - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListWorkflowsOpts struct { + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListWorkflows(ctx context.Context, idProject string, idDomain string, idName string, localVarOptionals *ListWorkflowsOpts) (AdminWorkflowList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowList ) @@ -4239,36 +4239,36 @@ func (a *AdminServiceApiService) ListWorkflows(ctx context.Context, idProject st if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Fetch a list of :ref:`ref_flyteidl.admin.Workflow` definitions. Fetch existing workflow definitions matching input filters. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4285,21 +4285,21 @@ Fetch existing workflow definitions matching input filters. @return AdminWorkflowList */ -type ListWorkflows2Opts struct { - IdName optional.String - Limit optional.Int64 - Token optional.String - Filters optional.String - SortByKey optional.String +type ListWorkflows2Opts struct { + IdName optional.String + Limit optional.Int64 + Token optional.String + Filters optional.String + SortByKey optional.String SortByDirection optional.String } func (a *AdminServiceApiService) ListWorkflows2(ctx context.Context, idProject string, idDomain string, localVarOptionals *ListWorkflows2Opts) (AdminWorkflowList, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Get") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Get") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowList ) @@ -4365,36 +4365,126 @@ func (a *AdminServiceApiService) ListWorkflows2(ctx context.Context, idProject s if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowList - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } + + return localVarReturnValue, localVarHttpResponse, newErr + } + + return localVarReturnValue, localVarHttpResponse, nil +} + +/* +AdminServiceApiService Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. +Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. + * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). + * @param body + +@return AdminExecutionCreateResponse +*/ +func (a *AdminServiceApiService) RecoverExecution(ctx context.Context, body AdminExecutionRecoverRequest) (AdminExecutionCreateResponse, *http.Response, error) { + var ( + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte + localVarReturnValue AdminExecutionCreateResponse + ) + + // create path and map variables + localVarPath := a.client.cfg.BasePath + "/api/v1/executions/recover" + + localVarHeaderParams := make(map[string]string) + localVarQueryParams := url.Values{} + localVarFormParams := url.Values{} + + // to determine the Content-Type header + localVarHttpContentTypes := []string{"application/json"} + + // set Content-Type header + localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) + if localVarHttpContentType != "" { + localVarHeaderParams["Content-Type"] = localVarHttpContentType + } + + // to determine the Accept header + localVarHttpHeaderAccepts := []string{"application/json"} + // set Accept header + localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) + if localVarHttpHeaderAccept != "" { + localVarHeaderParams["Accept"] = localVarHttpHeaderAccept + } + // body params + localVarPostBody = &body + r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) + if err != nil { + return localVarReturnValue, nil, err + } + + localVarHttpResponse, err := a.client.callAPI(r) + if err != nil || localVarHttpResponse == nil { + return localVarReturnValue, localVarHttpResponse, err + } + + localVarBody, err := ioutil.ReadAll(localVarHttpResponse.Body) + localVarHttpResponse.Body.Close() + if err != nil { + return localVarReturnValue, localVarHttpResponse, err + } + + if localVarHttpResponse.StatusCode < 300 { + // If we succeed, return the data, otherwise pass on to decode error. + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { + return localVarReturnValue, localVarHttpResponse, err + } + } + + if localVarHttpResponse.StatusCode >= 300 { + newErr := GenericSwaggerError{ + body: localVarBody, + error: localVarHttpResponse.Status, + } + + if localVarHttpResponse.StatusCode == 200 { + var v AdminExecutionCreateResponse + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v + return localVarReturnValue, localVarHttpResponse, newErr + } + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment. Register a project. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4404,10 +4494,10 @@ Register a project. */ func (a *AdminServiceApiService) RegisterProject(ctx context.Context, body AdminProjectRegisterRequest) (AdminProjectRegisterResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminProjectRegisterResponse ) @@ -4455,36 +4545,36 @@ func (a *AdminServiceApiService) RegisterProject(ctx context.Context, body Admin if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminProjectRegisterResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution` Relaunch a workflow execution. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4494,10 +4584,10 @@ Relaunch a workflow execution. */ func (a *AdminServiceApiService) RelaunchExecution(ctx context.Context, body AdminExecutionRelaunchRequest) (AdminExecutionCreateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Post") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Post") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminExecutionCreateResponse ) @@ -4545,36 +4635,36 @@ func (a *AdminServiceApiService) RelaunchExecution(ctx context.Context, body Adm if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminExecutionCreateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Terminates an in-progress :ref:`ref_flyteidl.admin.Execution`. Terminate the active workflow execution specified in the request. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4587,10 +4677,10 @@ Terminate the active workflow execution specified in the request. */ func (a *AdminServiceApiService) TerminateExecution(ctx context.Context, idProject string, idDomain string, idName string, body AdminExecutionTerminateRequest) (AdminExecutionTerminateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Delete") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Delete") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminExecutionTerminateResponse ) @@ -4641,36 +4731,36 @@ func (a *AdminServiceApiService) TerminateExecution(ctx context.Context, idProje if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminExecutionTerminateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`. Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4684,10 +4774,10 @@ Update the status of an existing launch plan definition. At most one launch plan */ func (a *AdminServiceApiService) UpdateLaunchPlan(ctx context.Context, idProject string, idDomain string, idName string, idVersion string, body AdminLaunchPlanUpdateRequest) (AdminLaunchPlanUpdateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminLaunchPlanUpdateResponse ) @@ -4739,36 +4829,36 @@ func (a *AdminServiceApiService) UpdateLaunchPlan(ctx context.Context, idProject if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminLaunchPlanUpdateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Updates a :ref:`ref_flyteidl.admin.NamedEntity` object. Update the fields associated with a NamedEntity * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4782,10 +4872,10 @@ Update the fields associated with a NamedEntity */ func (a *AdminServiceApiService) UpdateNamedEntity(ctx context.Context, resourceType string, idProject string, idDomain string, idName string, body AdminNamedEntityUpdateRequest) (AdminNamedEntityUpdateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminNamedEntityUpdateResponse ) @@ -4837,36 +4927,36 @@ func (a *AdminServiceApiService) UpdateNamedEntity(ctx context.Context, resource if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminNamedEntityUpdateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Updates an existing :ref:`ref_flyteidl.admin.Project` flyteidl.admin.Project should be passed but the domains property should be empty; it will be ignored in the handler as domains cannot be updated via this API. Update a project. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4877,10 +4967,10 @@ Update a project. */ func (a *AdminServiceApiService) UpdateProject(ctx context.Context, id string, body AdminProject) (AdminProjectUpdateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminProjectUpdateResponse ) @@ -4929,36 +5019,36 @@ func (a *AdminServiceApiService) UpdateProject(ctx context.Context, id string, b if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminProjectUpdateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project and domain. Update the customized resource attributes associated with a project-domain combination * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -4970,10 +5060,10 @@ Update the customized resource attributes associated with a project-domain combi */ func (a *AdminServiceApiService) UpdateProjectDomainAttributes(ctx context.Context, attributesProject string, attributesDomain string, body AdminProjectDomainAttributesUpdateRequest) (AdminProjectDomainAttributesUpdateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminProjectDomainAttributesUpdateResponse ) @@ -5023,36 +5113,36 @@ func (a *AdminServiceApiService) UpdateProjectDomainAttributes(ctx context.Conte if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminProjectDomainAttributesUpdateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } -/* +/* AdminServiceApiService Creates or updates custom :ref:`ref_flyteidl.admin.MatchableAttributesConfiguration` for a project, domain and workflow. Update the customized resource attributes associated with a project, domain and workflow combination * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @@ -5065,10 +5155,10 @@ Update the customized resource attributes associated with a project, domain and */ func (a *AdminServiceApiService) UpdateWorkflowAttributes(ctx context.Context, attributesProject string, attributesDomain string, attributesWorkflow string, body AdminWorkflowAttributesUpdateRequest) (AdminWorkflowAttributesUpdateResponse, *http.Response, error) { var ( - localVarHttpMethod = strings.ToUpper("Put") - localVarPostBody interface{} - localVarFileName string - localVarFileBytes []byte + localVarHttpMethod = strings.ToUpper("Put") + localVarPostBody interface{} + localVarFileName string + localVarFileBytes []byte localVarReturnValue AdminWorkflowAttributesUpdateResponse ) @@ -5119,29 +5209,29 @@ func (a *AdminServiceApiService) UpdateWorkflowAttributes(ctx context.Context, a if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. - err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err == nil { + err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err == nil { return localVarReturnValue, localVarHttpResponse, err } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ - body: localVarBody, + body: localVarBody, error: localVarHttpResponse.Status, } - + if localVarHttpResponse.StatusCode == 200 { var v AdminWorkflowAttributesUpdateResponse - err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) - if err != nil { - newErr.error = err.Error() + err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")); + if err != nil { + newErr.error = err.Error() + return localVarReturnValue, localVarHttpResponse, newErr + } + newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr - } - newErr.model = v - return localVarReturnValue, localVarHttpResponse, newErr } - + return localVarReturnValue, localVarHttpResponse, newErr } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_recover_request.go b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_recover_request.go new file mode 100644 index 000000000..571e0013f --- /dev/null +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_admin_execution_recover_request.go @@ -0,0 +1,19 @@ +/* + * flyteidl/service/admin.proto + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: version not set + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package flyteadmin + +// Request to recover the referenced execution. +type AdminExecutionRecoverRequest struct { + // Identifier of the workflow execution to recover. + Id *CoreWorkflowExecutionIdentifier `json:"id,omitempty"` + Name string `json:"name,omitempty"` + // Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. + Metadata *AdminExecutionMetadata `json:"metadata,omitempty"` +} diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_core_node_execution_phase.go b/gen/pb-go/flyteidl/service/flyteadmin/model_core_node_execution_phase.go index 8876f3de4..55c46425a 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_core_node_execution_phase.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_core_node_execution_phase.go @@ -23,4 +23,5 @@ const ( CoreNodeExecutionPhaseSKIPPED CoreNodeExecutionPhase = "SKIPPED" CoreNodeExecutionPhaseTIMED_OUT CoreNodeExecutionPhase = "TIMED_OUT" CoreNodeExecutionPhaseDYNAMIC_RUNNING CoreNodeExecutionPhase = "DYNAMIC_RUNNING" + CoreNodeExecutionPhaseRECOVERED CoreNodeExecutionPhase = "RECOVERED" ) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_core_task_template.go b/gen/pb-go/flyteidl/service/flyteadmin/model_core_task_template.go index 905b2c669..8fd1be982 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_core_task_template.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_core_task_template.go @@ -20,12 +20,12 @@ type CoreTaskTemplate struct { // A strongly typed interface for the task. This enables others to use this task within a workflow and guarantees compile-time validation of the workflow to avoid costly runtime failures. Interface_ *CoreTypedInterface `json:"interface,omitempty"` // Custom data about the task. This is extensible to allow various plugins in the system. - Custom *ProtobufStruct `json:"custom,omitempty"` - Container *CoreContainer `json:"container,omitempty"` - K8sPod *CoreK8sPod `json:"k8s_pod,omitempty"` + Custom *ProtobufStruct `json:"custom,omitempty"` + Container *CoreContainer `json:"container,omitempty"` + K8sPod *CoreK8sPod `json:"k8s_pod,omitempty"` // This can be used to customize task handling at execution time for the same task type. TaskTypeVersion int32 `json:"task_type_version,omitempty"` // security_context encapsulates security attributes requested to run this task. SecurityContext *CoreSecurityContext `json:"security_context,omitempty"` - Config map[string]string `json:"config,omitempty"` + Config map[string]string `json:"config,omitempty"` } diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_execution_metadata_execution_mode.go b/gen/pb-go/flyteidl/service/flyteadmin/model_execution_metadata_execution_mode.go index 24e864a91..000c4da4c 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_execution_metadata_execution_mode.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_execution_metadata_execution_mode.go @@ -8,7 +8,7 @@ */ package flyteadmin -// ExecutionMetadataExecutionMode : The method by which this execution was launched. - MANUAL: The default execution mode, MANUAL implies that an execution was launched by an individual. - SCHEDULED: A schedule triggered this execution launch. - SYSTEM: A system process was responsible for launching this execution rather an individual. - RELAUNCH: This execution was launched with identical inputs as a previous execution. - CHILD_WORKFLOW: This execution was triggered by another execution. +// ExecutionMetadataExecutionMode : The method by which this execution was launched. - MANUAL: The default execution mode, MANUAL implies that an execution was launched by an individual. - SCHEDULED: A schedule triggered this execution launch. - SYSTEM: A system process was responsible for launching this execution rather an individual. - RELAUNCH: This execution was launched with identical inputs as a previous execution. - CHILD_WORKFLOW: This execution was triggered by another execution. - RECOVERED: This execution was recovered from another execution. type ExecutionMetadataExecutionMode string // List of ExecutionMetadataExecutionMode @@ -18,4 +18,5 @@ const ( ExecutionMetadataExecutionModeSYSTEM ExecutionMetadataExecutionMode = "SYSTEM" ExecutionMetadataExecutionModeRELAUNCH ExecutionMetadataExecutionMode = "RELAUNCH" ExecutionMetadataExecutionModeCHILD_WORKFLOW ExecutionMetadataExecutionMode = "CHILD_WORKFLOW" + ExecutionMetadataExecutionModeRECOVERED ExecutionMetadataExecutionMode = "RECOVERED" ) diff --git a/gen/pb-go/flyteidl/service/flyteadmin/model_task_execution_metadata_instance_class.go b/gen/pb-go/flyteidl/service/flyteadmin/model_task_execution_metadata_instance_class.go index b5552c8c6..efff48b05 100644 --- a/gen/pb-go/flyteidl/service/flyteadmin/model_task_execution_metadata_instance_class.go +++ b/gen/pb-go/flyteidl/service/flyteadmin/model_task_execution_metadata_instance_class.go @@ -8,12 +8,11 @@ */ package flyteadmin - // TaskExecutionMetadataInstanceClass : Includes the broad category of machine used for this specific task execution. - DEFAULT: The default instance class configured for the flyte application platform. - INTERRUPTIBLE: The instance class configured for interruptible tasks. type TaskExecutionMetadataInstanceClass string // List of TaskExecutionMetadataInstanceClass const ( - TaskExecutionMetadataInstanceClassDEFAULT_ TaskExecutionMetadataInstanceClass = "DEFAULT" + TaskExecutionMetadataInstanceClassDEFAULT_ TaskExecutionMetadataInstanceClass = "DEFAULT" TaskExecutionMetadataInstanceClassINTERRUPTIBLE TaskExecutionMetadataInstanceClass = "INTERRUPTIBLE" ) diff --git a/gen/pb-go/flyteidl/service/openapi.go b/gen/pb-go/flyteidl/service/openapi.go index 083b1fba0..e6e62afcb 100644 --- a/gen/pb-go/flyteidl/service/openapi.go +++ b/gen/pb-go/flyteidl/service/openapi.go @@ -1,6 +1,6 @@ // Code generated by go-bindata. (@generated) DO NOT EDIT. -//Package service generated by go-bindata.// sources: + //Package service generated by go-bindata.// sources: // ../service/admin.swagger.json package service @@ -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\xbd\x79\x73\x23\xb9\x95\x2f\xfa\xff\x7c\x0a\xdc\xf2\x8d\xe8\x6e\x8f\x96\xee\xf6\x8c\xc3\xa3\x89\x1b\xef\xb1\x24\x56\x35\x6f\xab\x24\x59\x4b\xd7\xf4\x1b\x4e\xd0\x60\x26\x48\xc2\x4a\x02\x74\x02\x29\x15\xed\xf0\x77\x7f\x81\x73\x00\x24\x72\x23\x33\x49\x6a\xab\xe6\x4c\x84\xbb\xc4\xcc\xc4\x7a\x70\x70\xd6\xdf\xf9\xc7\xbf\x10\xf2\x4e\x3d\xd2\xe9\x94\xa5\xef\x4e\xc8\xbb\x1f\x8f\xbe\x7f\x77\x60\x7e\xe3\x62\x22\xdf\x9d\x10\xf3\x9c\x90\x77\x9a\xeb\x84\x99\xe7\x93\x64\xa9\x19\x8f\x93\x63\xc5\xd2\x07\x1e\xb1\x63\x1a\xcf\xb9\x38\x5a\xa4\x52\x4b\xf8\x90\x90\x77\x0f\x2c\x55\x5c\x0a\xf3\xba\xfd\x27\x11\x52\x13\xc5\xf4\xbb\x7f\x21\xe4\x9f\xd0\xbc\x8a\x66\x6c\xce\xd4\xbb\x13\xf2\xdf\xf8\xd1\x4c\xeb\x85\x6b\xc0\xfc\x5b\x99\x77\xff\x07\xde\x8d\xa4\x50\x59\xe1\x65\xba\x58\x24\x3c\xa2\x9a\x4b\x71\xfc\x57\x25\x45\xfe\xee\x22\x95\x71\x16\xb5\x7c\x97\xea\x99\xca\xe7\x78\x4c\x17\xfc\xf8\xe1\x87\x63\x1a\x69\xfe\xc0\x46\x09\xcd\x44\x34\x1b\x2d\x12\x2a\xd4\xf1\x3f\x78\x6c\xe6\xf8\x57\x16\xe9\x7f\xc2\x1f\xb1\x9c\x53\x2e\xf0\xdf\x82\xce\xd9\x3f\x7d\x3b\x84\xbc\x9b\x32\x1d\xfc\x69\x66\x9b\xcd\xe7\x34\x5d\x9a\x15\xf9\xc0\x74\x34\x23\x7a\xc6\x08\xf6\x43\xdc\x12\xc9\x09\xa1\xe4\x24\x65\x93\x93\xbf\xa4\x6c\x32\x72\x0b\x7d\x84\x0b\x7c\x0e\xa3\xb9\x4a\xa8\xf8\xcb\x91\x5d\x26\x68\x39\x66\x2a\x4a\xf9\x42\xdb\xf5\xbe\x66\x3a\xe5\xec\x81\x85\x1d\xe0\x44\x88\x99\x88\xef\x4c\x2d\x58\xc4\x27\x9c\xc5\x64\xbc\x24\x5c\x2c\x32\x4d\x52\xf6\xb7\x8c\x29\x4d\x26\x3c\xd1\x2c\x55\x85\x5e\xe4\x82\xa5\xb0\x82\x83\xd8\xf4\xf2\x91\xe9\x1e\xb4\x9d\x8f\x2a\x7c\x3b\x65\x6a\x21\x85\x62\xaa\xb0\x08\x84\xbc\xfb\xf1\xfb\xef\x4b\x3f\x55\x67\xd0\x23\x2a\x8b\x22\xa6\xd4\x24\x4b\x88\x6b\x29\x1c\x0c\x2e\xa8\x21\x1f\x5a\x69\x8c\x90\x77\xff\x3b\x65\x13\xd3\xce\xef\x8e\x63\x36\xe1\x82\x9b\x76\x15\x52\x69\x30\xda\xc2\x57\xff\xfc\x97\xba\x7f\xff\x33\x98\xd1\x82\xa6\x74\xce\xcc\xb2\x78\xba\xc2\xff\x2b\xcd\xc5\x50\x82\xe9\x3c\xa7\x96\xf2\xc0\x4b\xb3\xbd\xa0\x73\x66\x76\xde\x6c\x97\xfd\x02\xfe\x9d\x32\x25\xb3\x34\x62\x64\xcc\x12\x29\xa6\x8a\x68\x59\x59\x03\x0e\x2d\x18\x22\x2e\x3f\x31\x5b\xc9\x53\x66\xf6\x4a\xa7\x19\x2b\x3d\xd5\xcb\x05\x0c\x52\xe9\x94\x8b\x69\xb8\x14\xff\x3c\x68\x35\x35\xa4\xfd\x0e\x33\xc3\x0f\x1a\x27\x36\x14\x3d\xf7\x4a\x44\x05\x19\x33\x62\x4e\x3c\x8f\x59\xca\x62\x42\x15\xa1\x44\x65\x63\xc5\x34\x79\xe4\x7a\xc6\x85\xf9\x1b\xc9\x37\x72\x6b\xf6\x7a\xd6\x06\xfe\xb9\x7a\x65\xee\x14\x4b\xcd\xc0\x1f\x78\xcc\x62\xf2\x40\x93\x8c\x91\x89\x4c\x0b\xcb\x73\x34\x14\xb7\x33\xb3\x0e\xf3\x31\x17\x70\xf2\xcc\x5a\x3a\x0a\xf9\x57\xb7\x5c\xff\x4a\x4c\x7f\x24\x13\xfc\x6f\x19\x4b\x96\x84\xc7\x4c\x68\x73\xae\x55\xb9\xb5\x7f\x95\xd0\x3f\x4d\xc8\x21\x31\xeb\xcc\x52\x0d\xeb\x2d\x85\x66\x5f\xb4\x22\x87\x24\xe1\xf7\x8c\x7c\x73\xce\x95\x26\xbd\xab\xc1\x37\x07\xe4\x9b\xf3\x9c\x71\xa8\x6f\x9e\x61\x85\xfd\xbf\xff\x27\x38\x7a\x9a\x4e\xcb\x87\xee\x5d\xcf\x9c\xe6\x1b\xbc\x80\xf2\x16\xfe\xe7\x5f\xc2\x76\xec\x7e\xad\xe6\xea\x39\x4b\xb7\xfc\xbc\x2d\x17\x87\x65\x2a\x32\x70\x65\x76\x68\x5b\xfe\x5d\xb9\x1d\x6a\x98\xb7\xda\x92\x7b\x9b\xb1\x97\xd9\xb7\x7a\x5b\xfc\xdb\x4c\xe1\xa9\x79\xf8\x36\x0c\x9c\x6a\x38\x59\x94\x0b\x3c\x88\xfe\x5c\xa6\xca\x9c\x45\x77\x42\x5e\x09\xdb\xda\x86\x9f\x07\x33\x0b\x58\xba\xe3\xd4\xc1\xaa\xbc\xc2\x79\x27\x7c\xce\xd7\xed\xef\x40\xc4\x46\x78\xb4\x0c\x55\x64\xf3\x31\x4b\xcd\x32\x38\xd6\x0a\xb3\x1d\x1b\x56\xab\xb3\x54\xb0\xb8\xc5\x34\xff\x96\xb1\x74\xb9\x62\x9e\x13\x9a\xa8\xa6\x89\x72\xa1\x99\x91\xd4\x4b\x8f\x27\x32\x9d\x53\x6d\x5f\xf8\xe3\xbf\x75\x5d\x08\x2d\xef\xd9\xba\xfd\x1f\xe0\x6e\x46\x54\x01\x19\xcc\xb3\x44\xf3\x45\xc2\xc8\x82\x4e\x99\xb2\x2b\x92\x25\x5a\x1d\xc0\x6b\x46\x3b\x60\xe9\xa1\xbf\xe5\xa0\x07\x77\xbb\x67\x0a\x7e\x21\x13\xcf\xec\x04\xfb\xa2\xa1\xa5\xa1\x80\xfb\x1d\x96\x28\xbc\xb5\x9e\x60\x29\x37\xa3\x19\x25\x53\x3d\x1a\x2f\x8f\xee\x59\xa5\xdf\x46\xca\xa1\x82\x50\xad\x53\x3e\xce\x34\x33\xf3\x36\x6d\xb8\xfb\x19\xd8\x23\x0a\x01\x6d\x58\xc3\xcb\x4d\x38\xe6\x29\x8b\x60\x6e\x5d\x0e\x8c\xff\xca\xcc\xdb\x68\x62\x4b\x9c\xfd\x3d\x5b\x82\xcc\x53\xb3\x02\x7e\xcb\x87\x62\x28\xc8\x21\x39\xeb\xdf\x9c\xf6\x2f\xce\x06\x17\x1f\x4f\xc8\xfb\x25\x89\xd9\x84\x66\x89\x3e\x20\x13\xce\x92\x58\x11\x9a\x32\x68\x92\xc5\x46\xae\x31\x83\x61\x22\xe6\x62\x4a\x64\x1a\xb3\xf4\xe9\x96\xb1\xf4\x94\x89\x6c\x5e\xba\x57\xe0\xf7\x7c\xf4\xa5\x2f\x8c\x18\xe3\x1f\x15\x9e\xfc\x4f\x65\x81\x61\xc6\xa6\xef\xa0\xb5\x67\x13\x9c\xa2\x19\x4f\xe2\x94\x89\x63\x4d\xd5\xfd\x88\x7d\x61\x51\x86\x77\xf2\x3f\x8a\x3f\x8c\x8c\xf4\x2b\x63\x56\xfc\xa5\xf0\x47\x2e\x6e\x75\xfe\xd4\xeb\xdb\x9d\xbf\x04\xed\xbc\xdd\x77\xf0\x0b\x8f\x6b\xdf\x86\x5f\xd6\xcc\xc1\xbd\xb3\x62\xb0\xee\x95\xc6\x51\xb9\x17\xac\xb0\x57\xfb\x4e\xca\x74\xba\x1c\x51\xad\xd9\x7c\xa1\x3b\x5a\x1e\x28\x49\x8c\xec\xba\x4a\x56\xbd\x90\x31\xeb\xbb\xfe\xfe\x62\x45\x50\x14\x36\x91\x6b\x4d\x58\xca\x44\xc4\x9a\x5b\xb8\xa5\xea\x3e\x6f\x61\xbd\xc0\x0b\x34\x46\xcc\xf2\x93\x9c\xc0\x2a\x1d\xe7\x62\xaf\x59\x92\xfc\xcd\x75\xc2\x6e\x61\x3e\xea\x83\x4c\xcd\xf0\xde\x82\xc0\x5b\x18\xf8\x73\xc8\xbc\x9b\x9e\xe8\xaf\xce\xca\xb1\x21\x7f\xda\xdb\x44\xb6\x5f\xc9\xb6\x16\x14\x99\x12\xb5\x54\x9a\xcd\xd7\xda\x52\xde\xce\x42\xd8\x0b\xe8\xb5\x0e\xb8\x74\x07\xfe\x06\x4e\x7d\xf1\x46\xdf\x1f\xef\x0e\x4b\xb6\x2b\x4b\xe8\x6b\x9f\xa7\xf3\x76\xad\x9e\xea\x8d\xdb\xbe\xc0\xdd\xf3\x26\xa6\x59\x90\x35\x77\x3d\xc8\x27\x32\x67\x34\xee\x95\x5b\xed\x11\x0c\x60\x8d\x22\x5b\xb4\xa5\xfb\xf3\x67\x3e\x0d\x2d\x40\x68\xee\xd3\x33\xae\x02\x63\x18\x89\x64\x8a\xb2\x60\x6c\xcf\x3b\xea\xb2\xbd\xdb\xde\x4d\xff\xf6\x84\xf4\x48\x4c\x35\x35\x07\x3c\x65\x8b\x94\x29\x26\x34\xd8\x09\xcc\xf7\x7a\x49\xe6\x32\x66\x09\x6a\xb4\x1f\x8c\x64\x4d\xce\xa8\xa6\xa7\x54\xd3\x44\x4e\x8f\x48\x0f\xfe\x34\x1f\x73\x45\x68\xa2\x24\xa1\x8e\xac\x58\xec\x9a\xa0\x22\x76\xac\x85\x92\x48\xce\x17\x3c\xf1\x7e\x04\x6f\xbc\xe1\x22\xe6\x0f\x3c\xce\x68\x42\xe4\xd8\x70\x15\xa3\x81\xf7\x1f\x98\xd0\x19\x4d\x92\x25\xa1\x49\x42\x6c\xb7\xee\x05\xa2\x66\x32\x4b\x62\xd3\xae\x1b\xa5\xe2\x73\x9e\xd0\xd4\xa8\xf8\x38\xda\x4b\xdb\x16\xb9\x9d\x31\x3f\x56\x18\x97\x59\xcd\x39\xbd\x67\x8a\x70\x4d\x16\x52\x29\x3e\x4e\xf2\x33\x7f\x37\x20\x30\xee\xd3\xf3\x01\xd8\x0b\x22\x4d\x24\xf2\x50\xd7\xb9\xb5\x0f\xb9\x1e\xe7\x54\x08\x06\x1d\x4b\x3d\x63\xa9\xed\xde\xbe\xfc\xd2\xaa\xff\xdd\xc5\xcd\x55\xff\x74\xf0\x61\xd0\x3f\xab\xea\xfe\xb7\xbd\x9b\x9f\xab\xbf\x7e\xbe\xbc\xfe\xf9\xc3\xf9\xe5\xe7\xea\x93\xf3\xde\xdd\xc5\xe9\x4f\xa3\xab\xf3\xde\x45\xf5\xa1\x25\xab\xd6\x66\x84\x70\x64\x1d\xcf\xd6\xde\x66\xfa\x54\x36\xd3\x83\xaf\xd7\x68\x6a\x9d\x52\xed\x0d\xa6\xde\x46\x61\xbf\x24\x0b\xaa\x14\x4a\x46\x38\x82\xa3\xa1\xf8\x24\x53\xc3\xc0\x26\xd2\xf0\x08\x23\x3d\xe9\x34\x8b\x34\x17\x53\xff\xd1\x09\x19\x66\xdf\x7f\xff\x87\xe8\x9c\x8b\x7b\xf8\x17\x7b\x8d\x8b\xb3\xb7\x28\xef\x2d\xca\xbf\x2d\x8b\xb2\x11\x7d\x8e\x43\x43\xf2\x6e\x83\xab\x8c\x70\x01\x3e\x71\x23\x4a\xc8\x4c\x9b\x7f\x9a\x2e\x81\x3c\x56\x84\x58\xb5\x33\x58\xfa\x08\xab\x86\x3e\x52\x39\x07\x41\xee\x0b\x57\xc0\x8c\x1e\x65\x7a\x3f\x49\xe4\x63\x3b\x73\xe5\x47\xa6\xfd\x30\x8c\xe0\xf4\x16\xac\x94\x9f\xed\x0c\xfd\xc0\x3f\x32\x6d\xc6\x7e\x6d\x7b\xd9\x07\x5b\xed\x83\xad\x5e\x36\xd8\xea\x55\x99\x0a\x9f\x9e\xb5\x16\xed\x8a\xc8\x5f\x1b\xfc\x70\x8d\x6e\xb6\x06\x2f\x5a\xe0\x24\x7b\x16\x9e\x5c\x74\x45\xed\x92\x2f\x17\x9d\x4d\x6b\x78\x72\x61\x18\x6f\x85\x2f\x17\x06\xfd\xfc\x3c\xf9\x37\xe1\x27\xda\xbb\x81\x36\x5c\xa8\x37\xc9\xba\x5b\xde\x4a\xcf\xe6\xc4\x79\xfa\xab\xa4\x12\xf3\xd1\x25\xc8\xa3\x43\x54\x47\xeb\x30\x8e\x35\x71\x1b\xb5\x81\x1a\x75\x91\x19\xd5\x50\x8c\xda\xd8\x8b\xed\x82\x2d\x36\xbd\xf5\xda\x87\x4f\x74\xbd\xf5\xda\x07\x4e\x7c\x64\xba\x30\x8c\xb7\x72\xeb\x15\x06\xfd\xfc\xb7\xde\x6f\x34\x5e\x62\x1f\x20\xf1\x84\x4b\xf7\xb5\xdf\x95\xaf\x37\x04\xe2\x37\x10\xf3\xb0\x0f\x72\xe8\xb4\x46\x5f\x57\x54\xc3\xd7\x1a\xc6\xf0\x36\xe3\x16\xf6\x81\x0a\xfb\x40\x85\x97\xf0\x28\xbd\xbd\x40\x85\x27\x55\x7c\x99\x21\x2b\x05\x56\xd4\x50\xb9\x79\xb7\x90\xaa\x59\xdf\x0b\x9d\xd7\x35\x7a\x1d\xb4\x59\xb4\x66\x02\xf5\xfe\x85\xcc\xa8\x22\x32\x8a\xb2\xb4\xe4\xa2\x2d\x9f\xf2\xd3\x94\x51\x6d\x8e\x48\xd1\x70\x49\xa0\x65\x92\xb2\x48\xa6\xe0\xa4\xa4\x64\x31\xa3\x8a\x11\x9d\x52\xa1\xf8\x3a\x2d\x0f\x5b\x85\x71\x99\x76\xde\x82\x82\x57\x5d\xc4\xe7\x52\xef\xc6\x32\xae\x1c\x48\x3c\xab\x75\x4f\x56\xdf\x24\x3b\x9b\x3a\xa4\xfd\xb6\x99\xf9\x13\x1e\x15\x73\x6b\xed\xf8\xa8\x14\xd4\xf8\x4d\x8f\x4a\xd1\xda\xb1\x93\xa3\x02\xe3\x7a\x2b\x47\xa5\xba\x88\xbf\x99\xa3\x52\x37\xf5\xd7\x70\x54\x5c\x38\xc0\x8e\x8f\x4b\xc5\x07\xbf\xe9\x91\xa9\x86\x2b\xec\xe4\xd8\xf8\xf1\xbd\x95\xa3\x53\xbf\xa0\xbf\x99\xe3\xd3\x34\xfd\x97\x3d\x42\xde\x0f\xd1\xfa\xf0\xdc\xa6\x7c\x3a\x65\x29\x6a\x46\x91\x21\xc5\xf5\x50\x4b\xb9\xe5\x7d\xb3\x03\xb3\xfe\x34\xf8\x1e\xde\xc2\x49\xf0\x83\xc5\xb1\xff\x66\x8e\x40\x65\xde\xaf\x84\xf6\x8f\x53\x86\x89\xb1\x3b\x38\x04\xc2\x5a\x02\x22\x9a\x6c\x79\x1e\xae\xed\xa0\x3a\x9f\x08\xf7\xe1\xfe\x4c\xbc\xa5\x33\xe1\x76\xed\xf5\x9c\x8a\xa6\x20\xd2\x9d\x67\xc7\x77\xc9\x6b\x5f\x11\x05\xaa\xc8\x9c\xea\x68\x66\x1e\xa2\xef\xb6\x25\x72\x53\x9e\xc8\xfe\xa6\x0e\xca\x73\x64\xaf\x7f\xdd\x5e\x9a\xbd\x77\xe6\x37\x88\xba\xf7\x6a\x92\x36\xf6\x79\x5f\x4f\x94\xf7\xc5\xd5\x3e\xef\x6b\x9f\xf7\xd5\x76\x81\xf6\x79\x5f\xfb\xbc\xaf\x37\x9b\xf7\xf5\xa4\x29\x5f\xbb\x4b\xec\xda\x4d\xf6\xd6\x9b\x92\xce\xf7\x92\xf9\x5e\x32\xdf\xa7\x68\xf9\xa9\xed\x8a\x0b\xba\xaf\xdf\xc5\x2c\x61\x9a\x35\x1b\xe8\x58\x3a\x37\x0a\x07\xde\xf0\x5c\x18\x51\x70\x9a\x32\xa5\xb6\xe5\x69\xbe\xe1\x10\x52\xba\xc6\xc5\x93\x23\xeb\x79\xb2\x04\xbb\xce\x2a\x66\xe7\xdb\x7e\x9b\x2c\xcf\x0f\x7f\x9f\xa6\xba\xe7\x81\x7b\x1e\xb8\xc9\xd4\x5e\x8f\x39\x3a\x38\xcc\x2f\x6a\x8f\x0e\xaa\x0b\x8c\x78\xbc\x4d\x81\x81\xf6\x60\xad\x74\xce\xe2\x3e\x84\x52\xfa\x40\xd0\xf4\x2f\xe6\x93\xb0\x74\x80\x0b\x9a\x6c\x6f\xb1\x0e\xbf\xce\x17\xbe\x80\xf7\xbe\x99\x01\x3b\x47\xf1\x1f\xc4\x6f\xc2\x86\x5d\xbb\xc2\x5f\x49\x05\x82\xd7\xc1\x48\x9e\xbd\x00\xc1\xeb\x98\xf6\xde\xa6\xba\xaf\x3f\xb0\xb7\x1a\xb6\x9c\xf0\xde\x6a\xf8\x7a\xad\x86\x2f\xe5\x0a\x78\xe6\xe3\xf9\x5c\xa2\x63\xfb\xf0\x36\x17\x85\x26\x62\x92\x2d\x12\x49\xe3\x96\x25\x04\x03\x89\xae\x45\x8c\x9b\x88\x49\xca\xa6\x5c\x69\x96\x9a\x7d\xa9\x15\x0c\xd7\x07\xbd\xbd\xd5\x5a\x81\xad\x43\x7c\xc2\x6e\xdf\xfd\x5b\x8b\xe1\x5f\xdb\x3b\x1b\x38\xd1\x98\xc6\xbe\x88\x17\x88\x6f\x73\xba\x24\x33\xfa\xc0\xc8\x84\xf2\x04\x55\x41\x1e\xd3\xf2\x5a\x97\x66\xb8\x6a\x40\xff\xd1\x6d\x40\xb4\x38\x1c\x5f\xf5\x41\x15\xc3\xc6\x6c\x16\x17\xbc\x33\x33\x8a\x79\x92\x32\x1a\x2f\xc9\x98\x31\xe1\xc9\xa6\xe6\x3e\x69\x18\xf3\x4e\x04\xe7\x17\x57\x4c\xab\xd4\xf3\x5a\xd4\xd2\x67\x0c\x94\xaa\xe7\x37\xdb\xeb\xa0\xdb\x2b\x9e\xea\xc7\xb7\xc5\x82\xf6\xc1\x53\x7b\xf3\xe4\xcb\x9b\x27\xf7\xc1\x53\x7b\x45\xff\x95\x29\xfa\xfb\xe0\xa9\x7d\xf0\xd4\xde\x0c\xb2\x7a\xda\x7b\x33\xc8\x57\x11\x3c\xd5\x4a\x86\xdf\x30\x7c\xea\x8d\x4b\xf3\x7b\x61\xde\xbd\xb7\x17\xe6\xf7\xc2\xfc\x57\x2a\xcc\xbf\x8e\x15\xde\x4b\xf2\x7b\x49\x7e\x2f\xc9\xef\x25\xf9\xbd\x24\xbf\xf3\x65\xdc\x4b\xf2\xf5\x92\x3c\xfc\xcb\x21\x52\x77\x15\xeb\x3b\x8a\xf3\x9d\xf3\x23\xba\x3b\x03\x3f\x32\xfd\x56\x3d\x81\x7b\xa9\x7d\x2f\xb5\xbf\x6e\xa9\xfd\xd5\x4c\xe8\xeb\x43\x93\xdd\xe3\xb1\xee\xf1\x58\xf7\x78\xac\x4f\x8c\xc7\xea\xbe\x7e\xb7\xc8\x9a\x65\x9b\xbb\x45\xec\xc5\x61\xa5\xa9\xce\x14\x02\x7a\xe5\xc1\x26\xad\xc4\x9e\x55\xb2\x0e\x76\x51\xee\x61\xbd\xdc\x43\x7a\x9a\xcc\xa5\xd1\xdd\x04\x2b\xbc\xe3\x18\x1c\x06\xd6\x4c\xf9\x03\x13\xc4\x25\x07\x1c\xd8\x6b\xec\x00\x8c\x29\xff\xf4\x87\x0f\xb3\xb5\xa8\x26\x94\x68\x3e\x67\x47\x64\x30\x41\x6e\x11\x99\xd3\xa5\x98\x56\xa5\x68\x2c\xa4\x7c\xf8\x48\xc4\xf9\x58\x5d\xdf\x3c\x0f\xce\xc1\xd7\x0e\x1c\xb3\xcd\x12\x8d\xac\xd7\x35\xfe\xc8\x93\xc4\x8c\xc1\x72\x28\x38\x68\x73\x96\x26\xee\xcb\x42\xb7\xee\xe5\x39\x8d\x0d\x63\x08\x86\x90\xa7\x95\x85\xef\xc3\x9d\xce\x95\x0f\x2f\x2a\x7c\x8f\x5f\x1f\x11\x6b\x3b\x40\xec\xc1\x56\xc3\x98\x41\xf4\x9b\x11\xf1\xe2\x2c\x61\x84\x2a\x25\x23\x4e\x41\x8d\x41\x19\x80\x70\xed\x2c\x0d\xee\x25\xd7\x75\xcc\x15\x1d\x27\x2c\xb6\x6b\xcc\xf2\x68\xa7\x95\x23\xe7\x8a\x8c\x99\x59\x62\xc3\xa6\x8a\xab\x3f\x43\x09\xa4\x66\x34\xc1\x50\x58\x75\x24\x4c\xe0\x40\x56\x48\xd0\x48\x9c\x6f\x55\x88\xc6\xd1\xef\x93\xee\xf6\x22\xf5\x5e\xa4\xee\x34\xa1\xaf\x4a\xa4\x7e\x45\x11\x9a\x8e\x21\xbd\x68\x84\x26\xf8\x40\x0d\xe7\x1f\x79\xc3\xa6\x6a\x6b\xeb\x39\xe7\x4a\x2b\x12\x65\x4a\xcb\x79\xb3\xe4\xf3\xc9\xf5\xd0\xf3\x1d\x9c\x4a\x31\xe1\xd3\x0c\xef\x96\xbf\x58\xd9\xc4\x9f\xe8\x5c\x4d\x59\x2e\x58\x3b\xc3\x90\xb7\x5b\xaf\xeb\xac\x36\x1f\xb1\xc6\xc9\x5b\xd3\xce\x9b\xb8\xed\xea\x87\xfe\x5c\x97\x5e\x17\x65\x35\xb7\x8f\x5b\x4d\xd3\xe8\x17\xa3\xeb\xfe\xcd\xe5\xdd\xf5\x69\xff\x84\xf4\x16\x8b\x84\xa3\xcb\x0a\x29\x8c\xff\xdd\x4c\x0a\xa1\xd5\x3d\x89\x58\x81\x48\x81\xe8\x03\x3e\x32\xa3\x0f\x92\x43\x72\x7a\x7e\x77\x73\xdb\xbf\x6e\x68\xd0\x92\x04\x14\xa6\x63\xf3\x45\x02\xf2\xd1\x7d\x36\x66\xa9\x60\x46\xc2\x8f\x92\x0c\x92\x0e\xbc\xe7\x0c\x1b\xed\xff\x57\xff\xf4\xee\x76\x70\x79\x31\xfa\xf3\x5d\xff\xae\x7f\x42\x1c\x6d\x99\x66\xcd\xb8\xcc\x28\xe2\xa5\xa0\x73\xa3\x75\x17\x31\xe0\xff\x96\xb1\x0c\xc4\x31\x3e\x15\x73\x26\x74\xb9\x45\x37\xe0\xf3\xde\xfb\xfe\x79\xb1\xe5\x19\x23\x3f\xff\x29\x1f\x54\x42\xc7\x2c\xb1\xae\x3c\xf0\x4e\x99\xf3\x93\x77\x64\x7d\x7c\x19\xae\xea\x9f\xef\x7a\xe7\x83\xdb\x5f\x47\x97\x1f\x46\x37\xfd\xeb\x5f\x06\xa7\xfd\x91\xd5\xa4\x4e\x7b\xa6\xdf\x42\x4f\x56\xe1\x22\x7f\xcb\x68\x62\x34\x72\x39\x01\xdf\x18\x8f\x18\x79\x9c\x31\x41\x32\x01\x14\x87\x6a\x3e\x68\x25\x21\x8e\x03\xce\xe8\xea\xfc\xee\xe3\xe0\x62\x74\xf9\x4b\xff\xfa\x7a\x70\xd6\x3f\x21\x37\x2c\x01\x45\xd8\x2d\x3a\xec\xe2\x22\xc9\xa6\x5c\x10\x3e\x5f\x24\xcc\xac\x06\x1e\xce\x31\x9b\xd1\x07\x2e\xd3\x82\xb6\x02\xeb\x08\xac\x00\xda\x77\x0a\xe7\x28\x58\xba\xcb\x8b\x0f\x83\x8f\x27\xa4\x17\xc7\x7e\x0e\x0a\xda\x28\x50\x8e\x83\x9f\x38\xac\xc0\x4f\x44\x14\x03\x42\xa0\x8a\xe1\x03\x4b\x53\x1e\x33\xf5\xe2\x0e\x87\xc2\x81\xa8\xaa\xd0\x65\x0a\xaf\xbe\x51\x22\xd7\x55\x2f\x14\xa8\xaf\xfa\xe2\x3a\x2a\xaa\x7e\x51\x22\x83\x66\xc3\x41\x65\x1f\x5b\xdb\x04\x8a\xeb\xf3\x6c\x37\xa6\x61\x76\xf1\xc8\xd9\x86\x8e\xff\x51\x60\x7a\xff\xdc\x61\x84\x14\x26\xc5\xac\x04\x98\x0a\x32\xc4\xff\x62\xaf\xb6\x96\x17\x66\xf0\x65\xdd\x87\x35\x95\xa8\xf3\x0f\xde\xc2\x4d\x18\x0e\xf7\x15\xdd\x7a\xd7\xa1\x6c\xe3\x44\xe4\x39\xd3\x14\xaa\xa6\x6a\x49\xa6\x4c\x1f\x91\x4b\x01\xcf\x6e\xa9\xba\x3f\x20\x0e\x11\x9f\xc8\x94\xe4\xc2\xe3\x33\x24\x95\xbf\x11\xa3\x61\x77\x85\x66\xaf\x98\xef\x15\xf3\xfa\x95\xd9\x47\xa8\x35\xac\xf0\xae\x6e\xd4\x4e\x76\xf6\xdd\x5d\x7c\x81\x59\xdd\x05\x9b\x94\xec\xa2\x85\x1b\x71\xad\x0d\xf4\xed\x5e\x86\xcf\x6b\x05\xdd\xe9\xd5\x98\xc1\xd0\xf7\xf7\x1e\xfe\xdf\xfe\xde\xdb\xdf\x7b\xfb\x7b\xef\x15\xac\xf0\x8b\x5b\x94\x6b\xb8\xfb\x8b\x9a\x94\xd7\x29\xc8\x1b\x43\xd3\xe5\x0a\x71\x17\x70\xba\xbf\xb4\xc1\xa0\xab\x31\x25\x57\x35\x64\x45\xd4\x8c\xa6\x58\x89\x2e\x92\xf3\xb9\x14\x45\x5b\xf5\x01\xf1\x8e\x75\x30\x04\xc2\xec\xd6\x59\x9a\xf3\x6e\xf8\xdb\xb0\x31\x07\xeb\xf2\x1c\x19\x45\x3b\x15\x21\x30\x54\x7f\xaf\x5f\x3f\xa1\x9c\xb1\xc7\x0e\xdc\x29\x76\xe0\xeb\x98\xeb\x93\x64\x1f\xed\xde\xbe\xfe\x36\x32\x8e\xf6\x20\x81\xfb\x9c\x9a\x7d\x4e\x0d\xfc\xbe\x07\x09\xdc\x1d\xb5\x3e\xad\x4c\x2f\x63\x36\x2a\x95\x51\xf1\x7f\x8e\xca\x2e\xaf\xc2\x93\xd0\xff\x55\x78\x90\x27\x19\x41\xeb\x3c\xde\x65\xe9\x95\x42\xc5\xfa\xee\xe5\x57\xcc\x88\x5a\x97\x5e\x29\xf4\xf5\xca\x45\x78\xb7\x4c\xd5\xb2\xfe\xcf\x10\x11\x59\x47\x31\x5f\xa3\x35\xaa\x86\xfe\xf7\xa6\xa9\xb5\x0b\xf5\xb5\x56\x2b\xc8\x19\xdc\x1b\x72\xd4\xb4\xbb\x05\x5c\x48\xcd\xa8\xe1\x2e\xa8\x7f\xee\x6f\x84\xfa\xc7\x4f\x03\x23\xd3\xfe\x42\x28\xa1\xc7\x14\xaf\x82\x4d\x51\x63\x0a\xdd\xbf\x0d\x3b\x4f\x38\xe2\xe7\xb0\xf4\xac\x24\xa6\xaf\xee\x9a\x58\x75\x34\xf6\x97\x45\xcb\xe5\xfa\x5a\xaf\x8c\x3d\xda\xcb\x2a\xdb\xcb\x1e\x4e\x65\x6f\xfa\x79\x3d\x13\xde\x9b\x7e\xde\xb4\xe9\x07\x1d\xd5\xa3\x05\x4d\x99\xd0\x35\x32\x7a\xf9\x3a\x81\xd7\xc3\xbc\x79\x27\x75\x40\x03\x28\x2d\xda\x0b\xd9\x5f\x55\x5f\x97\x2d\xc8\x0a\x06\x23\x94\x2b\x82\xbc\xa1\xe3\x7f\xe4\xff\x0e\x94\x80\xe0\xc7\x1a\x87\xef\xaa\x40\x30\xc4\xb0\x57\xe6\xfa\xce\x6c\x4c\xd8\xae\xb2\x8d\x9c\x90\xd8\xe0\xa8\x6d\x8e\x1f\x73\x29\x05\x2c\xce\x05\xae\x7c\x86\x35\x71\x65\xb6\xa7\x43\x27\x86\xe5\xf1\x13\x6b\xc3\xcc\xae\xf0\xd3\x33\xf8\xf2\x6d\x65\x22\x35\x0c\xfd\x79\xc3\xcf\xaa\xe4\xd8\xee\x74\x3b\xe2\xe0\x98\x5b\xf3\x38\xe3\xe0\x89\x01\xa8\x38\xb8\xcf\x83\x0d\x77\xf9\xd3\x14\xd2\x8b\x9a\xae\xa7\xe7\x16\x20\x2b\x67\xae\xdd\xc4\x2d\x8d\xbe\xdd\x79\xbf\x78\x30\xce\x1a\xba\x7f\xd1\xc0\x9c\x15\x8c\x7b\xbb\x72\x91\x2f\xc6\x97\xbd\xed\xfe\xf9\x38\xf3\x47\xa6\xbf\x3e\xb6\xfc\x91\xe9\xe7\xe2\xc9\x9b\x32\xe2\x95\xcc\x28\xaf\x11\xf4\x46\xe3\x44\x2a\xfc\xf7\xcd\x4e\xb7\x4b\xbc\xd6\x67\x9c\xa4\x0d\xd6\xf2\xa9\xe8\xe1\x54\xb5\xb4\x06\x8c\x82\x0e\xb8\x4f\x19\xde\xa7\x0c\xef\x53\x86\xf7\x29\xc3\xaf\x2f\x65\xd8\x7d\xfd\x2e\x66\x09\xd3\xac\x51\x6e\x3a\x83\xc7\x2f\x25\x37\x61\xef\xcf\x28\x35\x61\x87\x5f\x9f\xe0\x84\xf3\xda\xcb\x4e\x7b\xd9\x69\x17\xd3\x7d\xad\xda\xab\xa3\xf2\xd7\xa0\xbd\xb6\x46\x27\xca\x83\xc4\xd6\xc6\x06\xd8\x69\xff\x65\x6d\x50\x40\x80\xf4\xe8\x86\xb3\xce\xf1\x7f\xe5\x86\xfd\x76\x98\x9c\x7a\x6a\x3e\xb6\x8d\x7b\xd3\xad\xfb\x57\xeb\xdd\xdc\xd7\xb2\xa8\x5d\xab\xbd\xf3\x75\xc5\xe2\xec\x9d\xaf\x7b\xe7\xeb\xab\x73\xbe\xee\x5c\xa5\x5a\x59\x91\xfe\xda\x5e\xcd\x2b\xa3\xc2\xdd\x45\x8f\xba\x8c\x21\x05\xc4\xdf\x8e\xd9\x22\x91\x4b\xb0\xb1\xac\xb4\x36\xfb\x5a\xf4\x35\xc1\x51\xe5\xcb\xdf\xbd\x7d\x55\x11\xda\x5f\xfb\xfd\xef\x46\xfe\x5c\x6a\xcd\x6b\x11\x7b\xf3\x79\xbf\x0a\x41\xf7\xf8\x1f\xa5\x94\x88\x56\x98\x29\x41\x12\xc3\xfa\x63\x30\x14\xf5\x4f\x02\xc8\x7c\x7b\x6b\x8e\x33\x1d\xc4\x1b\x2a\x73\x00\x16\x2c\xd5\xcb\xe0\x4d\x36\x5f\xe8\xe5\x7f\x0e\x05\xcf\x91\xb5\xf9\x54\xc8\x14\x79\xa0\xf9\x78\x46\x45\x9c\x98\xf3\xa3\x7c\x3b\x11\x15\x42\x6a\x10\x4e\x60\x06\x31\x79\xe0\x14\x45\x99\xde\xd5\xa0\x85\x4f\xbe\xd5\x59\x2c\xb8\xd3\xdf\xd0\x49\x7c\x6e\xcc\xea\x35\xb7\xe8\xc7\x44\x8e\xa1\xca\x42\x56\x34\x31\x98\x06\xf6\x0e\xe0\xc2\xce\xbd\x14\xf3\xd0\x54\xdd\x97\x13\xb5\x8a\x61\xfb\xa3\x95\xa9\x5b\x6b\xde\x2d\x80\x19\xae\x7e\xb5\x94\xde\x55\x7c\x66\x13\xbe\xe0\x31\x0c\xb9\x3c\x0e\xf7\x63\xd8\xa1\xfb\x2d\x6f\xd9\xfd\xe2\xaa\x54\xc1\x8f\x29\xd3\xe9\x72\x44\xb5\x36\x0c\x69\x97\x39\x65\xb7\x54\xdd\x6f\x91\x53\x56\xf4\xee\xac\xc9\x29\x2b\xf4\xf5\xca\x39\x56\x21\xa7\xac\x38\xf0\x27\xe7\x58\x2d\x89\xfb\xab\x4b\x1f\x68\x7b\x54\xf7\xa9\x04\x1b\x2c\xdd\xd7\x9a\x56\xb0\x8a\x17\xbf\x9a\x11\x96\xae\x83\xaf\xf1\xe4\x16\x2f\xb7\xfd\x11\x5d\xb5\x46\x5f\x5d\x39\x8d\x92\xcc\xb2\x66\x6e\x6f\xa4\xac\x46\x59\xec\xda\xf5\xa8\x9e\xc6\xfe\x1e\xec\xc6\xbe\xce\xde\xbe\xce\xde\xbe\xce\xde\x93\xd7\xd9\x6b\xa7\xb3\xb6\x56\x58\xdb\x6a\xab\xed\x54\xd5\x66\x3d\xf5\x09\x7c\xce\xed\x95\xc9\x52\x3e\x7a\x51\x8d\xdc\x34\x1f\xbd\xd0\xfd\x9b\x70\x4e\x17\x46\xfc\x1c\xf9\xe8\xbf\x51\xcd\x72\xaf\x56\x3e\xc9\xba\x7d\xad\x3a\xe5\x2b\x57\x28\xf7\x99\xf4\x7b\x14\xc3\x7d\xa8\xc9\x0e\x17\x67\x1f\x6a\xb2\x0f\x35\xf9\x6a\x43\x4d\x9a\xd5\x13\x1e\x6f\x9d\x25\xd9\x11\xb7\xdc\x5b\x19\xd2\xbf\x80\x28\x65\xc4\xfe\x16\x48\xe6\x75\xda\x42\x2e\x4b\x17\x90\x87\x37\xd7\x1c\x06\xf1\x9b\x50\x19\x6a\x57\xf3\x39\x54\x87\x3d\x08\xf6\x4e\x41\xb0\x5f\xdd\xb4\xf7\x52\xe5\x5e\xaa\xdc\x0b\x4e\x2d\x27\xbc\x17\x9c\x5e\xaf\xe0\xf4\x52\xda\xd0\xd7\x84\x87\x64\x44\xac\x42\x56\xd2\xca\x38\x65\xc4\x34\x02\x67\x46\xb6\x48\x24\x8d\xd7\x45\x1c\xfd\x25\x10\xdf\x56\xc8\x7d\x41\xbb\x69\x1e\xa7\x5c\x12\xff\x56\xc9\x76\xd8\x80\xe9\xf1\x2d\x88\x76\x66\x9c\x38\xe2\x16\xd1\x91\x61\x87\xef\xfe\xad\xc5\xc0\xaf\xed\x9d\x0c\x9c\x66\x4c\x63\x07\x1a\x80\xe2\xd9\x9c\x2e\xc9\x8c\x3e\x30\x32\xa1\x3c\x41\xfb\x1c\x8f\x69\x79\x7d\x4b\x73\x5b\x35\xa0\xff\xe8\x36\x20\x5a\x1c\x4e\x9e\xd1\x68\xee\x0b\x94\xaa\x22\x9a\x38\x77\x1f\xbc\x33\xa3\x8a\xd0\x24\x65\x34\x5e\x92\x31\x63\x22\xc8\x64\x6b\x3b\xe6\x9d\x08\xc6\x2f\x1e\x9e\x19\xd2\xcd\x8b\x46\x79\x03\xd7\x68\xac\x16\xbd\x73\xc5\xb2\xcc\x49\xb6\xd0\x21\xb7\x51\x1c\xd5\x8f\x6f\x85\xb9\x3c\x87\x9a\xf8\x15\x7b\x91\xf6\x9e\xa2\xdf\x66\x4d\xc6\x57\xa3\x7d\xec\x55\xf4\x7d\x92\xf1\xde\xf3\xb3\x37\x60\xec\x0d\x18\x3b\x5f\xc6\xd7\x64\xc0\x78\x41\x19\x1d\x73\x9b\x9e\xa4\x58\xc9\x6b\x91\xd6\xf7\xc2\xfa\x5e\x58\xdf\x0b\xeb\x5f\xad\xb0\xfe\x3a\x56\x78\x2f\xa9\xef\x25\xf5\xbd\xa4\xbe\x97\xd4\xf7\x92\xfa\xce\x97\x71\x2f\xa9\x97\x24\x75\xf8\x97\x43\x0b\xe8\x2a\xb6\xb7\x16\xd7\x37\x83\x06\x68\xe7\xa6\xb3\xd8\x00\x6f\x45\x32\xdf\x4b\xe5\x7b\xa9\xfc\x75\x4b\xe5\xaf\x66\x42\x5f\x5f\x42\xf0\x3e\xa5\x76\x9f\x52\xbb\x4f\xa9\x7d\x89\x94\x5a\xc7\x4b\x56\x49\x38\xab\x6a\xe9\xfc\x62\x99\xcb\xb7\x5c\x44\x49\x06\xa2\xaa\xf9\xf9\x7d\xc6\x93\x98\x80\x8a\x64\x34\x5d\x2e\xc5\x77\x40\x4f\x40\x0a\x30\x4e\x57\xfd\x61\xb5\x04\xf3\x4b\x85\xd5\xbd\x5a\x21\x26\x1f\xed\xa6\x30\x6c\xbb\xda\x53\x5f\x02\x77\x83\x8a\x7b\x85\xdf\x5c\x43\xaf\xa8\x0e\xdf\x81\x13\x4b\x0c\x47\x72\xe3\x7b\xe2\x8a\x7c\xb5\x7d\x76\xaa\xcf\xf7\xd9\x7e\xf4\xb6\x4a\x19\x54\x47\xbd\xaf\xca\x47\x82\x5d\xdb\x57\xe5\x7b\xc2\x79\xbb\x73\xb6\x66\xe6\x8e\x46\xd1\x16\xfe\x46\xa7\xfd\xe2\xc1\x8e\xcd\x27\xfd\x45\x43\x1f\x6b\x2f\xb2\x4a\x6e\xdd\xf1\x3f\x6a\xef\xa9\x17\x28\x46\xd8\xf9\x72\xda\x49\x59\xc2\x6d\xae\xa7\x8f\x4c\x7f\x2d\x77\xd3\xbe\x34\xe1\xbe\xbc\xce\x8e\xa6\xbb\xd1\xdd\xf3\x66\x67\xbb\x2f\xc4\xb8\x2f\xc4\xb8\x2f\xc4\x58\x38\x82\xfb\x42\x8c\xfb\x42\x8c\x84\x3c\x4b\x21\xc6\xce\x32\xe3\x0e\x4a\x32\x6e\x23\x31\x62\xf7\x5f\x8b\xd0\xb8\x2f\xcb\xb8\x97\x1b\x77\x37\xdd\xdf\x96\xdc\xf8\x0a\xad\x16\xaf\xa2\xfe\xa4\xb7\x5a\xbc\x38\x14\x90\x67\xed\xad\xe1\x80\xc2\x58\x13\xff\xf5\x4e\x51\x81\xdc\xa6\xed\x91\x81\xec\xff\xed\x91\x81\xf6\xc8\x40\x0d\xb3\xde\x07\x33\xef\x91\x81\xc8\x3e\x5c\x77\x1f\xae\xfb\x9a\xc3\x75\x5b\x6c\xe3\x1e\x19\xa8\xa5\xc8\xf8\x44\xe8\x40\x4e\xe6\xda\x0a\x21\xa8\x46\x1c\x5c\x8f\x12\xf4\xb9\xaa\x11\xbd\x5a\x51\xcf\x8d\x75\x8f\x16\xb4\x47\x0b\xda\x96\x76\x5e\x85\x02\xfa\x8c\xa8\x41\x75\x1c\xa6\x4b\x2e\x72\x0d\x73\xd9\x56\xc1\x7c\x1b\x08\x42\x6e\xb4\xfb\xc4\xe4\x7d\x0a\xc4\xeb\x4f\x81\x78\x75\x89\xc9\xaf\x46\x53\xd9\xab\xf3\xfb\xdc\xe4\x7d\x6e\xf2\xde\xd8\xb1\x37\x76\xec\x7c\x19\x5f\x93\xb1\xe3\x85\xe5\xf6\x27\x44\x12\x7a\x8d\x12\xfc\x5e\x80\xc7\xf7\xf6\x02\xfc\x5e\x80\xff\x4a\x05\xf8\xd7\xb1\xc2\x7b\xe9\x7d\x2f\xbd\xef\xa5\xf7\xbd\xf4\xbe\x97\xde\x77\xbe\x8c\x7b\xe9\xfd\xd9\xd0\x85\xea\x44\xf8\xce\x08\x43\x1d\xdd\x7c\x41\x02\xd9\x5b\x92\xd6\xf7\x92\xfa\x5e\x52\x7f\xdd\x92\xfa\xab\x99\xd0\x1e\x6d\x68\x8f\x36\xb4\x47\x1b\xda\xa3\x0d\x6d\x24\x23\xfd\x8b\x3d\x96\xef\x82\x9b\xd8\x5f\xd9\xef\xde\x27\x72\x7c\xbb\x5c\x30\xf3\xdf\x33\x3e\x67\x42\x81\x44\xcb\xf5\x32\x94\x89\x1a\x56\xbe\xba\xe6\xef\x6e\x06\x17\x1f\xcf\xc3\x34\xb4\x77\x9f\xee\xce\x6f\x07\x57\xbd\x6b\xbf\x2e\x7e\x56\xe1\x5a\xd8\xef\x0a\x62\xdd\xa9\x9c\x2f\x68\xca\x95\x14\xfd\x2f\xe6\x74\x9a\xa1\x5d\x82\xec\x23\xd3\xcd\x46\xd7\xff\x73\x38\xb2\x8b\xe2\x9f\x1f\x6f\x8b\x7f\x15\x66\x71\x7e\x5b\xfc\xab\xbf\x72\x36\x41\xc3\x65\x7e\x76\x48\x3e\xde\x9e\x90\x8f\x10\xa4\x92\x92\xdb\x19\x45\x96\x74\x7e\x7b\x42\xce\x99\x52\xf0\x4b\xfe\xb1\xe6\x3a\x81\xb9\xbd\xe7\x82\xa6\x4b\xe2\xa6\x8f\xb9\xa8\x14\xac\xbf\x6e\x69\xca\x8b\x27\xfe\x9a\x09\x50\x68\xf2\xd5\x3b\x97\x53\x1e\xd1\x64\xbb\x45\xec\x5d\x84\x07\xe9\xdd\xe5\xf5\xca\xa5\x08\xdf\xae\xae\x45\xef\xe2\x0c\x32\x63\xdd\x50\x6b\x66\x7e\xc1\x94\xd1\x98\x22\x29\x62\x6b\x11\x37\xfc\x6c\x19\x88\x29\x7f\x95\x90\x2b\x9b\x29\x23\x3c\xf7\x2e\xce\xc8\x31\xb9\xbc\x1e\x8a\x4b\xa3\x55\x19\x3e\xcb\xcc\xfd\x8e\x5c\x97\x2b\x22\xa4\x26\x7c\xbe\x90\xa9\xa6\x42\x1b\xd1\x06\x18\x9b\x5d\x11\x54\xd2\x4e\xe5\x7c\x9e\x69\xaa\xf9\x03\xab\x2c\xaa\x40\x25\xf1\x86\xe9\x41\x0c\x06\xe7\x9a\x35\x44\xce\x97\xcf\x65\x91\x9a\xf6\x0d\xd7\x2d\x6a\x16\x3c\xae\x08\xe7\xae\x09\x9a\xa6\xb4\xc8\x1f\xdf\x71\xcd\xe6\xe5\xf7\x5b\x06\x4c\xfe\xb3\x56\x6d\x32\x57\xc2\xb9\xa4\x46\x05\xc5\xf4\xc8\x73\xae\x59\x4a\x93\x4f\x74\xf1\xc1\xd9\xb0\x36\xa0\x8f\xff\x7b\x53\x48\x54\x7d\xf7\x6b\xef\x53\x98\xea\xfa\xee\xea\xfa\xf2\xf6\x72\x25\xcd\x14\x5a\xa8\x12\x8d\x79\x7c\x02\xff\x4b\x8e\x89\x69\xdd\xdf\x5c\x73\xa6\xa9\xb9\xd1\xc9\xb7\x98\xd2\xe5\x53\x30\xb8\x48\x80\x46\x16\x29\x9f\x73\xb3\xaf\x56\x8b\xff\x0e\x2f\x47\x7f\xfb\x7b\x2a\xc1\x0f\x30\x69\x13\xe4\x0e\x4d\x45\x4c\xd3\x98\xfc\x55\x95\xf3\x99\xc1\x78\x84\x3f\xb0\x98\x1c\x92\x99\xd6\x0b\x75\x72\x7c\xfc\xf8\xf8\x78\x64\xde\x3e\x92\xe9\xf4\xd8\xfc\xe3\x90\x89\xa3\x99\x9e\x27\x98\xbf\x6d\x56\xe1\x84\x5c\xa5\x52\x4b\x10\x20\x88\x62\x29\xa7\x09\xa4\x92\x8e\xf1\xb4\xcb\x09\xf9\x4b\x24\x53\x76\x94\x6f\x8c\x55\x2c\x51\x28\x71\xca\xe7\xb1\x79\xa9\xe6\xe8\x94\xf7\x93\xc4\x2c\xe2\xb1\x95\xa4\x98\x88\x24\x58\x1f\xd0\x5e\x69\xda\x73\x79\x70\xcc\x3a\x8b\xfc\x72\x06\xc2\x06\x8d\x19\xa1\x0f\x94\x27\x88\x12\x20\xd1\x10\x89\xeb\x8c\xc9\x2d\x03\x14\x3b\x33\x23\x62\x43\x74\x22\x28\x92\xee\xd5\x85\x99\x70\x24\x13\x32\xce\x26\x13\x96\x86\xbe\xaa\x03\x23\x8d\x70\x45\x52\x16\xc9\xf9\x9c\x09\x34\x55\x9a\x86\xe0\x4b\x58\x31\x3b\xda\xa3\xa1\x80\xfd\x37\x62\x0a\x50\x40\x2c\xe1\x60\x0b\x66\xd4\x15\xb1\xc4\x6e\xc6\xd9\xa4\xe0\x0b\x03\x5c\x04\x1a\x13\xae\x87\xa2\x97\x18\xc5\x76\x2e\x35\x0b\xc3\x2c\xc1\x70\x5e\x58\x70\x60\x08\x29\x5b\x24\x34\x72\x49\xbc\x89\x8c\x68\x42\x26\x3c\x61\x6a\xa9\x34\x9b\x87\x0d\x7c\x0b\xba\x96\x59\x33\xae\x48\x2c\x1f\x45\x22\xa9\x9d\x47\xf9\xb3\xef\x8a\xbc\xa5\xef\xb2\xe5\xfb\x69\x2a\x53\xf8\x9f\x9f\xb9\x88\x37\x3b\x83\x77\x17\x3f\x5f\x5c\x7e\x2e\x1c\xc3\xbb\x9b\xfe\x75\xf8\xf7\xcd\xaf\x37\xb7\xfd\x4f\x2b\xcf\x61\xb9\x95\x9c\xb2\x60\x78\x20\x83\x9f\x90\x1b\x5c\x04\x99\x12\xa3\x55\x35\x4c\xea\x93\x25\xa5\xfc\x07\x19\xb3\xcd\xe6\xf6\xa9\x77\x71\xd7\x2b\x70\x94\x9b\xd3\x9f\xfa\x67\x77\xe7\x05\x01\xcf\xcd\x2f\xf8\xe5\xba\x8f\xe2\x5b\xf8\xdb\xe9\x4f\x83\xf3\xb3\x91\x17\xf8\x56\xad\x46\xa9\xdf\x32\x5f\xba\x45\xfe\x33\x93\x31\x19\x2f\xc3\x94\xd2\x1c\x06\xe1\x91\x2a\x92\x80\xeb\x25\x87\xe3\xc0\x56\x4f\x80\x0d\x39\x5c\x88\xfc\x0b\x23\xdb\x1f\xd8\x77\x00\xc5\x01\xf5\x20\xaa\x8b\xb0\x10\x61\xc3\xa6\x77\x2a\x02\x9d\x02\xf1\x1c\xfc\x1a\x19\xad\x47\x99\x17\x33\x73\x7e\x53\x3e\x9d\x82\x8e\x5f\x1a\x2a\xb6\x66\x3f\x85\x95\x84\xef\x70\xab\x17\xa9\x84\x23\x6d\xba\xb5\xc6\x21\xaf\x40\xe0\x87\x08\x42\x59\x68\x31\xa5\xa0\x1b\xd4\x0c\xcd\xed\x8b\x59\x84\xc6\xf5\xc2\xa3\x97\xc7\x40\x03\x87\x52\x68\x9a\x58\xa4\xec\x81\xcb\x2c\xf8\xd4\x82\x93\x14\x36\xb7\xb6\xf9\x7c\x01\x60\xd9\x50\x7f\xc9\x9b\x29\x52\xf3\xe0\xf2\x46\xa7\x54\xb3\xe9\xf2\xcc\x9e\xec\xcd\xa9\xf8\xec\xf2\xf3\xc5\xf9\x65\xef\x6c\xd4\xef\x7d\x2c\x1e\x4c\xff\xe4\xe6\xf6\xba\xdf\xfb\x54\x7c\x34\xba\xb8\xbc\x1d\xb9\x37\x56\x92\x6b\x43\x07\xd5\xeb\xb4\xf8\xe2\x09\x31\x9c\x11\x38\x98\x43\x6a\x0b\xd8\xd8\x98\x4d\x64\x8a\xec\x78\xee\xbc\x8c\xc0\xf8\x89\x5f\x59\x16\xa3\x8e\x5d\x9c\xc5\x09\x28\xa0\x75\x4d\xa2\x71\x49\xa7\x8c\xce\x81\x9d\x53\x41\xfa\x22\x3e\xbc\x9c\x1c\xde\xe0\x8f\x73\x9a\xde\xb3\xd4\x7f\xfa\x98\x72\xad\x19\x58\xe9\xb9\x35\xe0\x83\x82\x0c\x43\x36\xf7\x0d\x44\xc1\xe7\x1d\x1c\x91\x6b\xc3\x9e\xcd\xfb\xfe\xee\x31\x84\x1a\x33\x4d\x79\xa2\xec\x60\x0b\xeb\x7a\x42\xce\x69\x3a\xcd\xd5\xdd\x6f\xe5\x64\x82\x8d\x7d\x87\xc3\x30\x57\x4d\x61\x16\x35\x2c\xd2\x90\x86\xbb\xbe\xa0\x3f\xfb\xb2\x17\xd2\xaa\x54\x75\xb7\xd8\x8e\xa6\xee\xae\x60\xc5\x2f\x2f\x46\xfd\xff\x1a\x14\x14\x16\xfb\xa4\x86\xd6\x60\xe2\xf8\x78\xf5\x5d\x50\xdf\x76\x95\x9c\x8a\x2f\xd6\x90\x13\x26\xcb\x98\x9d\x9f\x18\x15\xa8\x86\x96\xd8\x17\xae\x71\x63\xc2\x71\x97\x48\x28\x6f\x06\xac\x18\x74\xb1\x60\x34\x55\x75\xbb\x5d\x94\xd6\x1a\xf6\x1e\x7b\x0a\xfb\xb0\x9b\xec\xfa\x39\x20\x52\x24\xcb\xf0\xae\x2f\x51\x64\x0b\x1a\xc0\xb6\x2a\x14\x70\x05\x28\x3d\x97\x16\x11\xe7\x13\x57\x46\x93\xc1\x1f\xdf\x5b\xa8\x9e\xcd\x08\xe2\x43\x6f\x70\x5e\x92\x01\x46\x67\xfd\x0f\xbd\xbb\xf3\xd5\xda\x78\xe1\xbb\xf2\x16\x93\x43\x62\x9e\x17\x5d\x5c\x7c\x82\xfc\xde\x01\x0e\xa1\x9e\xc5\x84\x91\x12\x5d\x6e\x0b\x9a\x85\x62\xb6\x48\xe4\x72\xce\x04\x58\xd9\x0b\xb7\x98\x59\xcf\x09\xe5\xf6\x5a\x08\x06\x7b\x62\x44\x0b\x6b\x00\x84\x2b\xe8\xd0\xa1\x1c\xb1\xd8\xdf\x9a\x45\x90\xa3\x12\xeb\xbe\x42\x23\xb5\xfd\xcf\x8d\xa6\x7a\xc3\x33\xd6\x3b\xbd\x1d\xfc\x52\x30\x0d\xf4\xae\x4f\x7f\x1a\xfc\x52\x27\x7c\x8c\x3e\xf6\x2f\xfa\xd7\xbd\xdb\xfe\xea\xa3\x55\x6a\xb2\x4e\xb0\x50\x66\xc0\x65\x27\x05\x57\xde\x79\x6f\xce\x4e\x2a\x13\xc2\xb5\x22\x0f\x5c\xf1\x31\x07\x60\x29\x6b\xf0\xbf\x1b\x00\x67\x85\x6c\x26\xae\x97\x4e\xf4\xc0\x7e\x8b\xfb\x68\x38\xa9\x6d\x1f\x75\xe1\xd0\x0d\x10\x19\xcd\x09\x37\xc7\x4d\xfa\x84\xf4\xd2\x68\xc6\x1f\x40\xb7\x0a\x3e\x13\x46\xde\x15\x53\x96\xe2\x70\xc0\xc8\x19\x8e\x25\x78\x6e\x46\x15\x0a\x1a\xf9\xaa\x79\xd9\x72\xca\x84\xd1\xcf\xc3\x4e\x50\x08\x4a\x99\xf8\xc6\xc8\x4b\x8b\x84\x47\x5c\x27\x4b\x12\x81\x61\x25\x36\xd2\xe8\x9c\x0a\x3a\xb5\x17\x3b\x68\x23\x25\x92\xf8\x33\xa2\x6f\x5d\x4e\xac\x05\xed\x96\xb3\x0d\x8f\xd9\xdd\xc5\x59\xff\xc3\xe0\xa2\x48\x02\x3f\x0d\x3e\x16\x24\xcd\x4f\xfd\xb3\xc1\x5d\xe1\x36\x5f\x27\x70\x56\x9b\xad\x39\x8a\xfe\xa5\x13\x72\x86\x9f\x9e\x98\xc5\xad\x81\x16\xf3\x3a\x6a\x69\x1d\xae\x5d\xf4\x8c\xfb\x47\x5f\xe8\xb4\xd6\xfc\xd7\xd6\xae\x61\x4d\xfd\x05\xc3\x46\xbd\x47\xb0\xd2\xf7\x45\xd9\x77\x53\xf5\x98\x5a\x7b\xbf\xe9\xe4\x28\x37\x77\x84\xae\x42\xd0\xed\x9b\x2c\x2b\x35\xd6\xe3\x9c\x61\xff\x02\x9e\xa0\x79\xa6\x34\x5a\xec\x81\x38\xc9\xfd\x9f\x94\x59\x50\xb0\xe8\x1f\x91\x1b\xc6\x86\xc2\x29\xf9\x53\xae\x67\xd9\xf8\x28\x92\xf3\xe3\x1c\xd7\xee\x98\x2e\xf8\x9c\x1a\x29\x98\xa5\xcb\xe3\x71\x22\xc7\xc7\x73\xaa\x34\x4b\x8f\x17\xf7\x53\x70\x56\x3b\xaf\xc5\xb1\x6f\x76\x2a\x7f\x77\xfe\x87\xef\x0f\xcf\xff\xf4\xfd\xbb\xaa\xd9\xa6\x69\xff\xfb\x22\xa2\x0b\x95\x25\x36\xb8\x25\x0d\xd7\xc6\x1d\xf9\x8c\xad\xdb\xef\x8b\xe2\x76\x6d\xa7\x66\x9e\x5e\xdd\x15\xcc\xa8\xc5\x3f\x3f\xf5\x3f\x5d\x5e\xff\x5a\xe0\x94\xb7\x97\xd7\xbd\x8f\xab\xcd\xa9\x15\x3d\xb4\xb4\x0c\x3f\x0b\xf9\x28\x8a\xb3\x57\xe5\x49\x67\x42\xf3\x39\x73\x6a\xa8\xfd\xf3\x16\x67\xba\xc1\xcc\x2f\x6f\x7f\x2a\x4a\x52\x1f\xce\x7f\xbd\xed\x8f\x6e\xce\x7e\x5e\x39\x13\xfc\xac\x30\xb2\x1b\x70\xa2\x9f\xca\x24\x9b\x8b\xf0\xdf\x9b\x8f\x6d\x70\x71\xdb\xff\x58\x1e\xdd\x65\xef\xb6\xb8\xec\xd7\xc5\x40\x8f\x77\xef\x2f\x2f\xcf\xfb\x05\xb7\xc6\xbb\xb3\xde\x6d\xff\x76\xf0\xa9\x70\xdb\x9d\xdd\x5d\x23\x14\xdd\xaa\x69\xba\x11\xd4\x4c\xd4\x4c\x2b\x9c\xe6\xae\xf9\x4c\xab\x63\xde\xb3\x81\x95\x78\x50\x0e\x03\xb0\x12\x0c\x69\x00\xcb\xc6\xa1\x37\x2b\x46\x38\xd2\x5a\x5e\xa3\x8b\xdb\x44\x9a\x79\xdd\xca\x8d\x5e\xc5\xf2\x6e\xfd\x10\x10\x9f\x11\xf5\x58\x9a\x24\xf2\x11\x43\xda\xe6\xdc\x5c\x79\x16\xba\xca\xbc\xa2\x48\x94\xa5\x29\x13\x3a\x59\x1e\xd5\xb0\x93\xe2\xb6\xb0\x28\x65\xfa\x93\xcc\x84\xde\x9c\xe4\x7a\x17\x85\x43\xdd\xbf\xf8\x65\xf4\x4b\xaf\x48\x81\x83\xf3\xd5\x87\x3c\x6c\xa2\xe6\x9e\xeb\x5d\xfc\xea\x6f\x38\x08\x7c\x3c\xf0\xea\x1f\x0a\x86\x51\xc2\x8d\x4c\x19\x51\xa3\x1a\x26\x20\x2e\x10\xc6\x41\x9f\x9f\x9b\xc9\x41\xa0\xd5\x02\x3d\x08\x88\x09\x8a\x83\x3c\x71\xff\x28\xb5\xa7\x60\x5d\xc0\xa2\xe8\xe2\x4a\xa1\x1d\xab\xb2\x0a\xc2\xc4\x03\x4f\x25\x80\x8c\x92\x07\x9a\x72\x23\xea\x62\xcb\x66\xae\x27\xf0\xbf\xdd\xda\x04\xe3\x60\x89\x71\xdd\xc8\x54\x9f\xf9\x80\xb6\xcd\x4c\x0d\x75\x81\x5d\xd5\x90\xae\x7a\x2b\x42\xf5\xdb\x9a\xcd\xd9\x32\xf0\xad\x30\xe1\x5b\xaa\xee\x2b\x66\xc3\x81\x50\x9a\x8a\x88\x9d\x26\x54\xa9\x4d\x57\x01\xf5\x9e\x83\x22\xa3\xbc\xbe\xbe\xbb\xba\x1d\xbc\x5f\x43\x9c\xe5\x8f\xab\xa1\x84\x51\x92\x39\xcb\xfa\x38\x95\x34\x26\x66\xd7\xa7\x12\xad\xf8\x56\x18\xc8\x61\x64\x31\x2c\xd7\xc7\x32\x14\x20\x6c\xf3\x68\x42\xab\xfb\x84\xa6\x41\x6e\x17\x82\x44\x66\x25\x48\xa0\x06\x39\x66\x05\x4e\x01\x44\xd7\xb7\x1a\xef\x22\xa1\x7a\x22\xd3\x39\x12\x67\x61\xd2\xd8\xf8\xea\x46\xb9\xd0\x2c\x4d\xb3\x85\xe6\x0e\x17\xb8\x7c\xb9\x42\x59\x67\x39\xfd\xc4\x94\xa2\x53\xb6\x8d\xef\xa8\x4e\xa0\xb8\xf9\x25\xfc\x13\x7c\x43\x6d\x84\x85\xc2\x08\x5d\xd0\x99\xa3\xa7\x4b\xf1\x81\xf2\x24\x4b\xd9\x95\x4c\x78\xb4\xa1\xaf\xdb\x68\xc1\xa3\xc1\x27\x23\xd8\xf7\x6e\xfb\xe7\x05\x0e\x08\xcf\x7a\x1f\x6e\xfb\xd7\x16\x78\xb5\xf7\xfe\xbc\x3f\xba\xb8\x3c\xeb\xdf\x8c\x4e\x2f\x3f\x5d\x9d\xf7\xd7\xb8\x90\x1b\x1b\xaf\x5a\x5c\xca\xaf\x9e\x54\x7e\x81\x1d\x4e\x33\xd4\x9b\x9c\x0e\x0d\x41\xdf\x94\x27\xe0\xbf\x92\xe8\xc7\xa2\x44\xc8\x18\xe1\x2f\x94\xd3\xd8\x3c\x22\x2a\x19\xe8\x6f\x92\x84\xd0\x4c\xcb\x39\x05\x2b\x6c\xb2\x1c\x0a\x3a\x96\xa9\x06\xbd\xd1\xdf\x39\x24\xcd\x84\x30\xe7\xdb\x34\x86\x70\xbf\x51\xc2\xa8\x20\xd9\x22\x88\xd5\xb7\xb6\xc4\x09\x17\x10\xe4\x32\xa7\xe9\xbd\xab\x5d\xe4\x23\x20\xfd\xa1\x50\x84\xaa\xa1\x40\x58\x0e\xcb\x64\x5b\xac\xf0\x49\xab\xb7\x1a\x57\x67\x4e\xef\x99\x59\x95\x79\x16\xcd\x8c\xe6\x39\x4d\x99\x52\xd6\xde\x14\x51\x81\xbe\x43\xfb\xfa\x23\x4f\x92\xa1\x10\xd2\x2c\x85\x33\x6b\xc5\x6c\xc1\x44\xcc\x44\xc4\x31\x2a\x1f\xdc\x6e\xde\xdc\x31\x4d\xe9\x62\x46\x94\x04\x7f\x15\x2c\x3b\xe8\xb4\xf8\x91\x8b\xb8\xb1\x40\x24\xf0\x38\xb4\x4a\xa5\x99\xe1\x13\x97\x70\xbd\xe1\x2a\xc3\xc7\xce\x24\xe5\x4c\xb1\x68\x1b\x98\x2f\x12\xa6\x11\xf8\x19\x96\x1c\x36\xc3\xac\x75\x61\x3f\xcc\x36\xd5\x6d\xc2\x50\xe4\x63\xa6\xca\x8e\xe8\xa8\xc6\xda\x65\x8f\x14\xf9\x89\x8a\x38\x31\xad\x38\xbb\x66\xf1\x2c\x42\x14\x68\xcf\x50\x8d\x3b\x8d\xdb\xc8\x80\x11\xcd\x54\x27\x21\x70\x75\x2a\x05\x5a\x0a\x0e\x73\x7f\x2e\x90\xb7\xcd\xa3\x80\xd5\x5d\x18\x16\x49\x13\x69\x57\x09\x5f\xcf\xb0\x98\x09\x81\xd1\x34\x68\xa5\x8b\x94\x8b\x88\x2f\x68\xb2\x91\xc8\x5a\x8a\x83\xb3\xe1\x65\xdf\xf2\x89\x21\x9f\xef\x2a\x6e\x18\xcd\xd2\x39\xe4\x17\xd9\x61\xfa\x2d\xec\xa0\x5d\xda\x80\x42\xa6\x72\x47\x30\x4d\x65\x86\x36\x7a\x58\x17\x16\xd7\x1c\xd5\xa3\xba\xed\x36\x27\x83\x16\x63\x8f\x36\xd8\x6c\x74\xda\x37\xad\x5f\xa9\x15\xdb\x3b\x46\x8d\xd0\xe4\xaa\xbe\xcd\xba\x1d\x08\x1e\xfe\x73\x15\xed\x7c\xa2\x0b\x43\x33\x16\x8e\x9a\xe6\x73\xb4\xb2\x9d\x2d\x71\xe3\x5c\xdf\x81\x2f\xcc\x87\x64\xb6\xdf\x8d\x7c\x09\x6d\xec\x42\xb5\x93\x82\x4f\x30\x48\x11\xb3\x34\x3e\xc9\xb4\x39\x9e\x14\xbc\x8a\xe4\x5b\x76\x34\x3d\x22\x0e\x38\xfc\x80\xf4\xae\xae\xfa\x17\x67\x07\x84\xe9\xe8\x3b\x17\x5c\x63\x63\x0d\x86\x42\x4b\x2b\xad\x2c\xc9\x4c\x3e\x02\x6f\x64\xe9\x94\x15\xe6\xec\x02\x13\x00\xb8\x68\xca\x95\x4e\x6d\x78\x84\x88\x43\xd8\x7c\x3e\x2f\x8b\xb8\x48\x21\x99\x9e\x6d\x43\x1a\x54\xa9\x6c\x6e\x44\xf0\x11\xa7\xf3\x51\x2a\x93\x6d\x98\xc2\x19\x4c\x05\xa4\x7c\x9f\x5d\xc7\xe9\x9c\x98\x66\xad\x6b\xd7\xbb\x21\xbc\x48\x67\x04\x23\xc3\x97\xcd\xbd\x19\xdc\x5b\xce\x22\x69\x43\x49\xb8\x73\x69\x42\xf6\x5d\x03\xab\xc8\x4d\x49\x23\x6b\xbd\x1b\xd1\x28\x32\x9a\xc2\x8e\x27\x15\xd4\x62\x70\x66\x42\xdb\xd1\x93\x4d\x73\x1d\x9d\xbb\x61\x2e\x0c\x07\x83\xa8\xb5\x2a\x8c\x7a\x4d\xbf\xe3\x65\xa5\x57\x57\x2d\xe1\x4e\x79\x4d\x10\x2f\x61\xc5\x60\x27\x15\x56\x5b\xd0\x33\x66\x51\xbf\xc2\x2e\x5d\x2c\xaa\x69\x78\x29\xb3\xb4\x8e\xd1\x0d\xc5\x19\x5b\xa4\xcc\x48\xfa\x65\xa3\xaa\xa7\xe9\xeb\x22\x25\xee\xe9\x7a\x4f\xd7\x6f\x9e\xae\x4f\xb1\x42\x8a\xb3\x1f\x07\x15\x08\xb6\x21\xf4\xba\x56\x56\xb5\x44\x9e\xfc\x7e\x3f\xc5\x8b\xbd\xae\xb0\x43\x91\x8a\xdc\x1d\xcc\x45\xa5\xa4\x0d\x6e\x24\xd4\x67\x85\x0b\xf7\x6f\x99\xd4\x54\x7d\x77\x34\x14\x46\x7a\xb8\x67\x4b\x34\x8f\x98\xfb\xf9\xf7\x46\x08\x3d\x54\x4c\x28\x08\x51\xfc\x3d\x1a\xb2\xcd\xde\x3a\xf3\x12\xea\x64\x58\x49\xa7\x58\x73\x02\xc2\xca\x6c\xa3\x56\x3c\xc8\x83\xf6\xf2\x42\x15\xee\x19\x0e\x7f\xca\x34\xa4\xf5\x68\xae\x41\x59\x88\xb1\x54\x4f\x65\xe8\x6b\x6d\x88\x48\x15\xa9\x04\xbb\x66\x9c\x6d\xc7\xf1\x54\xb5\x8d\xb5\x2c\xc1\x8b\xc9\x37\x36\x4e\xf3\xd8\x19\x4c\xa2\x54\x56\xea\xdf\x50\x45\x70\xa7\xc7\x78\x0e\x9c\x33\x87\x89\xa3\x47\x7e\xcf\x17\x2c\xe6\x14\xa2\x36\xcd\x5f\xc7\x66\x5e\xbf\x3b\xbd\xbe\xbc\x18\xe5\xb1\xd6\xff\x39\x14\xbd\x44\x49\x62\x04\x7f\x99\x6a\x45\x84\x14\x3e\x44\x74\x91\x32\x27\x0b\xd9\xb9\x98\x55\x0d\x4c\xc1\x43\xd1\x34\x82\x58\x46\xea\x88\x3e\xaa\x23\x3a\xa7\x7f\x97\x02\xfc\x4a\x3d\xf8\xe7\x69\x22\xb3\xf8\x33\xd5\xd1\xec\x18\xdc\x3d\xfa\x98\x3d\x30\xa1\xd1\xac\x6c\x96\x2b\x86\x84\x11\x05\x11\xa6\xbf\x33\x63\xce\xc3\xbe\x95\x51\xe1\x22\xb6\xd0\xe4\xff\x4d\xd9\x58\x4a\x5d\xcf\x9d\xe5\x64\xa2\x58\x27\x4e\x9c\x6b\x27\x37\x97\xe4\x4f\x7f\xfc\xfe\x07\x43\x42\x9b\xac\xf1\xe0\xe6\x72\x64\xbe\xff\xdd\x99\xfd\x5e\x75\xe0\xac\x97\x68\xd5\x05\x36\xee\x88\x07\x83\x3d\x33\x01\x6c\x3f\xc5\xa2\xc8\x92\x50\x24\x87\x7c\x1f\xeb\xb8\xdb\x19\xa6\xd6\x6d\x15\xd7\xbd\xc5\x75\xf6\x31\x91\x63\x30\x88\x64\x85\xa2\x1c\x2b\xdc\x9d\x5d\xdd\x20\xe5\x8b\x89\xab\x45\x42\x97\x95\x1e\xd6\x2d\xfb\x85\xe1\x4e\x0b\x1a\xb1\x3c\x27\xd0\x45\x26\x44\x72\x3e\x87\x68\x19\x17\x9f\x10\xf3\x09\x84\xcd\x68\x73\xd9\x91\x31\xd3\x8f\x10\xa4\xe5\x7e\xf5\x97\xb4\xb3\x44\x1a\x56\x06\xec\x72\x68\x16\x39\xce\xc0\xfa\x3d\x7c\x77\x40\x86\xef\x62\xf6\xc0\x12\xb9\x30\xa7\xd9\xfc\xc0\x74\x54\xb7\x89\xfd\x39\xe5\xc9\x85\xd4\x3e\xee\x67\x9b\xfd\x4c\x59\xc4\x17\xdc\x9c\xae\x11\x33\xed\x3e\x69\xd0\x7e\xfd\x01\xbb\x9d\x31\x8f\x5d\x00\x63\x20\x34\x8e\x0d\x11\x43\x85\x12\x37\xbc\xdc\xb6\x2c\x82\xa9\x17\x90\xf7\xbb\x0b\x2c\x46\xab\x84\x1e\xc3\x36\x8b\x41\x55\xb5\x3b\xe0\x2d\x0e\x3b\x3d\x49\xf5\xbe\xb5\x48\xa6\x1e\xe8\xd8\x77\x9c\x57\x8b\x58\x49\xff\xb6\xf8\x4d\x90\x35\x68\x4d\x75\x8d\xa6\x8d\xf2\x01\x34\x6b\xd1\x6e\x9c\xc5\x95\xb9\x31\xdf\xad\x1c\x9a\x0a\x61\x3b\xa2\xb0\x86\x15\xa8\xd5\x36\x08\xb6\x1c\x77\xcb\xd6\x8e\x38\x4a\xa4\xca\xd2\x96\x8e\xcb\xe2\xa0\x4f\xed\xa7\xab\xc6\xdd\x0f\xad\x10\x59\xa2\x55\x27\x43\x47\xcd\xc2\x97\xf2\x33\x91\x4d\x68\x2b\x39\xdb\xb7\x0f\x48\x5e\x00\x9f\x26\x79\x84\xb0\x88\x49\x2e\x25\x0e\x45\x6e\xcb\x52\xe4\x91\x25\x60\xfe\x8e\xe4\x7c\x01\x12\x90\x1d\xae\x6d\xc9\x5c\xe0\x9a\x6a\x76\x40\x64\xa6\x4d\x63\x07\x58\x79\xd0\x6e\xc1\xe1\x98\x02\x76\x48\x5e\x31\x19\x64\x72\xeb\xcb\xf3\x78\x11\x48\xeb\xc8\x0a\xb9\x20\x1f\x99\x86\x56\x00\x8f\x27\x9c\x20\x56\x58\x5c\x79\x94\x4e\x2b\xdb\xd6\xf9\x44\xd9\x99\x74\xd8\xf9\x3c\x17\xe2\x7d\x22\xc7\x2b\xf7\xfd\x12\x1a\x27\x77\xd7\x03\xe7\x3c\xc8\xed\xaa\x01\xa0\xc0\x3a\xea\x64\x69\x5a\x88\x78\x5c\x73\xf0\x8b\x99\x13\xab\x09\x13\xf2\x16\xb8\xc0\x2c\x12\xc8\xf5\x29\x8f\xd3\x5a\xdc\xd7\x8d\x11\xec\x9f\xa3\xb7\x63\x7d\xc6\xf1\xce\xab\x16\xf7\x75\xdb\x5f\xb4\xd4\x3f\xf5\x64\xe0\x68\xe8\x19\xe3\x29\x69\x35\x2d\x77\x72\x47\x78\xda\xdb\x13\x4d\x4e\xd5\x4d\x22\x2d\xb2\x0f\xcf\x1a\xcc\xc0\x2c\x5a\x50\xa1\x10\xe8\xd1\x50\x94\x06\x61\x5d\x38\x8a\x00\x79\xc1\x2f\x5c\x90\x02\xd7\x3f\x20\x13\xfe\xc5\x36\x9a\xbb\x76\xdd\xab\x81\xae\xdf\xe0\x4a\x98\xd1\x2a\xd9\x75\xb8\x19\xaf\xe0\xfb\x95\xa6\x6d\xa9\xb4\x11\x2c\x8c\x70\x96\x32\x23\x42\xb3\x98\x40\xb7\xde\xd1\xbc\xf6\x56\xd4\x34\x35\x8b\x42\x3b\xa9\x14\x39\x7a\x56\x4c\x35\x3b\xd4\x7c\x6d\x3c\xe0\x02\x1d\x11\xe6\x4d\x42\x75\x90\xc4\x96\x33\xd7\x31\x9b\x52\xe1\xbc\x92\x0d\xc3\x75\x5c\x7d\x8b\xd3\x6c\x84\x34\x0a\x01\x1d\x20\x42\x98\x01\x15\xc7\xa1\x16\xb0\x9e\x2b\xc7\x61\x0d\x3f\xaf\x61\xd9\x1e\xa9\xb7\x43\x35\x0c\x36\x83\x1a\xf5\xaf\x66\xb0\x09\x55\x9a\xd8\x31\x35\x29\x4b\x81\x10\xbb\x83\xec\xdb\x55\x75\xcb\x42\xed\xa3\xad\xc9\xc9\x90\x50\x51\xce\x66\x5a\x73\x5b\x54\x2b\x53\xcc\x26\x4d\xcc\x59\x3a\x75\xb2\x1e\x16\x3c\xf0\x67\xdb\x56\x3e\x70\x8c\x34\x64\x26\xe0\x9f\xae\x36\x7d\x44\x7a\xa2\x92\xfa\xe5\x4c\x92\x85\xf5\x42\xb6\x4d\x93\x47\xba\x54\x64\x91\x62\xa6\x05\x3a\xad\xdd\xe4\xc1\x57\x54\xfc\xc8\x1b\x43\xb4\x8b\x1a\x80\xba\xc6\x2d\xec\xc5\x41\x1d\xbf\xf6\xdc\xae\xa5\xd8\x5f\x72\xa8\xd6\x95\xda\xf3\xda\x54\x2d\xab\xab\xc8\xb1\x79\x76\x64\x18\x96\x6b\x21\x58\x40\xac\xb4\x8a\x45\xbf\xe8\x8c\x6d\x92\xf5\xc0\x90\x78\x4e\xc7\x2c\xd9\xda\x67\xba\x91\x51\x07\xba\xb6\xe0\x38\x46\x87\x67\xe8\x54\x86\x22\xd5\x69\x99\xb5\x39\x53\x68\x9a\xd5\xb9\x98\x57\xcd\xb3\x50\xaf\x63\x8b\x89\x3a\xb4\xa7\x4d\xa6\xda\x84\x01\x15\x5e\x21\x01\x56\x52\x9d\x3a\x1d\x5e\x25\x65\x0b\xd2\x66\x03\x09\x20\x9b\x1a\xc6\xb1\x35\x66\xd3\xda\xa9\x6c\x1c\x62\xdb\x12\x0b\x75\x30\x21\x42\x0a\x46\xb8\xca\x5f\xd6\xc5\xa8\x1a\x9f\xfd\x61\x24\x4a\xd4\xd5\xab\x15\xa8\x9e\x5a\x31\xcf\x43\x87\xbd\x2a\xe9\xa2\x1b\x05\x33\x7a\x0d\x4d\x97\x90\xe4\x8d\x3c\xad\x28\x1f\xad\x1d\xe7\xce\x85\xd7\x5b\x97\xc3\x1f\x38\x7c\xb4\x24\x20\x92\x95\x06\x47\x30\x13\xde\xbe\x64\x3f\xb2\x19\x10\x43\xe1\x15\x61\x20\x44\xae\xc8\x9c\x2e\x8e\x08\xec\x9a\xce\xbf\xc2\x8c\x1e\xed\xb7\xf0\x20\x2f\x0f\x0f\x48\x8a\x0d\x2b\xb0\xce\x12\xe0\xae\xb2\x7c\x5d\x8b\x59\xcf\x0e\x9c\x01\x0b\xd8\xd7\x55\xd6\x76\x9d\x26\xcb\x43\xaa\x14\x9f\x9a\x6b\x28\xb0\x73\xae\xe6\x48\xb6\xfa\xd4\x2b\x30\x5f\xb5\x5f\x32\xb3\xf1\x59\xc5\xa0\x85\xf9\x77\xb9\x06\x1e\x24\x4a\x85\x54\x6a\x91\x1b\xb0\x26\x32\x55\xe4\xf7\x42\xea\xdf\x07\xd8\x16\x4e\x57\xc6\xe2\x64\xd6\x62\x71\x50\x01\xdd\x82\x43\x6b\x09\x87\xd0\x20\x79\x6b\xed\xca\x6f\x0b\xa8\x92\xfb\x4f\x9f\x54\xb2\xeb\x57\x83\xa9\x9a\x50\x0b\x11\xcd\x77\x67\x06\x82\xe7\x28\xbb\x49\x90\x0c\x52\xe6\x12\xf9\xe6\x32\x65\x25\x44\x61\xe4\xe7\x3e\xda\x70\xbe\xd0\xb5\x89\x06\x55\xd1\xa8\xc6\x3e\x86\xe0\xaa\xf9\x49\x2f\xd8\xc5\xd4\xd1\x50\xdc\x30\xd6\x8c\xb8\xe9\xf7\x02\x8b\xfa\xc3\x58\x6d\x7a\xef\x2a\x4a\xdb\x45\xe8\xe1\xbc\x98\xa8\xbd\x82\x6a\xd6\xc0\x60\xd4\xeb\xf8\x9b\x84\x0b\x36\xc9\xb8\xde\xa6\x1d\x96\x8e\x6b\x02\x7f\x38\x1a\x8a\x0f\x32\xb5\x57\xb0\xb2\xb8\x4a\x63\x1a\xdd\x1f\x32\x11\x13\x9a\xe9\x19\x82\x30\x58\x33\xf4\xd2\x52\x83\x91\x34\x80\x6c\x7c\x92\x3f\x57\x11\x4d\xed\xe5\x31\xa1\x0f\xd2\x8d\x62\x28\x82\x46\x00\xb9\x09\xa0\xfa\x00\xb0\xbc\x49\x6d\x63\x80\x8d\xda\xb4\x16\x75\x50\xdc\x15\x20\xee\xd5\xe7\xac\x00\x2d\x0e\x98\x53\x82\x29\x2b\xb2\x97\x56\x67\xe0\x8c\x5b\x4e\x57\x52\x61\x71\x46\xff\xe6\x81\x0d\x02\x46\xf3\x8e\x9d\x81\x91\x74\xbe\x77\xbc\xb6\x00\x47\x31\xc9\x52\x88\xe5\xa8\x6b\xf3\xdb\x68\xc6\x93\xdc\xd4\xfd\xdd\x81\x1f\xa6\x69\x32\x61\x0f\x2c\x41\xd4\xa2\x28\x05\x3f\x37\xfa\x5c\xbf\x27\xff\x07\xe1\xa9\xc9\x0f\x43\xf1\x11\xd8\x70\x92\x2c\x21\x59\xdb\xb7\x4c\x75\xa9\x99\xfb\xda\x01\x68\x1b\x51\x42\x8a\x03\xc1\xbd\x9e\xd1\x07\x36\x14\xae\x99\xff\x43\xee\xc9\xbf\x92\x1f\x9a\xac\x42\xce\x5d\xfd\xc4\x36\x83\x0f\x81\x33\x38\xb8\xe5\x2c\xa3\xb4\xfc\xc6\x99\x14\x0a\x06\xbd\x9a\x04\x0d\x8f\x97\xc2\xc5\x83\x8c\x2a\x31\x11\xe1\xa9\xa5\x29\x13\x7a\x24\x64\xcc\x46\xac\xc6\x03\xb6\x82\x49\x18\x21\xe0\x42\xc6\x6c\xad\xff\xca\x33\xd3\xcf\x60\x06\x51\xd9\xd8\x6f\x07\xc4\x89\xfb\xa0\x60\xaf\xc9\x17\x29\xad\x7e\xe4\x1e\xd8\x60\x93\x71\x6f\xea\x7b\xbb\xb4\xf2\xd9\x01\x5c\x08\x76\x00\xf5\xfe\x9f\x84\x6a\x17\x4a\x5b\x3e\x8e\x65\xbb\xb3\x79\xd9\xcc\xdc\x5e\x56\x01\x64\x03\x60\xbd\xa5\x7c\xca\x8d\xfc\xde\xde\xbf\x07\x9c\x70\x13\xe3\x39\xe6\xaf\xb7\xb2\x9e\xe7\x4b\xe1\xf2\x75\x0e\x3d\xfd\xe5\x3e\xab\xb1\xcc\xca\x02\xbc\x5d\x00\xae\xc2\x20\x5f\x2b\xab\x2f\x0d\x1f\x9e\x62\x20\x19\x9b\x71\x0c\xdd\xee\x9d\x9e\x13\x73\x3a\xe4\x1c\xd3\xb2\x60\xd1\x32\x3d\x93\x29\xff\x7b\x63\xbc\x4f\xb3\x8c\x9e\x3b\xe6\xf2\xf0\x28\x1c\x67\x51\x5a\x07\x62\x45\x91\x42\x17\xb4\x92\x3a\x9d\x89\x8c\x33\x48\xef\x37\x6c\x76\x92\x25\x08\xdd\x15\xc9\x34\xc6\xfa\x19\xaa\x10\x8c\x65\xde\xf3\xe2\x3d\xd5\xbe\x41\x6e\xb3\xa0\x2d\x38\x58\x34\xa3\x62\xba\x5a\x00\xfd\x73\xc6\xb2\x1d\xc5\xb3\x59\xc0\xce\x67\x0a\x14\x28\xab\x01\x74\xaa\xf2\xd8\x46\x5c\x1b\xc3\x9b\xf3\xf5\xfd\x9b\x99\xa9\x0a\x42\x1f\x9d\x95\xce\x27\xc3\xa2\x4a\x8e\xd0\xce\x9d\x2c\x3a\xd7\xf6\xf8\xed\xc0\xa6\xf3\x24\xfe\xff\x6a\x4e\xc5\x0a\x97\x3f\x52\x9e\x87\xc3\x7a\x19\x73\x89\x67\xe4\x25\x29\x64\xd7\xa6\x93\x0e\x0a\xb9\x1b\x94\x1d\xa1\xe5\xb0\x55\xbf\x69\x3d\x89\xdc\x14\x0d\x33\x9d\xe9\x02\xfb\x1e\x81\x87\x6c\x6b\xc3\x70\x60\xf0\xcc\x63\x6c\x31\xb9\xc2\xe5\x51\x3d\x93\xd9\x06\x7c\x8e\xc5\xf4\x8e\xc0\xe5\xd8\x94\xc7\x13\x8c\x68\x83\x2b\xaa\xaa\x12\xd5\x8f\xcd\x3d\x6e\x3b\x94\x95\x8e\x96\x96\x6e\x13\xb0\x07\xac\xe2\x73\xe7\x36\x24\xaa\xe8\x70\xc0\xb8\x0c\x19\xf8\x5c\xc1\xf7\x90\x29\xa2\x53\x0a\xd1\xb5\x10\x13\xf9\x19\x65\x5a\xae\x50\xe7\x74\x98\x45\x46\x99\xb5\x48\x94\xc0\x41\x2d\x70\x9d\x9e\x51\x61\x53\xf5\xea\x9c\x1b\x1e\x5b\xdf\x9f\x84\xd0\xbd\x51\xd7\x19\x74\x64\x05\xf9\xda\x26\xdd\x42\x87\xa1\xdf\xa5\x88\xe3\x26\x5f\x26\x57\x90\x32\x40\x93\x46\xed\x71\x2c\x65\xc2\xa8\x68\x12\xb2\x6b\x1f\x57\x6c\x4d\x3c\x8c\x32\x36\xfa\x9f\x11\xcf\xd2\x8c\x19\x0d\x83\x26\x49\x69\x5e\x14\xea\xea\x68\x0f\xec\x89\x2a\x62\x8e\x10\xd5\xec\x6a\x39\x08\x4f\xfe\x98\x25\x9d\xc2\x57\xf0\x83\x95\x54\x04\xaf\xe4\x75\x5f\x5a\xe5\x6b\x85\xb1\x15\xb5\xd9\x6d\xeb\x06\x16\xe6\xc4\xad\x1a\x5d\xaf\x98\x57\xb6\xd9\x10\x15\x8b\xb2\x94\xeb\xe5\xc8\xaa\xd9\xed\x99\xd6\x8d\xfd\xf2\xd4\x7e\xd8\x46\x86\x3d\x21\xae\x3f\xa7\xd6\x13\x69\xd1\xcd\x82\x29\xb4\xd9\x6e\x23\x97\xd6\x66\xbd\xac\x5a\x58\x97\x76\xd3\x6e\xa8\xa6\x8b\x4d\x87\x67\x61\x96\x46\x72\xe2\x12\x5a\xda\x2f\x6c\x19\x7f\xaa\x83\x7d\x22\x45\xf8\x1a\xb2\x48\xb9\x4c\x2d\xcc\x53\x9b\x90\x8c\x39\xfd\x32\x5a\xd0\x94\x26\x09\x4b\xb8\x9a\x6f\x6e\x4d\xf9\xc3\x8f\x2b\x47\x7b\x8a\x70\x64\xca\x82\xfb\x7d\xe1\xf3\x6c\x1e\xd4\x6b\x03\xbc\x83\x20\x6b\xd9\x1a\x28\x6d\xf2\x8d\x1b\x60\x7e\xd1\x08\xcd\xd3\x20\x0f\xdd\x68\x00\x5c\x59\xfe\x6c\x95\x03\x1a\xcd\xa0\x8e\xce\x84\xf2\x54\x30\xa5\x8e\xc8\x85\xd4\xec\x84\x7c\xa2\x8b\x5b\x10\x6f\x11\xc6\x77\x8a\xf6\x28\xaa\x88\x91\x9c\x32\xc1\xf5\xc1\x50\x60\x64\x8f\x5f\x95\xe3\x48\x0a\x4c\x65\x8f\x60\x61\x7d\x13\x60\x60\x71\x39\xdd\x9a\x4c\x52\x39\x07\x2a\xe9\x96\xc5\x59\x0c\x04\x02\x18\xe6\x39\x5c\xf2\x2a\x87\xb1\x74\xa6\x5a\x2f\x62\x15\x48\x11\xd2\xce\xe1\xe3\x58\x32\x15\xa8\x36\x40\xc5\x78\x65\xf0\x09\x33\x14\x32\x14\x46\xb7\x0b\xd5\x30\xcc\x5e\x77\xc9\xec\xa6\xd3\x28\x95\x4a\xd9\xd8\x1e\x6c\x67\x75\x10\xe2\xad\x4d\x2d\xde\x85\xcf\xf6\xf9\xe2\x7b\xab\x35\x14\x83\xaa\x1b\xf5\x62\xff\x98\xf9\x34\xea\xc6\x9b\x76\xdb\x00\x40\xc7\x86\x48\xca\xa8\xb2\xb6\x27\x88\x93\x2b\x05\x08\x75\x90\xcc\xfd\x98\x31\x52\xf6\xd0\x03\x17\x04\x14\x64\x21\x84\xb0\xde\x99\xa1\xeb\x34\x65\x50\xbb\x04\x31\x6c\x06\x25\xa2\x01\xb8\xa1\x94\xd1\x78\x19\xac\x88\xb7\xae\x60\xcf\x20\x99\x28\x3e\x37\xbc\x13\xb0\xd3\x84\x3c\x94\x0b\x77\x58\x0b\x6f\x01\xea\x04\x9f\x18\x42\x0c\x6c\x33\xe6\x0b\x71\x08\x55\xb0\xcc\xf1\xaa\x71\x4c\xb9\x46\xc0\x91\x05\x10\x3a\x33\x66\x09\x77\xf8\xae\xf7\xfe\xf2\xfa\xb6\x7f\x36\x7c\x97\x87\x22\xb8\xb8\x35\xc7\x48\x7c\x52\xbc\x14\x43\xe1\xbd\x87\x3e\x69\x10\xf6\x92\xd0\x38\xce\x53\xb6\x31\x5a\x76\x84\xce\x8f\xb6\xa7\x62\xad\xdf\xb0\xda\xcc\x07\xfe\x85\xc5\xd7\x0d\xa0\x94\x3b\x89\xf4\x68\x65\x21\xaf\x25\x71\xc3\x25\x3b\xdc\xbe\x7e\x2a\x77\xe6\xbb\xf6\x14\x8c\x27\xa1\x94\xc4\x03\x19\x3c\x9a\x50\x5f\xd6\x74\x02\x34\x60\x38\x33\xa4\x87\x18\xa2\x5d\x92\x1f\xc9\x9c\x0b\x08\xc0\x5e\xb5\xb4\x77\xc5\x79\x74\x41\x1c\x1f\x5c\xdc\x15\xcb\x81\xfc\x74\x79\x57\xc4\xd1\xed\xfd\xba\x1a\x3b\xbc\xd8\xc2\x2a\x23\x5a\x30\xc5\x3c\xd2\xcd\xe6\x32\xf9\x95\xa9\x9b\xe8\x47\xa6\x7f\xc1\xf2\x43\xbb\x70\x5d\x5b\x44\x51\x50\xb1\xd9\xc8\x55\xa0\x6a\x4f\x06\xbf\xd4\xd4\xac\x2a\xc6\x27\x38\xcc\x52\xe8\xc1\x17\xad\x0a\x62\xb3\x8f\x10\x31\x16\xaa\xdc\x80\x1d\xcf\x19\x81\xcd\x8d\x29\x85\x59\xae\x21\xbc\xed\x6b\x10\xe4\xcd\xc9\x09\x7e\xdc\xca\x29\x79\x1d\xba\x22\x4d\x5b\xf9\x52\x92\xde\xd5\xa0\x66\xad\xcf\xcb\x5a\xc8\xd7\x05\x65\x91\x78\x85\x68\xd7\x28\x16\x41\x4c\xd9\xab\x00\xb0\xb0\x33\xdd\x0e\xbb\x02\xed\x46\x57\x45\x63\xd4\x93\xca\x42\x5b\x88\x3e\x85\xb8\x4b\xeb\x0f\xde\x4d\x5e\x53\xbe\x0c\x1d\x13\x9b\xc2\x01\x59\xdf\x7d\x98\xcc\x53\x75\x0c\x1d\x84\xc9\x3d\x88\xd9\xef\x2c\x5f\x3b\x4b\x78\xca\x67\xd3\x26\xe3\xe9\x17\xa4\x68\x9f\x2d\x00\x69\xfb\x0e\x8c\xcd\x39\x74\x6c\xf0\x6e\x38\xdd\x90\xda\xba\x25\x49\xe5\xe3\x73\xe6\x5f\x8b\x83\x48\x17\xd4\xc2\x3f\x83\x30\xe8\x92\xc5\xeb\x40\xb5\x8e\x86\x22\x2c\x05\x8e\xe2\x9b\x39\x23\x0e\x98\x00\x40\xfa\x0c\x3b\xb5\x91\x15\xfe\x66\x2e\xec\x40\x39\x46\x58\xcf\x8a\xd0\x02\x95\x7e\xec\xe9\x54\x33\xea\xa2\xc7\x9c\xc6\x63\x63\x12\x42\x24\x04\x68\x2f\xc8\xa9\xb6\x1d\xb3\x07\x26\x10\xe8\x80\x06\x50\x55\x41\xf4\xae\x51\x8e\xc4\x37\xda\xc7\xe7\xf1\xc4\xc2\x21\x50\xef\x93\xcf\xed\xec\x8a\x72\xdb\xf2\xea\x03\xbe\x83\x0c\x2c\x55\x02\x1f\xef\x70\xac\xe0\xcb\x36\x66\x02\xa0\x84\xd0\x9c\x0d\x9d\x36\xa5\x5b\x7d\x59\xb0\x68\x93\x1c\x9a\x2b\x57\x92\x75\x95\x45\xbb\x88\x7f\x09\xd6\x5a\xb7\x83\xb6\x5f\xdc\x45\x04\x1b\x10\xd3\x86\x18\xbf\xf3\x75\x39\x31\x7e\x16\x9d\x32\xdc\xcc\x34\x7e\xb1\xe8\x0a\x1d\x67\x61\xfb\xc9\xa7\x61\x0d\xf6\x90\xaf\x8c\x2c\x60\xdb\x39\x3d\x4f\x2e\xc8\x6d\x25\xab\xa2\x60\x71\x7e\x25\x49\x20\xeb\x47\xd9\x94\xfd\xb1\x8e\x97\xee\x84\x77\x3b\xb7\xb4\x8b\x7b\x2c\x1d\xaa\x82\xc3\x1b\xa8\x04\xe4\x7d\x4c\x84\xa8\xcf\xe0\x00\xa1\xa5\xce\xc9\x16\x04\xef\xd8\x14\x56\xb3\x78\x4a\xd3\xb9\xc7\xfe\x28\x03\xcb\x94\x96\x6b\x0d\x8f\xdb\x55\x44\xfe\x5e\xa2\xd9\xb5\x44\xd3\xc1\x0c\x84\xd4\xc9\xd2\x52\xa2\x8d\x05\x7c\xb5\x51\xdd\xc5\x09\x42\xc0\x88\xbd\x22\x2d\x6a\x24\x5c\xfd\x5c\xf8\xbf\x8a\x1c\xdc\x11\x75\x48\xaa\x75\x91\x70\x47\x01\x2a\x30\x58\x39\x93\x50\x1a\xb0\xa6\x59\x18\x2d\x7a\xd2\xb0\xdc\xc5\xe0\x02\x2b\x54\x40\x44\xea\x52\x66\xe4\x91\x2b\xa3\x0b\x0f\x05\xb8\x9a\x7c\x59\x0c\x2d\x6d\x29\x8b\x03\x78\x0b\x62\xd7\x55\x36\x9e\x73\x4d\x68\x30\xc3\x3b\xe0\x0c\xd7\x2e\x6a\x19\xcf\xb3\xf9\x00\x66\x5c\x1b\x1c\x5d\x97\xa3\xb4\xe6\xd0\x6c\x60\xfc\xc9\x1b\xd9\x36\xfe\x39\x70\x8b\x3f\x6d\x04\x74\xa0\xf1\x84\x1a\x66\xed\x99\xdb\x87\x40\x93\x7a\x6b\x83\x05\x06\x00\xf4\x06\xae\x74\xe9\x6e\xb1\x70\x00\x6b\xc2\x9f\xf3\x8d\x68\x15\xff\x9c\xbf\xbe\x8b\x00\xe8\x26\xa4\xa6\x55\x01\x71\xee\x93\x7a\x41\xeb\xc6\x17\xa6\x93\x2e\xf6\x22\x94\x94\xae\x1a\x25\xa5\xd7\x96\xd6\x19\xd4\xe0\xdc\x38\x42\xa1\x8b\x3a\x98\x67\x25\x85\x54\x14\xc4\xc8\x15\x13\x79\x58\x99\xf3\x0b\xa9\x21\x34\x28\x02\xf8\xe6\x4a\x70\xde\x50\xd4\x4b\x20\xab\x79\xe2\xb6\x51\x3e\x3b\x4d\xff\x0c\xce\x9f\x9b\x85\xb5\x68\x7d\xf6\x41\xce\xa8\x2c\xfb\x5a\xf2\xac\x74\x24\x9d\xab\xa2\x41\x01\x01\xc1\x63\x93\x28\xd1\x9a\x53\xd9\x32\x06\x67\xed\xb9\xb0\x97\xee\x0e\x55\xbb\x0a\x77\x6e\x1d\xb2\xe4\x65\x64\xcb\x8d\x9d\xcf\xdd\xa9\xf1\x25\x8f\xd3\x26\x00\x93\x80\xaa\xb0\x33\x2c\x88\x72\x48\xb9\x69\xfc\x00\xbc\x54\x76\xe8\x14\x0b\x5b\x79\x10\x9e\xd2\x96\x14\x26\x6c\x81\xbb\x9f\x60\xd2\x5d\x41\x41\x03\xb0\xbc\xd4\x02\xa3\xf1\xd0\x6e\x00\x68\xa0\xae\xf0\x6e\x91\x0f\x7b\xd1\x2e\x13\x31\x4b\x05\xa3\x7a\xf6\x7c\x61\x3a\xa7\xdb\x1a\xa7\x9f\x2d\x64\xe7\x74\x27\x88\xd0\xa5\x30\x98\x8e\x11\x30\x1d\xc2\x49\x72\x7c\xd0\x8a\xe2\x58\x87\xc4\x9f\xe7\x0d\x75\xa1\xd2\xad\x22\x79\xea\x95\xb9\xa7\x89\x69\xaa\xb1\xfa\x54\xa2\x99\xcc\x61\x0f\x51\x55\xd7\x2c\xc9\x57\x11\x3c\x94\xd2\x47\x6b\x5b\x1b\x99\x3b\x68\x84\x70\x64\x1d\x76\xf3\x9a\x3e\x22\x40\xd4\x19\xd5\x14\x2b\xce\xaf\x06\x6b\x0a\x61\x14\x20\xdd\xca\x83\x61\x2c\xd0\x1d\x6c\xb9\x97\x2f\xcf\x8a\xd1\x33\xdf\xf2\x23\x76\x44\xde\x27\x72\xac\x0e\x08\x56\x5a\x3a\x40\xc1\x1e\x9e\x23\x66\xe0\x77\xaf\x3f\x44\xea\xb7\x19\x21\xb5\xca\x90\xe2\x6d\xfb\x50\x52\xa4\x00\x87\x87\x12\xc8\x1a\x79\x74\xf3\xb2\x9f\xce\x16\x11\x3a\xfd\xed\x2f\xf6\x87\x86\x42\x68\x6b\x8a\x7b\x86\x76\x11\xb1\x2c\x9b\x17\x69\x1a\x27\x36\x09\x11\x4d\x1d\x25\x3d\x76\x95\xc9\x65\x28\x7e\x92\x8f\xec\x81\xa5\x07\x84\x6a\x32\x97\x46\x0d\x09\xfc\xec\x90\x28\x55\xc0\x86\x41\x7f\x2a\x25\x17\x74\xce\xe2\x3e\x08\xb3\x41\x82\x84\x35\xfc\x58\x97\x4d\x5d\xae\x3d\xa4\x8d\xe3\x36\x38\xff\xeb\x50\x60\xcd\x50\x8c\xe1\x00\xae\xc3\xdd\xc4\xe0\x4a\xfc\xbd\x77\x28\xfd\xfe\x88\xdc\x1a\x4a\xe7\xaa\x38\xde\x20\xf5\xae\x69\x6c\x43\x31\x4d\x65\xb6\xf0\xba\xb8\x1c\x83\x11\x00\x1d\x4b\x35\x0e\x25\x18\x8c\xf3\x26\x45\x34\x36\x32\xfd\x6a\xc2\x29\x98\x8e\x5e\x99\x45\xb4\x98\xc4\x12\x12\x90\xe1\x0e\x3e\x7e\xc4\x46\x08\xa2\x1f\x28\xc8\x63\x69\x06\xef\x7a\x32\x27\xd5\x19\x53\xa0\x5d\x7a\xeb\x5d\x21\xa4\xb9\x18\x36\x5f\x3b\xce\x55\xb6\x15\x6f\xff\x74\x36\xc2\xfa\x88\xfc\xbc\x73\x1b\x3b\xe2\x2a\x5e\x61\xc5\xcc\xa7\xb2\xba\x38\x42\x6a\x1f\x9f\x53\x5a\xbb\xab\x2c\x5d\x48\xe0\xe9\xc9\xd2\x65\x10\xd8\x34\xbf\x85\x5c\x64\x18\x1f\xc3\xc3\x70\x89\x5a\xca\xe6\x4a\x7f\xa2\x3a\x9a\x19\x05\x26\x4f\x77\xdb\x51\xdc\x50\xce\x95\x9f\xd6\x12\x53\x33\x83\xd3\xb0\xf7\x06\xd3\x64\x0b\xcb\x1c\xe2\x65\xb8\x70\x43\xf8\x2b\x49\xc8\xdc\xf4\x57\x00\x48\x0f\xec\x2b\xee\x13\xfb\x04\x0a\x35\xae\xa1\xa2\x75\xe3\x6f\x47\x5b\x45\x74\xce\x9d\x47\x24\x6d\x91\xcd\x04\xa5\xd4\xb9\x20\xf9\x8b\xc4\x4a\x48\xb5\x2c\x27\x4b\xf9\x46\x5a\xac\xb5\x0f\x03\x1c\x7a\x6e\xb9\x99\xd3\x85\x11\x47\xb4\x34\xb7\x64\x3a\x65\x07\xe4\xd1\xf0\x02\x9d\xa5\xe6\x1e\xc9\x52\xee\xce\x3e\x98\x5b\xda\x50\x07\x58\x3a\x8e\x51\x02\x46\x41\x33\xa2\x01\x30\xad\xad\x34\x1d\xe9\x8c\xfa\x00\x27\xa0\x89\x84\x8b\x7b\xd3\x19\xa2\x66\x39\x07\x5d\x6a\x78\xb1\xf4\x89\x84\x85\x3d\x5d\x4b\xd8\x5b\xec\x72\x73\x99\x85\x75\x27\x8d\x8b\x69\x90\x19\x5b\x6f\x6d\x6a\x03\x7c\x55\xfb\x65\x3b\xf0\xae\xda\x4f\x9d\xec\xb3\xc9\xb7\x2b\xf2\x08\x1b\x3f\x5f\x27\xc0\x16\x82\x39\x6d\x40\x9d\x95\x9e\xc2\x9c\x65\x6b\x09\x00\xe8\x01\x2c\xe2\x41\xad\x34\xf5\x9f\xfe\x5f\x08\x3a\x8a\x4b\xf3\x9f\x44\xa6\x43\x81\xbf\x1f\x78\x90\x32\xf3\x42\x9e\xfd\x4f\xe7\x2c\xcf\x8f\x4e\x73\x39\xd1\x67\xb7\xd8\xdc\x50\x44\x7a\xf0\x18\x4d\x66\x0c\x41\xc5\x94\x4a\x09\x0b\xac\xa4\x3e\x67\xc2\xe8\x02\x4e\x5c\xcd\x6d\x17\x48\xd2\x88\x8d\x0c\xdc\xca\x30\x4b\x9b\x56\x90\x43\xbc\x43\x9f\x28\xca\xda\xb4\xf6\xdc\x4d\x5b\x4f\xfd\xae\xbe\xc8\x66\x12\xfb\x6d\xef\xe6\xe7\xd1\x75\xff\xe6\xf2\xee\xfa\xb4\x20\xb6\x9f\x9e\xdf\xdd\xdc\xf6\xaf\x6b\x9f\x61\x8d\xc0\xc1\xe5\xc5\xe8\xcf\x77\xfd\xbb\x86\x47\xae\x81\xf3\xde\xfb\xfe\x79\xf8\xca\x9f\xef\x7a\xe7\x83\xdb\x5f\x47\x97\x1f\x46\x37\xfd\xeb\x5f\x06\xa7\xfd\xd1\xcd\x55\xff\x74\xf0\x61\x70\x8a\x35\x93\x83\x77\xaf\xce\xef\x3e\x0e\x2e\x46\x2e\x7c\x31\x7c\xf4\xf9\xf2\xfa\xe7\x0f\xe7\x97\x9f\x47\x41\x97\x97\x17\x1f\x06\xab\x2b\xb5\xd6\xcf\xb7\x11\xd4\x3d\xb8\xaa\x02\x05\x33\x10\x84\xc6\x4b\x4b\xbc\xfc\xef\x60\xe6\xbc\x42\x8a\x3b\x3c\x70\xff\xc2\x3a\x09\x87\x86\xc9\x39\x0b\x7a\xce\x1f\x86\xc2\xbb\x38\xfc\xb5\xa9\xe9\x54\xb9\xe2\xa6\x85\xd1\x9e\x90\x1e\x9c\x06\x50\x09\x0a\x9d\x42\xa6\x90\x1f\xa9\x73\x8a\x01\xa5\x41\xd9\x63\x5b\xca\xb7\xbc\xa5\xc5\x06\xed\x9c\x60\x08\xd6\xc2\x1f\xaf\xa2\x77\x57\x1f\xb8\x48\x0b\x27\xc4\xf1\x60\xd3\xac\x19\x17\x40\x0b\x2c\x05\x9d\x57\x4a\xb8\x62\x76\xbd\xcd\xbb\x37\xe7\xa6\xdc\x62\x81\x84\x8a\x2d\xcf\x18\xf9\xf9\x4f\xf9\xa0\xc0\xda\x69\xad\x87\x59\x05\x7c\xd8\x3e\x48\x33\x5c\xd5\x75\x04\x58\xe8\xc9\x1d\x64\x6b\x86\x82\x93\x69\xcb\x30\x80\x69\x3a\x13\x41\x6e\x6b\xc1\x4e\x6d\xeb\x0f\x91\x43\x52\xa2\xe2\x13\x72\xc3\x12\x16\xe9\xbc\x86\x2c\xec\xe2\x22\xc9\xa6\xbc\x52\x85\x65\xcc\x66\xf4\x81\x4b\x87\x4e\x86\x20\x6e\xb0\x8e\x56\x78\x22\x87\xa4\xf1\x28\x9c\x90\x5e\x1c\xab\x22\x0b\x2b\x50\x8e\x63\x8a\x87\xc5\x61\x87\xe9\xa8\x22\xf6\x8c\xb1\xd6\x70\x50\x73\xeb\x6d\x85\x07\xa1\xee\x47\x8e\xc4\x46\x1b\x5d\xc3\xb7\x54\xdd\xd7\x14\x5d\xaa\xbd\xd9\x2c\xfd\x6c\xd9\x63\x73\xa5\xa7\xda\x4e\xfd\x5a\x8f\xe0\x00\x6c\xd6\x67\x23\x18\xc7\x9a\x2e\xdd\x8c\x93\x12\x62\x6a\xeb\xfe\x0a\x88\xab\x4f\x6f\xb1\xad\x97\x83\xe0\xa8\x8c\x3c\x5d\x76\x98\xc7\x15\x7c\x7a\xe9\xbf\x5c\x29\x2c\x8d\x82\x75\xeb\x6a\xc7\xad\x24\xe2\x59\x5b\x6e\x7b\x11\x09\xb0\xa8\x78\x04\xe6\x74\xca\x85\x45\x28\x64\xde\xde\xeb\x4a\x38\x60\x2d\x7b\x6b\x9f\xa6\x63\xf9\x50\x50\xb9\xe6\x58\x6f\xba\xf6\xec\x06\x86\xa2\x6d\x0e\xad\x3f\x3d\xed\xcb\xfc\x9b\xbd\x76\xe7\x65\x6d\x69\xff\xeb\x50\x5f\x74\x13\x35\x62\x5c\xec\xe2\xd8\xc8\x25\x66\xb3\x98\xb3\x7f\x90\xbb\xaa\x65\x1a\x78\xf0\x1b\x6c\x38\x6d\x8d\x4d\xe5\x05\xab\x05\x9e\x0c\x4d\xe4\xdd\x3d\xdc\x41\xeb\xad\xc0\x90\x82\x78\x86\x4a\xed\xd9\xe2\xfa\x74\xa0\xba\x82\x3f\x21\xac\x01\x81\xe5\x8a\xb0\x40\x54\x30\xd2\x03\x42\x31\x89\x28\x97\x40\x54\x16\xcd\x10\xbe\xd0\xb0\xf3\x83\xa1\x78\x0c\x36\xa4\x10\x66\xd7\x0b\x5b\x02\xb8\x87\x2f\x86\x41\xf1\x87\x42\xf0\x22\x88\x59\x1c\x22\xe9\x02\x42\x40\x83\x7b\x8e\xa8\xb9\x86\xc0\x83\xfd\xda\x82\xd4\x37\x80\x4f\xae\x29\x08\x55\x07\xa2\xec\xe7\x16\x60\x17\xef\x0a\x38\x79\xc5\x10\x02\xf8\xe4\xba\x11\xec\x00\x3d\xf9\x65\x20\x93\x31\x77\x6e\x3e\xb6\x99\xac\x66\xba\x6e\xb5\xff\xd5\xcd\xe8\x5f\xd1\x1a\x9f\x35\xa4\x3e\x07\xad\x79\x18\x20\x72\x08\xe5\x0b\x6d\x9e\xa5\x75\x74\x2a\x72\x48\x12\x7e\xcf\xc8\x37\x10\xc7\xd4\xbb\x1a\x7c\x73\x40\xbe\x09\x73\x39\xbe\xd9\xe8\x00\xda\x71\x5b\x04\x65\xd0\x40\x0a\x01\xbd\xc5\x63\x07\x7b\x55\x3a\x89\x76\xcf\xec\x41\x24\x4d\xe7\xd0\x7c\x59\xf8\x86\x0b\xcd\x52\xac\x38\x0f\x71\x9f\x3e\x9c\xd0\x3a\x46\x50\x2e\xe4\xaa\x66\xed\xe2\xa1\x18\x2f\xcb\xae\x8f\x03\xef\xfb\x68\x7d\x4a\xb7\x46\xb9\x35\xed\x55\x93\xff\x76\x1c\xe6\xb6\xfa\x3e\x58\x93\x4e\xd8\xf3\xc5\xca\x72\x2e\xa6\x1a\xce\xcb\x3e\x3e\xb4\x6e\x56\x05\x2b\x92\x5b\xcc\xda\x4d\x59\x27\xff\xbc\x35\x72\x6b\x11\x54\xd9\xab\x5b\x11\x1b\x4f\xdb\x20\xf8\xee\xa9\xec\x69\xa9\x6c\x17\xf1\xc4\xc5\xc1\x75\xbf\x40\x4f\x51\x8e\x0b\x9a\x71\x66\x48\xa3\x4c\x78\x06\x5f\x80\x42\x5e\x5f\x43\xa0\xa3\x27\x34\x58\x93\xf5\xae\xd0\x1b\x74\xa7\xa3\x33\xb2\x3a\xd6\xf2\x50\x7b\xda\xe2\x32\x4a\x8e\xb9\x43\x9a\xcf\xd9\x01\x81\x52\x9b\x79\x08\x80\x3d\xaf\x40\x6e\x70\xc7\xd9\x7a\x5a\xd8\x49\x1a\xcd\xf8\x43\xb7\x04\xa9\xae\xd2\x78\x13\x8d\x6c\x11\x7f\x71\xd1\xfb\xd4\x3f\x1b\xf5\x2f\x6e\x07\xb7\xbf\x8e\xaa\xa1\x18\xc5\xc7\xd7\xa7\x3f\x0d\x7e\xe9\x9f\x85\x2f\xdc\xfc\x7a\x73\xdb\xff\x34\xfa\xd8\xbf\xe8\x5f\xf7\x6e\xfb\x67\x2b\x4d\xa9\xab\x3a\xab\x03\xdc\xb7\xa1\xdb\x35\xea\x9b\x07\x91\x43\x3b\x24\x00\x14\x18\x71\xff\x81\x2b\x6e\x93\x74\xad\x88\x7a\x37\x70\xa6\xd1\x9a\xde\x4f\x82\xfc\x99\x03\x44\x56\xcb\x3b\xe1\xd6\x9d\x14\x8a\xaf\x36\xea\x42\xc4\x18\xa8\x49\x82\xa2\xa9\x47\x35\x9d\xd8\x05\x3b\x21\x3d\x4b\x1d\x75\xed\x0b\x49\x8c\xf0\xcc\x52\x1c\x3d\x86\x64\xf8\xa1\x93\x43\x52\x5e\xe3\x13\x82\xf0\xb7\x41\x05\x00\xdf\x20\x88\x7c\x34\x65\xe2\x1b\x4d\xd8\x97\x45\xc2\x23\xae\x83\xc4\x1b\x99\x5a\xa7\x03\x3a\xd5\x20\xfa\x6b\x0d\x71\xed\x2c\x46\x63\xe7\x3a\x7f\xe8\x5f\xae\x6a\xfb\xfe\x44\x69\x69\x93\x17\xd7\xa2\x8c\xee\x40\xb1\x6f\x70\xa5\x56\x00\x51\x37\x18\xdd\x53\x98\x07\xaa\x11\xf0\x36\x79\xc6\x06\x7a\x50\x87\xdb\xfe\x88\x37\xe2\x66\x15\x6f\x57\x47\x8f\x14\xce\xf5\xea\xf0\x91\x76\x94\xfa\xc2\x41\x20\x05\xac\xf1\x9d\x55\x16\x1d\x75\x74\xe3\x57\x00\x3d\xc5\x3d\xc2\x1c\x92\x94\xcd\xa5\x36\x0a\x18\xfa\xc9\x0f\x8c\x50\xc5\x69\x02\x75\xef\xcd\x81\x3b\x0a\xe2\x0a\x20\xc1\x26\x0e\x03\xaa\x6d\x76\xf6\xd3\x57\x18\xcd\xab\x7e\x55\x6a\x8b\x3a\xe5\xfd\xa2\xb9\xc8\x43\xb7\x42\x8e\x85\x2d\x5b\x5f\xc4\x11\x8a\x46\x53\xd5\x50\xc1\x11\xf0\x4e\xe3\xd7\x52\xc7\xb1\x9a\xde\x5d\xda\xd0\x97\xad\xe1\x58\x1a\xcc\xeb\x29\xe4\xb8\x76\xdd\x5e\x6f\xfe\x7e\xcd\x40\x5b\x14\x70\xf4\x1e\x0c\xa8\xb1\xd0\xed\xb2\x71\x01\x58\x05\x37\x86\x39\x54\xfe\xd6\xa9\xd7\x1d\xa9\xba\xdf\xba\xbb\x5b\xaa\xee\x1b\xba\x5a\x77\x2f\x9d\x16\xdc\x24\xa5\x65\xb3\xa1\x61\x16\x20\x2b\xac\xb6\xdd\xcc\xed\xfb\x0f\x4c\xe8\x9d\x88\x4a\xd0\x44\x4d\x7e\x5e\x3b\x83\x27\x42\x92\x0f\xce\x72\x8e\xe4\x0b\x01\x05\x41\x09\x3a\xa5\x80\xa7\xc1\xf4\x23\x63\xc2\x39\xa9\x9b\xfc\x81\x66\x6a\xed\xb6\x07\x5e\xad\xae\xcb\x9a\xd8\x55\xbb\xda\x79\x21\x86\x3c\xee\x4c\x46\x10\x15\xdf\x49\xb7\x2a\xc8\x1c\xa8\x50\x85\x35\x3a\x51\x4e\x2e\xef\x39\xf6\x39\xa3\xaa\xdc\xe5\xda\x2d\xdf\x20\x3d\xbd\xd0\xcc\x47\x06\xd9\x1b\x3b\x29\x8e\xd6\x21\x4b\x0f\x06\x72\x97\x26\x6b\x2b\x90\xdf\x60\x11\x88\x2c\x4d\x72\x0b\x0b\x6d\x21\x2e\xe0\x60\x8e\x86\xe2\x8c\x2d\x52\x06\x65\x89\x4e\xc8\x55\xc2\xcc\x75\x99\x99\x2b\x33\x4b\x92\x91\xaf\xd0\xac\x34\xa3\x4d\xfc\xa9\x7b\x81\xf5\xa7\x9c\x97\x13\x83\x56\x4f\xcc\x41\xd9\xac\x9e\x59\xb0\x06\xbb\xcf\xad\x0c\xd6\x17\xac\x59\x60\xd3\x28\x0a\xb4\xa0\x91\x2c\x31\xb0\x0d\xb4\x5a\x1a\x4a\xde\x8a\xff\xdd\x5c\xd5\x29\x53\x33\x99\xac\x9c\x42\x67\x80\xa0\x2e\x73\x70\x4b\xf9\x84\x93\xb0\x31\x47\xa3\xa6\xc0\xc7\x16\x97\xd1\x19\x36\x51\x7b\x05\xae\x9a\xa2\x87\xab\xf5\x8e\x68\x0b\xac\x66\x83\x78\xec\xd0\xc0\xbd\x92\x6b\xfd\x21\xc8\x49\x6e\x45\xcd\x25\xd0\x25\xba\x81\xfc\xe7\x41\x79\x29\x1f\xb3\xcb\xb5\x22\x4a\xa7\x59\x04\x10\x80\x33\x96\x76\x82\x1d\xf4\x91\xdd\x79\x13\x66\xc0\xf5\xac\xcd\x22\xd5\x82\x9c\x62\x23\x14\x54\x01\x9e\xc5\x6e\x31\x4e\xb9\x56\x86\x6e\x66\xa0\xdb\x5a\xe3\x8b\x95\xa5\x9e\xcc\x28\x5f\xa0\x96\xc2\x04\xf6\x80\x1f\xdd\x01\x3f\x2c\x6c\xb1\xa7\x3d\x80\xe7\xd1\x29\xe4\xe3\xe5\x76\xf7\xf2\x25\x6f\x6d\x65\xeb\xd2\x08\x0a\xbb\xd3\x2a\x67\xa0\xf0\x85\x39\xf7\x67\x5b\x1a\xee\xcd\x64\x96\x23\xc8\xc2\xda\xc6\x79\x5f\x98\x3f\x1a\x1d\xa1\x4d\x16\x13\x4c\x2a\x44\x38\x42\xbb\x76\xde\xe0\x8a\x35\xd7\x86\xe2\xda\x8c\x02\xbf\xc8\x1d\xb8\x79\x3d\x23\x96\xd7\x22\x98\x10\x6a\xbf\x82\x45\x6f\x8a\x9f\x51\xa3\xa0\x9c\x5b\xd3\xc4\x76\x50\x48\xe3\x3d\xbe\x43\x26\x09\x9d\xba\x54\x7c\x28\x15\x38\xc9\xf5\x24\x23\xec\x61\xed\x3d\x4c\x0b\xc5\xcb\x83\x6b\x9b\xea\xe9\x45\xe5\x8c\x39\x50\x44\xf8\xcc\xf3\xaf\x3a\xe6\xea\x34\x31\xe1\x40\xeb\xd4\x50\x04\x7d\xac\xc0\xd0\x42\x6d\x68\x43\xb1\x1f\xf6\x99\xc7\xde\x5e\x0e\x7f\x8a\xfa\xda\x6c\x76\x7a\x73\xba\x00\xab\x10\x9e\x41\x39\xf1\xf7\xcf\xad\x0d\xe8\x3d\x82\x11\xff\xf7\x7f\xfd\xcf\x11\x5f\x69\xf1\x0b\x0e\x65\xee\xf9\xca\xdd\x1b\x41\x74\x59\x50\x71\x8e\xc2\x45\xb1\xb2\x6c\x7b\x01\x15\x66\x9b\x28\x9c\x19\x55\x4f\xe7\x6a\xad\x85\xd1\x47\x3b\x52\xc8\xd5\xd7\x39\x5d\x71\x90\x98\xd3\x62\x48\x28\x53\x2c\x45\x12\xf4\xf0\x01\x35\x65\x6d\xda\x54\x4e\x67\x73\xca\x3b\xc5\x6e\x9a\xf7\xeb\x11\x79\x0a\x66\x36\x3a\x65\xe9\x28\xce\x0a\xc1\x80\xeb\xda\xbe\x32\x1f\x9d\x65\x7a\xb9\xbe\x7d\x95\xd0\xe8\xbe\x0b\x0a\x92\x79\xbf\xa1\xd9\xf5\xa2\x4c\xe0\xb2\x2d\x8a\x33\x0d\x18\x43\xac\x84\x31\x64\x63\x88\x0a\x7a\x26\xb0\x46\x01\x75\x89\x02\x71\xd4\xf2\x4e\x44\x42\x84\x91\x43\x5d\x3e\xc7\x6c\x3c\xb6\x6c\x7c\x34\x14\x1f\x10\x9c\x19\x44\x65\x1c\x40\x04\x95\x81\xd8\x97\x85\x54\xac\x10\x85\x5f\x83\x17\x6b\xf3\x64\xec\x30\xea\xa5\xa8\x52\x5d\xa8\xad\x84\xa8\x17\x47\x8b\xaa\x6e\x78\x75\xca\xf5\x14\xb8\xd5\x3d\x1d\xf1\x05\x37\xb4\x33\xaa\x3d\x69\x4f\x57\x9f\x30\xf7\xd1\x03\x6e\x80\x4e\x96\x07\xc4\x4f\xaf\x44\x10\x09\x7b\x60\x29\x9d\x1a\x19\x8b\xf2\x24\x44\x05\x2e\x1a\x47\x1a\xd8\xc9\xba\x03\x94\xa7\xc0\x00\x5b\x20\x71\x79\x04\xc5\x44\x81\x3a\x5a\x2c\x86\x5a\x6f\x9d\x15\x50\xe7\x68\xec\x20\x37\xf5\x42\x74\xe4\x25\xd3\x84\x7d\xd1\x4c\xa0\x8b\xf6\xd6\xe5\x53\x54\xc3\x49\x49\x7d\xe8\x79\xf3\xa5\xfe\xe4\x55\x2b\x7b\x2e\x4f\xce\x25\x8c\xc4\xca\xde\x30\xb6\xca\xd8\x8c\x8a\xd8\x66\x05\xe5\x95\x99\x71\x76\x68\xb9\xf0\xb1\x9f\x36\xb7\x25\x80\x95\xc4\x36\x11\xff\x12\x2e\x32\x27\xc9\x1b\x59\x12\xdc\x65\x32\x35\x22\x55\x26\x34\x4f\x0c\x71\xd8\x31\x18\x3d\x2f\x13\x1e\xd8\x05\x22\x15\x9b\xb0\x43\xb8\x52\x5c\x4c\x47\x76\x25\x5d\x82\x4b\xbb\x8b\xa1\x48\x53\x9f\xb0\x29\xfc\xf1\xbd\x6b\x68\xb5\x65\x12\xc9\xda\x4c\xdf\xa7\xd6\x80\x28\x28\xa4\x9b\x8c\x05\xe4\x70\x19\x39\x23\x1e\x17\x4a\xdf\xc1\x44\xbb\xa8\xd5\x20\x9b\x55\xb3\x55\xf3\x2b\x44\x11\x05\x09\x41\x18\xd0\x0f\x91\x97\xba\x21\x1f\x48\x35\xe6\x01\x0d\x84\x17\xd1\x6c\x91\x00\x9f\xcf\x58\x4a\x29\xa2\xae\x3b\x1b\x5e\x4a\x93\x64\x4c\xa3\x7b\x2f\x1e\x7b\x25\x51\xa6\x0e\x64\xd5\x88\x8d\x50\x45\x02\x89\xcb\x0c\x34\x02\xe9\x06\xd3\x75\x91\x98\x10\xaf\xc0\x0e\x3b\xef\xdc\x16\x0c\x14\x58\xc2\x0e\xd4\x49\x1c\x3d\xc6\xaa\xc6\x6c\x91\xc8\xe5\xbc\xe1\x3e\x2b\xa7\x6b\x6c\xe3\x79\x6d\xca\x16\xd9\xe9\x55\x56\x62\x7a\x9d\x2f\xb3\x4a\x7c\xf9\x0e\xd0\x33\x3a\x70\xc9\x8f\x89\x1c\x83\x5d\xca\xea\x85\x2e\x66\x3a\x08\xdd\x2d\x9f\xe7\xae\x91\xdc\xe5\x13\xc9\xd5\x22\xa1\xcb\x55\x3d\x60\x0c\xf1\xd3\xee\x1b\xe6\x69\xae\x37\xdb\xb4\x8f\xbe\xab\xfd\xfc\x49\x0a\x33\x3a\x49\xc0\x56\x68\x04\xfe\x65\xcd\x1f\xcc\xd9\x3f\x30\x7b\xe3\x68\x91\x4a\x23\x29\xc8\xa1\xd0\x74\xea\x76\xd7\x4a\x97\xf2\x51\xb0\x54\xcd\xf8\xa2\x50\x5e\x66\xeb\x78\x3f\x4b\xd2\xf6\x3f\x18\xdd\xd6\x81\x79\xca\xc5\x21\x26\x62\x1b\x02\x51\x0b\x1a\xe5\xf6\xaa\x28\xa1\x4a\xf1\xc9\x32\xc8\x9f\xf6\xa1\x53\x10\x8f\xef\x4b\x2b\x14\x4b\x94\xd4\xba\xfe\x0a\xf9\xba\xbb\x49\x66\xdc\x3e\x59\xe4\xae\x78\x0a\x79\x1c\xc2\xd5\x40\x61\xd1\x4a\xca\x7c\xcb\xda\xa7\xdb\xe6\x90\xd8\x91\xd9\x4c\x8a\xdd\x0d\xcc\xe5\x41\x6f\x96\x15\xb9\x12\x82\xa1\xd9\xcc\x91\x0b\xbb\x76\xd8\x56\xd1\xf2\x49\xd9\xe1\x34\x60\x8e\xb1\xfd\xc2\x67\x4d\x14\x72\x6c\x69\x01\x79\x00\xd7\xc8\x28\x7f\xce\xe8\x68\xce\x97\x4f\xfa\x86\x44\xdc\xbc\x83\x03\xa2\xb6\x82\x43\x69\x4f\xda\x67\x2c\x61\x3b\x89\x05\xdc\x80\xce\xcb\xde\xed\x80\xc2\x57\x12\x51\x0e\x2f\xbb\xde\x4c\xd2\x9d\xc6\xcb\xa3\xca\xa9\x7b\x67\x83\xda\x20\x6e\xb2\x01\xef\xa1\x7e\xe4\x9f\x71\xa0\x36\x74\xb2\x8e\xc0\x0c\xe7\x8c\x61\xeb\xdb\xaa\x86\x75\xc0\x51\xd8\x82\x3d\x31\x79\x37\x6e\x1f\x1d\x32\x87\x17\x76\x9d\xf4\xf5\x7a\x8f\xc1\x0b\x07\x1a\x36\x8c\xee\x23\x6b\x13\x8f\xb0\xf6\x88\x6e\xc4\x4d\x9b\xae\xc4\x76\xa4\x62\x7d\x89\x5a\x92\x29\xd3\x58\x65\xd3\x97\x12\x7d\x83\x64\xb2\xb3\xc8\xe9\x9d\x6e\x45\x3d\x13\xe8\x76\xaa\x6f\x98\x56\xee\xc6\xab\x60\x75\xd9\x9d\x3a\x74\x49\xa0\x79\x4a\xe5\xeb\xdd\xa2\xd7\x71\x92\xaf\xad\x55\xe5\xe9\x2e\xd8\xf5\xf4\xb2\x13\xfa\x00\x0c\x11\x0a\x61\xe3\x99\x85\x1d\x85\xc3\x1b\xf8\x0c\x2b\xaa\xfc\x1a\x6f\xac\x1d\x5e\x2b\x3f\x6c\x65\x39\x9f\x62\x7b\x6d\x34\x65\xeb\xcd\x7d\x4a\x52\xeb\x3a\x96\x5d\xe8\x28\x4f\x6c\x14\xb1\xd4\xb8\x56\xbb\xde\x07\x45\x10\xd2\xe4\x7f\xcd\x1d\x8b\x76\xcb\x76\x79\xc8\xea\x50\xa7\xb7\xcf\x72\x48\x24\x7a\x07\x46\x8b\x94\x4d\xf8\x97\x8d\x44\xf1\x2b\xf8\xd4\xaa\x97\x66\x99\x4b\x38\xd6\x60\xed\x00\xdc\xeb\x5c\xdb\x77\x2b\xfd\x98\x72\xad\x99\x18\x0a\x00\xed\x55\x7f\x38\x39\x3e\x1e\x67\xd1\x3d\xd3\xc7\xf7\x6c\x49\x64\x5a\xf8\x69\x53\x8c\x8c\xdd\x63\x6e\xe3\xbe\xce\xb4\x5e\xa8\x93\xe3\xe3\x29\xd7\xb3\x6c\x7c\x14\xc9\x39\xc6\x1b\xc9\x74\x8a\xff\x38\xe6\x4a\x65\x4c\x1d\xff\xf8\xc3\x0f\xf9\x16\x8f\x69\x74\x3f\xc5\xac\xc3\xaa\x15\xa7\xb0\xe5\x37\xd5\xba\x34\xdd\x71\x4c\x53\x29\x46\xec\x8b\x21\xd2\xba\xca\xc7\x6d\x01\x1d\x14\xe9\x7d\xbe\x21\x6a\x29\x34\xfd\x72\x42\x3e\x61\x99\x6a\xf2\x93\xcc\x52\x45\xce\xe8\xf2\x50\x4e\x0e\xe7\x52\xe8\x19\xf9\x04\xff\x6b\x7f\x7a\x64\xec\x9e\xfc\xca\x68\x6a\xf7\x17\x05\x16\x0f\x85\x0c\x5e\x88\x34\x13\xca\xd6\xbf\xfe\xe1\xdf\x5d\x01\xec\x13\xf2\xfd\xf1\x0f\xff\x4e\x7e\x0f\xff\xff\xff\x90\xdf\x37\x68\x6a\xdd\x32\x5a\xf3\xe2\xe4\xb5\xad\xc1\x4a\x6d\x50\x0a\xe8\x34\x95\xf9\x4e\xd5\xb6\x7c\xcf\xa3\x7b\x39\x99\x8c\x34\x9f\x33\x0c\x0e\x1d\xd1\xb4\x82\x54\xb4\x21\x3c\x08\xb7\x85\x4b\xb0\xf6\x63\x0e\x1c\x6a\x3b\xc5\xd4\x0f\x77\xdc\x54\x96\x17\x6e\x00\x9f\x4a\xa1\x18\x06\x57\xf0\x15\x8b\xcd\xa9\xe8\xe2\x3f\x71\xd6\x99\x6a\x79\xb5\x3c\x89\x28\x2c\xc6\xe3\xfd\xa0\xa1\x53\x5f\xae\x2b\x0c\x5e\x8d\x36\xf8\x6a\x5c\xc8\x30\xb5\x97\x72\x1f\xab\x4a\xe7\xeb\x3d\xc7\x37\x32\xdd\x4a\x5e\xbe\x67\x95\x10\x96\x96\x20\xb9\xae\x04\x44\x58\x16\x0a\xb2\x0e\x64\xea\x61\x7a\x50\xaf\xb5\x50\xfa\xeb\xad\x50\x3c\x45\x5f\x5b\xbb\x43\x6f\xa6\x7e\xe6\x3f\x59\x37\x4c\x70\xbc\xb9\xb7\x73\x90\x70\x18\xad\xb9\xe2\x0c\x4b\xac\x19\x71\x4d\x2e\xff\xba\x0d\xbd\xc1\x3d\x63\x0a\x1b\x07\x2f\x30\x44\xdf\x09\x27\x99\xd8\xa4\x94\xda\xfd\x84\x0c\xe7\x5d\x80\x1f\x54\x80\xec\xb6\xe0\x73\x68\x2a\xcb\x59\x84\x03\x93\x04\x91\x2d\x28\x3a\x43\x0d\xf7\xd8\x10\x2f\x02\xa1\x64\x0f\x48\x4a\xc1\x91\xaa\x67\x54\xa0\x12\x35\xa1\x11\x17\xd3\x83\x00\x2a\x00\x72\x65\x42\x9e\x55\xb7\x92\xb7\x54\xdd\xef\xd6\x39\xb8\x35\xb4\x3e\x8f\x73\x78\x67\xa4\x48\xeb\x3b\xe4\x95\x3c\x69\x4d\xd5\xfd\xce\x4a\x8f\x9b\xa5\x68\x53\x74\xdc\xc5\xde\xb3\x50\x68\x03\xdc\x3c\xa3\x5c\x05\xd8\x4a\x2e\x7c\x12\xcb\x7a\xf2\x84\xc5\x65\x84\x89\xf2\xf8\xd7\x11\x02\xaa\xc5\x81\x17\x0a\x00\x08\xe6\x46\xf1\x8b\xd1\x3c\x2b\x96\x78\x94\xcc\xcd\x45\xd5\xbd\xf2\xf5\x1d\x88\x9a\xd3\x24\x39\x20\x29\xcb\x94\xb9\x7a\x0f\x88\x62\xc9\xe4\xd0\x61\x01\xc6\x24\x91\x53\x1e\xd1\x84\x8c\x13\x19\xdd\xab\xa1\x30\x57\x89\x98\xe2\x0d\xb8\x48\x65\xc4\x94\x0a\xee\xde\x3c\x2e\xdf\x06\xb1\x42\x71\x07\xcd\xd2\x39\x17\x5c\x69\x1e\x95\xea\x35\x1f\x0d\x05\x16\x2b\x31\xda\x50\x24\xb1\x24\x05\x0c\xd7\xc8\x02\x0c\xd1\x09\x32\x61\x91\x56\x81\xa1\xdb\xa4\x63\x17\x55\xd1\x44\xbd\x3b\xc8\xa1\x76\xdb\x33\xd2\xc5\xd3\xb0\x86\x9e\x4f\xed\x67\x70\x86\x56\x51\xcc\x75\x91\x9c\x3d\x35\x78\x32\xf7\xd0\x5c\x8e\x28\xf2\x98\x91\xc2\xdd\xe6\x43\x29\x5e\x59\xf2\x2b\x0c\xb9\x21\xe5\x75\x1d\x4d\x9f\x62\x01\x68\x0b\xee\x5b\xf6\x8b\xb9\xc2\xce\x16\xc0\xdd\x5c\x12\x0f\x86\x48\xdc\xf2\x98\xb5\x37\x57\xc9\x81\xaf\xca\x4c\x95\x0d\x19\x39\xf4\xc8\x71\x86\x1f\x22\xba\x1f\x74\x52\x2a\xf1\x5b\xa5\xa8\xd7\x54\x89\xd9\x5f\xd2\x5d\xd9\xe2\x5a\x41\xa2\x63\x55\x66\xb7\xd2\x8d\x28\x1b\x85\xb1\x15\xc9\x16\x12\x4d\x9b\x07\xd5\xd2\x5e\x91\xd6\x65\x74\x20\xc5\xc1\xd3\x07\x9e\xd7\xd8\xb1\xbd\xad\xb4\x67\x98\x19\xb5\x32\x66\x84\x44\xb1\xb1\x81\xae\x34\x95\x4a\x66\x14\xc7\xf2\x53\xb6\x7a\xbd\x91\x6a\xb3\x28\x62\x2c\xae\x0d\x2e\x30\x23\x7a\x75\x28\x12\x57\x54\xcf\x30\xc9\x66\x2e\x35\x96\x78\x40\x14\x09\x67\x68\xc1\x22\x0e\xe3\x44\x8e\xe1\x42\x02\x80\x09\x97\x6e\x11\x84\x4b\xe3\xbc\x59\x4c\xbe\x0d\xee\x17\x9f\x00\xd6\x54\x42\x6c\x87\xe0\x12\x65\xeb\x4c\x23\xc4\x44\x11\x7f\xfc\x88\x5c\x95\x32\x0e\x83\x59\x4d\xa8\x61\xf9\x4d\x41\xa0\xdd\x00\x29\x0a\xbb\xbf\x03\x40\x8a\xd2\x34\x1a\x22\x8d\xe4\xf4\x49\x33\x24\xcc\xa4\xce\x65\xfb\xb0\x55\xcc\x09\x47\xc1\xa5\xb0\x39\x8e\xcc\x96\x75\x5b\xf4\xba\xc0\x36\x4a\xf8\xf5\x2f\x0b\xb6\x51\x1a\xcc\x6b\x06\xdb\x28\x0d\xf5\xf5\x82\x6d\xd4\x0c\xb4\x05\xd8\x06\xfa\x4e\x47\x86\xa8\xdb\x31\x05\x88\xc2\x1b\x67\x93\x1b\xb8\x4d\x56\x8e\xd1\x16\x49\x45\xe6\xec\x04\x24\x8b\xa8\x04\xa3\xb5\x11\xdb\x4d\xd1\x26\x54\x6d\x45\x7b\xde\xb9\xc1\x15\xea\xa6\x8b\x84\x8a\x22\x53\x85\x22\x74\x29\x8b\x0c\xf9\x21\xa3\xca\xab\x73\x1f\x58\x9b\x89\x19\x05\x9a\x09\x23\xba\xb0\x19\x30\x4d\x40\xa7\xaf\x27\xd6\xbf\x1b\x8e\x09\xc0\x4d\x14\x58\x7d\xab\x64\xf1\x4f\x25\xac\xc0\x99\x7c\xb4\xf2\x10\x90\x9f\xad\x2b\xdc\x51\x44\x0f\x91\x50\x4a\x34\xdd\x12\x09\xa5\x30\x91\x3d\x12\x4a\xfd\x06\xbf\x5a\x24\x94\xd2\x9e\xb7\x43\x42\xa9\xdb\xf2\x0d\x90\x50\x0a\xcd\x7c\x35\x48\x28\xa5\x15\xfd\x6a\x90\x50\x4a\xf3\xda\x23\xa1\x7c\x25\x48\x28\xeb\xf9\x48\x2d\xd6\x47\xfd\xe1\xed\x86\xf5\x51\x2b\xc2\x37\xb3\x88\x6d\xd3\x54\x41\x60\x78\x66\xac\x8f\xc2\x04\xf6\x61\x2d\xdd\xc3\x5a\x6a\x89\xcf\xf6\x0d\x35\x9b\x6d\xac\x4b\xf9\x22\x6b\x89\xf6\x51\xd8\x9f\xd6\x36\xa3\x5d\x50\xe2\xd3\x06\x52\x81\xe9\xba\xad\xc6\xdd\x2b\xac\xa2\xb2\x18\x41\x46\x32\x72\x39\xef\x28\x9c\x87\x6e\xbb\x3d\xe5\x6e\x10\x90\x55\x5a\x5e\x6f\xec\x46\x5a\xdc\xa5\x55\xb3\xa6\xc4\xd8\x16\xf4\xea\x72\x56\x3a\x5a\x95\xdd\x20\xc0\xba\x5c\x6f\x7b\x82\xaa\x83\xbb\x69\x76\xdd\x45\xe6\x33\x7a\x0b\x45\x10\x7d\x3a\x4e\x5e\x04\x11\x65\xe3\x52\x16\x92\x51\xff\xed\x97\x53\xae\x74\xda\x18\x92\x50\x19\xe1\x36\xfe\xab\x45\xb6\x49\xee\xe0\x74\xb3\xcf\xe6\x6c\x2e\xd3\x75\xf1\x10\xb5\x5f\x2a\x2d\x53\x3a\x5d\xa7\x88\x77\xdf\x2a\x9f\x66\x65\xa3\xfd\x6b\x8a\x58\x06\x8e\x25\xf3\x6e\x6c\x0b\x53\xb6\xdd\xa9\x6d\x77\xc8\x55\xc0\xec\x66\xe3\x75\x30\x3b\xab\x8d\x4e\xf6\xa5\x82\xfb\x10\x48\xb3\xd6\x41\xed\xe3\x03\x36\x74\x41\x37\x00\xa1\x54\x3b\x04\x0f\x95\x62\xe9\x61\x28\x5e\x16\xbc\x42\xd5\x11\x14\xd6\xdd\xa9\x25\x5b\x2c\x7b\x96\x36\x46\x4a\xb5\xb1\xfa\x60\x55\x69\xa3\xf3\x84\x00\xe3\x65\xaa\x1e\x2f\x6b\x52\x2f\xda\x99\x15\xb9\xd0\x7f\xfc\xb7\x2e\xae\x63\x90\xcf\xed\xba\x4d\x78\xc2\x08\x8d\x22\xa6\xd0\x10\x65\x23\xe9\xb0\x60\x5f\x96\x26\xdb\xec\xaa\x39\x1c\x66\xde\x86\xdb\x79\x74\xa1\x38\x27\x1e\xbc\x3b\x67\xa9\xcc\xa6\x33\x67\x88\x30\x54\x68\xa6\x56\xb7\x97\xbf\x60\xdc\xc3\x36\x7b\xf9\x3e\xe3\xc9\x66\x66\x9e\x3c\xd4\xc8\x0c\xf3\xe3\xe0\x96\xa8\x99\xa7\xff\x31\x34\x5b\xbb\xb1\xd5\x41\xb7\xef\xd3\x7e\xeb\x8d\x9a\xd0\xcd\x81\x43\xd4\x98\xc8\x24\x01\xb3\x9c\x62\xf3\x87\xa6\x82\x7f\x30\xe1\x5b\xbe\x61\x59\x33\xf8\x1a\x8c\xfb\x4a\xd3\xf9\xa2\x95\x30\x72\x85\x72\x92\x22\x6e\xf4\x65\x9f\x17\x46\xb2\x48\xc1\x44\x9d\xa1\xe6\x73\x15\x19\xf3\x8d\xc5\x13\xb9\xf8\x96\x9d\xc5\x14\xb9\x25\x79\xe6\xb8\xa2\xba\x79\x74\x60\x01\x85\x30\xdb\x9c\xc7\x3b\x87\x2d\x8a\xe0\x3d\x33\xbf\xa1\xe8\x15\x02\x72\x5d\x25\x91\xf1\x32\x8f\xe8\x43\x69\x36\xe4\x24\x00\x28\x68\x55\x7c\x2d\xad\xe2\x0f\x32\x37\x82\xc1\x60\xc4\x91\x8b\x2a\x82\x70\x44\x16\x1f\xd2\x68\x19\x25\x3c\x0a\xb4\xb7\x69\x4a\x17\xb3\x3a\x76\x53\xad\x8c\xbd\x4f\xbb\x5f\x39\xb2\x9d\xa7\xdd\x37\xa1\xe4\x76\x09\xa7\x0c\x0b\xec\xef\xe1\x00\xea\xe0\x00\x0e\x7c\xc2\xab\xc8\xf1\x7e\x5f\x30\x8f\xb2\x7a\xee\xf6\x98\x00\x2f\x80\x09\xb0\xc9\xe1\xcb\x13\xfe\x0b\xc7\x6e\x8f\x53\xf0\xae\x15\x4e\x81\xbf\x04\x5f\x55\xea\x79\xf3\x79\x7c\xe1\x94\xe6\xea\xc0\x5e\x12\x97\xa0\x46\x5c\xe8\x22\x37\xad\x02\x26\x58\x45\x17\xad\xd6\xe5\x65\x61\x02\xba\xad\x4c\x27\x04\x80\xda\xbb\xeb\x95\xe0\x01\x34\x6f\xc3\x2b\x39\x37\xbb\x0c\x7a\xef\x56\xd0\x20\x0c\x7c\xef\xa2\xdd\x74\x8b\x81\xf7\xf4\xf0\xb6\xe2\xe0\x73\x90\xef\xcd\x62\xe1\x7b\xce\x1b\xca\x52\x32\x93\x09\x20\xaf\x17\x56\xcb\x77\xe0\xa3\x62\xfd\x02\xb9\xcd\xb8\x59\xb0\x08\xb5\xad\x6a\xfd\xd0\x95\x24\xf5\xd6\xa3\xde\x03\xf9\x77\xb7\x91\xef\xe1\xca\x6e\x1a\xfd\xbe\x66\x70\xab\x44\x8f\x0d\x23\xe0\x83\x1e\x57\xfa\x8b\xdc\xec\x5a\xf9\x8c\xca\xc4\xb2\x41\x38\x4f\x05\x09\x7d\x7b\x74\x80\x39\xfd\x32\x5a\xd0\x94\x26\x09\x4b\xb8\x9a\x37\x9d\x79\x2e\x34\x9b\x96\x29\xad\x60\x8c\xfd\xc3\x8f\xab\x63\x27\x8b\x8e\x43\x57\x5a\x16\x5c\x87\xd9\x7c\x8c\xa4\xe8\x06\x62\x2b\x06\x68\x49\xd2\x4c\x84\xd8\x26\x7e\x63\x08\x00\xb9\x62\xad\xda\x49\x06\x81\x35\x34\x9a\x41\x79\x8a\x09\xe5\xa9\x60\x4a\x75\xac\x17\xac\x8a\x7a\x22\xde\xc0\xfc\xef\x05\x09\xf5\xb0\x10\xe2\x1b\x05\x29\xbc\x10\x79\xe1\x40\x4d\x57\xb1\x8a\x7d\x1c\x5f\x35\x8e\xaf\x7e\x6d\x5e\x63\x2c\x5f\x5e\xb2\xba\x63\x3c\x5f\xd3\xf6\xef\x82\x09\xec\x30\xae\xef\x85\x03\xe0\x9e\x26\xf6\xed\x65\x83\x15\x9f\x22\x4e\x71\x1f\xcd\xf7\xf6\xa2\xf9\x9a\x8f\x6d\xa7\x88\xbe\x35\x39\xe9\xae\x97\x6d\xc3\xa7\x7c\x9e\xf4\x93\x86\x50\x79\xaf\x57\xf0\x45\xcb\x30\xaa\x3c\x91\x7b\x1f\x4a\xf5\x44\xa1\x54\x35\x4b\xdc\x2d\x9c\x6a\x23\xf1\xf8\xf9\xc3\x45\xca\x95\x99\x9e\x32\x64\x64\x8d\x97\x54\x65\xe3\xd1\x93\x1f\xbd\xda\x39\xb7\x3d\x81\x9f\x3d\x51\xa0\x48\x94\x1a\x3a\x1b\xb3\x38\x06\x13\x8c\x96\xb6\x4a\x41\x4e\x3b\x82\x21\x7d\x1b\xe6\x4b\x95\x21\x76\x9a\x48\x31\x55\x3c\x66\x41\x2d\xb4\x5c\xb2\xc2\x7c\xaa\xa1\x80\xfd\x4d\x12\x96\x3a\x0d\x3e\x25\xdf\x2a\x2e\x22\x16\x6a\xf5\x29\x89\x25\x53\xe2\x1b\x23\x80\x3d\x30\x42\xc5\x92\xdc\x0b\xf9\x98\xb0\x78\x0a\x3b\x54\x1e\xcc\x21\xe1\xec\x80\x70\xed\x3f\x4b\x19\x8d\x66\x86\xc3\x0e\xcd\xd8\xc1\x2f\x8b\x22\x20\xb3\xdf\x06\xf5\x38\x7c\x33\xdf\x1d\x11\x32\x10\x64\x42\x23\x7d\x40\x54\x36\xce\xdb\x8f\x25\x16\x58\x78\x60\x22\x9c\x78\xde\xc8\x93\x85\x0b\xd5\x86\x07\x95\xa8\xcd\x9d\x37\x43\x00\xbd\x84\xd3\xad\x3c\xbb\x0f\x74\x1b\xbc\x97\x4f\x99\xb2\x2e\x00\x22\x85\x3f\x4c\x36\xfd\xd4\x43\x5c\x01\xcc\x3c\xc2\x45\xad\xa8\x7a\x47\x4b\x53\xe9\x3a\x96\xdc\x0d\x6f\xd1\xed\xad\x99\x04\xda\xc5\xe5\x8e\xe5\xa3\x50\x3a\x65\x74\x6e\x55\x53\xc3\xbc\xc1\x85\x83\x4e\x78\x33\x7a\x9e\xe2\xa5\xdd\x65\x8b\xcf\xb9\xb8\x37\xbb\x9b\x83\x7a\x41\xb5\x10\xe8\xb9\x66\xd3\xde\x73\x41\x0b\xe1\x83\x1b\xec\x5a\x92\x75\x0a\x8a\x09\xea\x02\x2e\x9b\xf0\xd4\x34\x5d\x07\x71\xd6\xc5\x8c\xa7\xa0\x44\x0a\x19\x43\x05\x2f\xc3\xea\xb0\x22\x02\x25\x9a\x02\x8e\xdf\x8c\x25\x8b\xa0\xca\xc0\x82\xa6\xda\x17\x56\x44\x88\x1f\xc3\x1d\xe6\x99\x00\x5c\x26\xab\x21\x3e\x5a\x24\x17\x6b\x47\xc8\x1b\x3f\x1a\x8a\x81\xfe\x06\x2a\xb5\x4a\x31\x4d\x96\x84\xc6\x0f\x5c\xe5\x00\x6b\x91\x14\x2a\x9b\xb3\xb4\x54\xbd\x07\x9d\xcc\x84\x3a\x5a\x31\x63\x33\xb2\xda\x03\x4d\x78\xec\xaa\xc9\x99\x1f\xc7\x6c\x62\xee\xbd\x05\x4d\x95\xb3\x48\xd6\x58\x13\xed\xe6\xc6\x66\xad\x5e\xec\x4c\xfe\x12\x1e\x3b\x32\xcf\x4f\x28\xb5\xba\xcb\x71\xf9\x7c\x06\xf5\x10\x9b\x02\xfc\x2a\x93\x22\xab\x2f\x26\xbb\x0a\x67\xeb\x52\x35\xcd\x0b\x86\x1a\x32\xf4\x1e\x99\x7e\x9c\x0c\x84\x83\xeb\x64\xfe\x29\x4d\xd0\x8e\x1a\x8d\x81\xe1\xd9\x64\x1c\x2e\x05\xa5\xa9\xe6\x91\xab\xed\xe8\x6b\xea\xe2\xd7\xcd\x5b\xbb\x6d\xd1\x52\x15\xd1\xa4\xba\xc3\xcd\x6b\x79\x83\xef\xaf\xe6\x7d\xf6\xb8\x61\xdb\x2b\x83\x35\x23\x99\x24\x5d\xe0\xd3\x4a\x33\x3f\xcd\x3f\x5f\x3d\xa2\xbc\x1f\xb3\x01\x6e\x2f\xe0\xd4\xa0\xd9\x8f\x26\x56\xb2\x50\xda\xee\x52\xf8\x12\xf2\xd0\xa5\x35\x2b\x0e\x85\x9c\x00\xc0\x5e\xd2\x54\x1d\x74\x91\xca\x39\xef\x02\x21\x81\xe0\xac\xd7\xce\x81\xbf\xc6\x75\xe3\xdc\xfc\x50\x05\x0a\xc9\xcb\xf6\x08\xa1\x5e\x54\xa0\x9c\xb1\xe2\x0c\xcd\x69\xa5\x46\x6d\xab\x05\x5f\xa7\x25\xf7\xc8\x1c\x4d\x14\x76\xf5\x14\x96\x1a\xbb\x67\x4b\xc8\x30\x4f\x1e\xe9\x32\x0f\x69\xed\x72\x9c\xf2\xa0\x51\x7b\x5e\xa8\xa3\xb2\xe0\xc4\xf8\x00\x08\xdc\x2f\x5c\x85\x36\x27\xe8\xb4\x8e\x0c\x3b\x9f\x25\x37\xe7\xa7\x14\xb2\xc3\x63\x1f\xca\xd7\x5d\x6e\xc3\xe2\x61\x08\x5a\x24\x30\x9c\xd5\x4b\xf5\xa9\x40\x39\x3b\x5f\xa3\x52\x3b\x04\x75\x39\xe7\x39\xbb\xaa\x6f\xf5\x19\xd6\xcc\x92\x75\xab\xc5\xda\x32\x4a\xbe\x1b\x2c\x81\xeb\xd1\x83\x11\xd4\x9e\xf7\xf5\x48\x42\x5d\x74\x88\x89\x91\x5d\x6c\x11\x3a\x8f\x80\x6c\xe3\x91\x26\x3c\x61\xea\x88\x0c\x6a\xf4\x09\x17\x0d\x04\x52\x15\x00\x11\x81\x5f\xd4\xc9\x3b\x59\xca\x03\x18\x68\x27\xd5\x10\x6e\x4b\xb5\xe6\x56\x8a\x94\x99\x31\x47\xe8\x25\x91\x02\x20\x15\xc0\x15\x99\x72\xac\x54\x68\xc4\x4b\x0d\x06\x37\xc3\x0b\xb8\xcd\x0a\xc2\xea\xd9\xfe\x03\x23\x63\x6b\x96\x52\x8b\x74\x9f\x8f\xaa\x61\x4b\x77\x01\x6f\xd9\x3e\xd8\xca\xf5\x7a\x6b\xbe\xa8\xee\x4d\xed\x08\x6f\x8b\xad\x77\x1e\x9d\x97\xcb\xbb\xbb\x7c\x3e\xc0\xa7\xce\xfe\x44\xc9\x24\x65\x60\xa2\x9c\xfb\xec\x05\x11\xb3\x54\x69\x29\xe1\x86\xba\x39\xfb\xf9\xf8\x6e\x40\x98\x8e\xa0\x90\xd7\x50\x44\xea\xe1\xc0\x08\xb4\x7f\xcb\x98\x36\x3f\x37\x44\xf7\xf1\x39\x13\x0a\x38\x01\x6f\x5b\xc5\xd8\x2d\x8c\xf9\xef\x59\xf1\xfb\x15\x24\x5f\x89\x15\x05\xda\xf5\x15\x25\x0d\x99\x02\x6e\x16\x2e\xad\xaa\xa1\x18\xac\x66\xde\xaf\xc3\xce\xde\x20\x36\x44\xfc\x35\x13\x1d\xc5\xa4\xd3\xfc\xa3\x60\x14\x0d\x52\xd8\x7c\x41\x53\x5e\x03\x25\xb3\x3a\xe8\x04\xbf\xa9\x6d\x7d\x1d\x13\xc9\x63\x70\x6d\x6d\x78\x92\xc3\x8c\x13\x9d\x32\x06\x2c\xc4\xd3\x93\xbd\xeb\x6d\xce\x83\x9f\x58\xf0\xd1\xd1\x50\x7c\x72\x26\xd3\xfc\x57\x5f\xf4\x12\x03\x99\x58\x4c\x32\xd0\x99\x8a\xad\x40\xb3\x31\x57\xfe\x07\x40\x4d\x53\x59\xa2\x11\xff\x76\x02\xd5\xd8\xdd\x40\xf1\x49\x1d\x97\x48\xa9\x88\x66\x17\x72\xbb\x62\xb8\x7c\x32\x62\x49\x17\xd9\x71\x30\xe9\x27\xca\xd0\x77\x74\xdf\x70\x3a\x37\x41\x78\xce\x27\x03\x92\x9b\xc3\x00\x45\xad\x04\xed\x74\x09\xa2\xe9\x32\x02\x46\xb6\x72\xa8\x10\x66\x03\x98\x5d\xb4\xb2\x35\xda\xd8\xd0\x47\xef\xcc\x72\x63\xe8\x85\x50\x3d\x14\x69\x26\x00\xfb\xca\x9b\xdc\x29\x51\x2c\xe5\x68\xfb\x8e\xa4\x40\x19\xc0\x1a\x4f\xa6\x86\x4d\x18\xc9\x0f\xfc\x2e\x52\x80\x46\x25\x33\x05\xee\xfe\x39\xd3\xe6\x82\xfa\x16\x50\xe3\xd1\xe9\x71\x40\x16\x29\x9f\x73\xcd\x1f\x98\x47\xac\x0b\xb7\xee\x94\x6a\x9a\xc8\x69\x2f\xd5\x7c\x42\x23\x7d\x4b\xb7\xd2\x99\xa9\x6d\x66\x53\x07\xba\x1b\x06\x19\x9c\x99\xc5\x9f\x32\xc1\x52\x98\x28\xd4\xe2\xac\x3d\xc2\x5d\xab\x74\xe6\x9c\x1b\x30\x6c\x23\x44\xfd\x54\xde\xc6\x40\x33\x2d\xe7\x46\x23\xa5\x49\xb2\x04\x34\x4f\xf3\x64\x46\xd5\xcc\x6d\x34\x42\x80\xb6\xb9\x9b\xec\xe2\x9e\xd2\x68\xc6\x6e\xa0\xf8\x7a\xdd\xe2\x96\x46\xf9\x8e\x89\x6c\xfe\xee\x84\xfc\x77\x3e\xc7\xd3\xde\xe9\x4f\xfd\xd1\xd9\xe0\xa6\xf7\xfe\xbc\x7f\x16\xcc\xc7\x3e\xf9\x34\xb8\xb9\xa9\xfe\xfa\xd3\xe0\xb6\xfa\xe3\xd5\xe5\xd5\xdd\x79\xef\xb6\xae\x95\xf3\xcb\xcb\x9f\xef\xae\x46\x1f\x7a\x83\xf3\xbb\xeb\x7e\xcd\xa7\x77\xb7\xfe\xa1\x7d\xf6\x3f\xc1\x21\x82\x78\x0f\x88\x4e\xa9\x1f\x6d\xf9\x9c\x1d\x92\xe2\x8b\x27\xe4\xce\x7a\x6f\xb8\x85\x01\x77\x41\x13\x98\x9b\xf0\x48\x95\x61\x55\x50\x6d\x77\x28\x88\xfb\xdc\xcc\xbd\xe9\x53\x74\x2b\x45\x33\x46\x12\x29\xef\xb3\x85\xe5\x60\x18\xe0\x28\x24\x5a\x64\x98\x0a\x5a\xfb\x69\x70\x7b\xe2\xbd\x48\xd5\xc6\x82\x14\x44\x47\xea\x30\x2e\xea\xb8\x26\x18\x39\x16\x29\x7b\x80\x33\xe9\xbd\x8b\x41\x0f\x7e\x03\x56\xf5\x83\xad\x51\xa1\x4b\xdd\xc4\xb1\xad\x04\xe0\x26\x16\x34\x5c\xdc\xbe\x55\xab\xe9\x97\x03\xb1\x20\xc9\x98\x45\x34\x43\xe7\x9b\xb9\x8e\xd2\x54\xa6\xe1\x80\xf3\x6d\xdf\xb2\xd1\x77\x55\x29\xa3\x88\xf8\xae\xe0\x8c\x98\x4f\x82\x93\x63\xf4\x65\xd0\xa5\x1d\xda\xda\x6c\x89\xc6\x29\x57\x80\x39\xf7\x98\x00\xca\x8b\xe1\xdc\x1e\x7b\x8c\x83\x37\x8f\x6a\xf2\xc8\x20\xca\x35\xb3\x70\x93\xa8\x21\x9b\x13\x08\xdd\xa1\x1d\xda\x21\xf7\x16\xa2\x5f\x1b\x59\xe6\x2e\xc4\x62\xf3\xbd\x62\x75\xec\x72\x8b\x50\xc5\x33\x6c\x14\x78\xa8\x73\xad\xc2\x88\x1b\x2c\xfe\x8e\x67\xd7\x58\x9e\x57\x48\x41\xd5\x7b\x63\x0d\x4b\x37\xcc\xb5\xcd\x78\x5c\x7a\x46\x01\xfd\xa6\x5b\xbe\xba\x0f\x0b\x58\xbb\x56\xb7\x32\xa6\x4b\x43\x1c\x10\xd3\xa0\xb2\xc5\x42\xa6\x9a\x34\xb4\x41\xe0\xa4\xe3\xf8\xe0\x66\xb0\xf3\xf0\x2c\x0a\x1a\x31\x72\x80\xaa\x01\xa8\x6b\x17\xb1\x6e\xd7\x35\x3f\xf7\x61\xea\x2b\xa8\x6b\x1e\x2c\x71\x5e\x50\x7c\x0b\x14\x5a\x27\xa2\x6e\x13\xc9\xb4\x30\xd7\x70\x5b\x54\xdb\xba\xde\x2f\x5d\x0b\xb5\x5b\x9e\xb0\x89\x1e\xd5\x7a\x53\x56\x18\x0e\x4d\x8b\xa2\x29\xc9\x87\x4f\x67\x3b\x68\xb1\xbd\x2c\xff\xa3\xf5\x76\x19\x01\x3e\xd0\xe3\x53\x29\x35\x4a\x91\xb9\xa6\x41\xdc\x6a\x82\x11\xc0\x76\x8a\x10\xfa\xb9\xa8\x66\x24\xf3\x7b\x21\x1f\x85\xb7\x98\xab\xa3\xa1\xe8\x53\xa8\xeb\xe0\xd5\x05\x1b\xb0\x80\xb2\xfa\x5a\x29\xbd\x00\x13\xff\x4a\x30\x24\x72\xba\xb7\x35\x70\x92\x25\xc9\x4b\x01\x14\xbe\x6b\x73\x7a\xd0\x9a\xec\x04\x35\x9c\xb0\x05\xb1\xd6\x6c\x61\x2d\xde\x38\xcf\x3c\x9c\x1b\x9c\xa6\xa6\xab\x23\xf2\xd9\xd9\x67\x20\xbe\x22\x2f\x61\xa1\xf1\xc6\x49\xe8\xd2\x25\xc9\xd7\x2d\xec\x2e\xf2\xce\x77\x1d\x71\xb1\x7a\x81\x7d\x8e\x5d\xcd\x2a\x17\xd4\x64\x21\xd0\x6e\xda\x21\xbc\xec\xd4\x7f\x74\xc3\x56\xc7\x9f\x7e\x00\x54\x6b\xcd\x52\xa3\x6c\x82\xcc\x20\x92\xe5\xff\xc2\xcd\x82\x7c\x73\x1b\x9b\x1c\x3b\x2c\x65\xeb\x99\x34\xe7\x07\x3c\x6b\x46\x0c\x18\x03\x10\x45\x02\x72\xc0\x11\xe9\x41\x41\x07\x80\xea\x37\x57\xa1\x8b\xe2\xe1\x53\x21\xd7\x05\x0e\x34\x10\x53\x14\x10\xd3\x4d\x33\x31\x29\xa0\xa6\x3c\xb4\x7a\x37\x14\xb5\x83\x34\x1b\xc3\x5b\x68\x15\x2e\xa7\x7d\x72\x4d\x07\x15\xfb\x25\x82\x70\x2a\xc3\x0d\x3e\xfc\x67\xfd\xd0\x3f\x66\x34\xa5\x42\x43\x68\x89\x95\xbc\x53\x16\x84\x38\xb2\x2f\x10\xbc\x25\xd0\x5c\x0b\x3f\x85\x9b\xeb\x5c\xe9\x53\xfe\xc0\x04\xe1\xf1\x01\xe1\x47\xec\xe8\xc0\x56\x65\x53\xd9\x38\x7f\x73\x66\x24\x87\xa1\xa8\xa4\x8c\x1c\x91\x5e\xa2\xa4\xfd\x82\x89\x28\x81\x02\x2a\x41\x14\x8c\xa7\x7c\xeb\xfc\x19\x2f\x41\xbf\x80\xad\xcc\x9b\x97\xf6\x41\xf0\xe1\x50\x50\x85\xbe\xe6\x04\x4e\x7a\xfe\x7b\x5d\x91\xa4\x42\xfc\xc1\x13\x62\xbd\x55\xae\xa1\x27\xdb\x24\xc4\x19\x5e\xb5\x41\xf0\x06\x6c\x4c\x9e\xca\x13\x24\xc5\x90\x6f\xa9\x26\x09\xa3\x4a\x93\x1f\xbe\xeb\x14\x73\xe1\x26\x98\x73\x57\x7b\x7c\xf3\x80\x54\x17\xd1\xd6\x54\xe9\x0d\x70\xe0\x6d\x69\x5a\x2f\x40\x1e\x98\x7d\xd6\x92\x3c\x70\x95\x41\x4d\x9a\x20\x86\x1e\xab\x8a\x70\xad\x5c\x50\x20\xaa\x4c\x0d\x7c\xc4\xc1\xbf\x58\xb7\xa4\x1d\x56\x0d\x65\x59\xe5\x89\xa3\x7a\x06\x59\x92\x79\x6c\xd9\x8c\xea\xa1\xb0\x9c\xd5\x85\x63\x04\x35\x08\x7a\x49\x52\x8c\xe7\xa2\x10\xb2\x28\xcc\x84\xa1\xa2\xce\x91\x5f\xa0\x0b\x50\xbf\x7c\x08\x50\xb1\xba\x9e\x3f\x2c\x46\x53\x1b\x0a\x9f\x82\x16\xb6\x5d\x2b\xed\xd4\x59\x81\x9f\x51\x08\xae\xe9\xfe\x1c\x4b\x1b\xb5\x10\x86\x9b\x4b\x4f\xae\xf0\x9a\x54\x2c\xef\x2b\x64\xe3\x5d\x77\xd0\x5e\x54\xae\xb7\x62\xc3\x35\xfb\x28\x6b\x8c\xe2\x0d\x9b\x1b\xc8\x16\xdb\x28\xe0\x3e\x16\xed\xb9\xfc\xb2\x85\xa1\x0f\x62\x88\x2d\x5f\xcf\x05\xf3\x58\x6d\xc7\x3a\xc0\x1c\xcd\xe3\x20\x74\x34\x88\xab\x83\xd0\x62\xc7\xf8\xec\x9b\x0d\xfe\xd1\xc5\xdb\x9e\xfe\x41\x3e\x7f\x37\x15\x1f\x5c\x56\x9d\x78\xb3\xb0\xd7\x8b\xff\x4a\x23\x26\xa2\x25\xf6\xe4\xe0\xb2\xaa\x39\x72\x0e\x59\x88\x82\xc9\xbd\x56\x3c\xb4\x55\xca\x8e\x48\x1f\x2e\x1a\x57\xb4\x8c\x4e\x9c\xdb\x20\x78\x79\x28\x8c\x66\x62\xee\x78\x85\x83\x76\xed\x17\x49\xbc\xee\x04\x60\x7e\xee\x56\x1e\x97\xf9\x7a\x14\xc4\x26\x6d\xc2\xa5\x07\x43\x1b\x00\xf3\x46\xfa\xd3\x13\x12\xcb\xe8\x9e\xa5\xc7\x29\x8b\xb9\x3a\x01\x0f\xb8\x6e\x74\xbd\xcd\x8d\xb6\xbd\xb5\xa4\xd1\xb6\x80\x68\xb5\xdc\xd7\x1c\x2a\x71\x41\x50\xb1\xab\x46\x70\x40\xf8\x04\xd4\x09\x97\x5f\x80\x49\x07\xd6\xba\x4d\x98\xd0\xe9\x72\x21\xb9\xd0\xde\x94\x55\x5a\x08\xa7\x69\x18\xa1\xad\x29\xc4\x36\xdd\x45\xa4\xcc\x86\xd3\xbe\x9d\x31\xc5\x5c\x58\x00\x4e\x4a\x4b\x5b\xe6\x1e\xd9\xc5\x82\xea\x99\x82\x0c\x89\xe2\x1a\x58\xa5\x0b\x3e\x35\x2b\x44\x17\x10\x55\x80\x56\x8a\xfc\x23\x1f\xc7\xaf\x34\x4f\x92\xa1\x10\x8c\xc5\x8a\x40\x32\xc3\x37\xb5\x99\x38\xe6\xd3\x03\x42\xe3\x98\xfc\xef\x6f\x3f\x9c\xff\x7a\xdb\x1f\x0d\x2e\xc0\xe6\x3c\x38\xef\x7f\x77\xe0\x7f\xbc\xbc\xbb\xf5\xbf\xa2\x85\xe5\x81\xa5\x64\x4e\xef\x41\xc5\x13\x0a\xe5\x3f\x88\x76\x0f\x47\xea\x72\x94\xcc\x13\xc5\x5c\x04\xa9\x15\x53\x7c\x56\xbb\xdd\xc3\xc6\x62\x23\x68\xf3\xeb\xa0\xfc\x5e\xfb\x4f\x56\xd3\xa0\x23\x1e\xdf\x85\x13\x03\xe7\x4c\x68\xc3\x63\xac\xb5\x2f\xd7\x7d\x73\x82\x63\x62\xca\x45\x53\x9c\x1b\x13\x0f\x4f\x29\xc4\xff\xcc\x96\xbf\x18\xf5\xfa\x8a\xf2\xb4\x35\xed\xf5\xc5\x03\x4f\xa5\x80\xa9\x79\xb3\x56\x5e\x64\x99\x69\xe7\x6d\x0b\x0e\x95\x42\x59\x18\x22\x29\x16\x8d\xb1\x94\xa5\xc4\xed\xd7\x31\xdd\x1e\x7a\x7f\xd9\x17\x9d\xba\x6c\x38\x65\xd9\x0d\x7d\xa0\x3c\x81\x38\x58\x77\xd1\xe4\x34\x38\x14\xb7\x97\x67\x97\x27\x84\x25\x74\x2c\x53\xc8\x8e\xc1\xc0\x1d\xd7\x84\x5d\x30\x28\x5e\xe9\x1b\x2a\x64\x42\x1e\x90\x45\x9e\x09\x19\x1a\xd1\x8e\xb0\x8d\x35\x19\x91\x0b\x99\x56\xf3\x08\x77\xab\x02\xda\xc9\x5e\xc9\xb4\xcd\xf5\x6f\x5e\x83\xa5\x93\x0b\xa3\xc8\x95\x38\xaf\xbd\x9b\x27\x8c\x62\x01\x1e\x74\x0b\x59\x5b\xbe\x0d\x0c\x4d\x92\x02\xd8\xba\x39\x38\xea\xc8\x3a\xca\xf3\x37\xa5\x20\x3f\xff\x49\x91\x71\xa6\x87\xa2\xd8\x86\x14\x50\xc9\xfd\x3d\xd5\xd1\xec\xbb\xa1\xb8\x34\x6a\xe6\xcf\x7f\x6a\x48\xd9\x8e\xa9\xa6\xa3\x7a\xa2\x6c\x5e\x93\x33\xaa\xe9\xb9\xa4\x31\x17\x53\x0b\x44\x50\xbf\x16\xef\xfb\xb7\xbd\x13\x72\x69\x75\x78\x9f\x65\x99\x23\x3c\x04\x0d\x01\x43\x86\x89\x38\x2e\x02\xac\x5c\x78\xd6\x6f\x4d\x64\x20\x3d\x99\x0b\x6b\x28\x60\x29\x91\xab\x72\x4d\x16\xd2\x62\xba\x1a\xad\x0c\x01\x04\xa8\x2f\x57\x9e\x2c\x89\x59\x1d\x20\x63\xbf\x19\x56\x1e\x03\x79\xa6\xca\xec\x87\x02\x14\x74\x9f\xf9\x96\xc8\x88\x26\x10\x39\x77\x18\xd8\xf4\x8c\xda\x2e\x33\x48\x43\x82\x90\x15\xb1\x2c\x06\xb8\xfa\xcc\x38\x2f\x94\x85\x1b\x05\x06\x00\xd8\x47\xeb\x4c\x9d\x4b\xc3\x71\x8e\x86\x62\x30\xc1\xc0\xba\x04\x57\xc7\x7c\xc8\x04\xf8\x93\xdd\xb2\x98\xa7\x8e\x1f\x41\x61\x32\x74\x2b\xd2\x08\xcc\xf7\x62\x09\x61\xd1\x80\x03\x29\x21\x40\x23\xe7\xce\x96\x28\x2b\xbb\xe8\xef\xc4\xe0\xb3\xa1\xc0\x78\xbe\xc2\xbe\x84\x59\xc2\x41\xef\x52\x40\xb8\x61\x7e\x5d\x7a\x01\x63\x61\xc3\x0f\xad\xac\xbf\x48\xd9\xa1\x2b\x7c\x6b\x7e\x0d\xd6\xd4\xdc\xb0\x47\xe4\x3a\x54\xaf\x63\x19\x65\x73\x07\x76\x03\xe9\x5a\x36\x4e\xcd\x5e\xa2\x9e\x42\xf0\x62\xaf\xa5\xf8\x7f\x09\xff\x5b\x2b\x9b\x5e\x6d\x59\xee\xdc\x53\xd5\x68\x51\x6c\xa9\xd0\xda\x7a\x38\x8d\x35\xd8\xc6\x17\x39\x66\x06\x54\x43\x97\x46\xfb\x94\x60\x87\xc6\xac\x3a\x19\x7f\xa3\xc8\xe0\xca\x08\x29\x46\x29\xf5\xc7\x24\x53\x1a\xa3\xb4\x20\x53\x05\xbf\xc6\x48\xf9\x03\xf2\x3d\x19\x66\xdf\x7f\xff\x87\x88\x7c\x71\xff\xf8\xe3\xbf\xff\xfb\x1f\xfe\xd8\x25\xf4\xdb\xe9\xcc\xd0\x6e\xbe\x46\x1e\x01\xb7\x28\xb5\x84\x3b\x50\x65\x26\x5b\xec\x82\x3d\x23\x4d\xcb\x6f\x35\xf6\xc6\x4c\xa7\xba\xc7\x41\x10\x0e\x9d\xda\x43\xa8\xc2\xc3\x43\x0a\xa7\x27\x77\xf6\x2b\xa6\x0f\x8a\x87\xd8\xcb\xa3\x56\xe8\xfe\x5f\x2b\x70\x0b\x46\x86\x9a\x37\x0b\x16\xe2\x89\x97\x80\x4d\x23\xe4\x5b\x6b\xa2\xd3\xe0\xe3\xfb\xce\xdd\x41\x32\x89\x59\x6a\x0b\xc2\x39\xab\x9a\xb7\xf5\xc1\xf9\x65\x5f\x16\x89\xb4\x61\x1c\x94\x28\xb6\xa0\x70\xc7\x9b\xf3\x7a\x34\x14\xfd\x2f\xd4\x30\xd7\x03\x57\xb7\x13\x3e\x42\xe7\xc8\x84\x46\x8c\xa0\x34\xfd\xed\x97\x13\xf3\xdb\x01\x59\x9e\x40\x34\xe6\x01\xf9\xfb\x89\xcd\x9b\xa6\xa9\x1e\x99\x9f\xbe\x73\xe2\xb0\x6d\x02\x06\xcd\x15\x19\xbe\x3b\x7e\xa0\x29\x16\x7d\x39\xb6\x80\xb7\xef\x2c\xfb\xf3\x60\xde\xa1\x00\x9d\x48\x79\x6f\x63\x55\x2b\x5f\x1e\x3b\x14\x06\x20\x70\xef\xdc\xc0\xcd\xb7\x61\xc7\x46\xd8\x3b\x84\x17\x18\x39\x5a\x8c\xc9\xd1\x5f\x95\x14\xe4\x68\x49\xe7\x89\xfd\xd5\x3d\xb5\xa1\xb4\x54\x11\x57\xe1\xce\x05\xd2\x24\x4b\x34\x67\xbe\x4f\xe4\x18\xe6\xf5\xc9\xcd\x15\x83\x51\x61\xa0\xf9\x15\x91\xdf\x2a\x76\x22\x56\xdc\xc1\x5c\x72\xa8\x09\x6b\x5e\x81\xbb\xb7\x6e\x56\x5f\xfc\x90\xfe\x0b\x9d\xb7\xb0\x28\x2e\x83\x0d\x2d\xb8\x3e\x10\xcc\x34\xfa\x85\x7c\x6b\x99\xd0\x77\xe6\x22\xb0\x91\xbf\xb8\x0c\x75\x1d\x2c\x7d\x07\xbf\x06\x1d\x70\x41\x30\x27\x71\xc5\x97\x7f\x3f\x3e\x3a\x3a\xf2\x5f\x5f\x98\xa9\xfc\x7f\x84\x6b\xc5\x92\x09\xb6\xe4\xae\x99\xe5\x50\x7c\x72\x80\x75\xce\xc2\x9c\xe3\xbb\x40\x9d\xc6\x48\x26\xe4\x30\xb7\xba\xc6\x32\x52\xe4\x77\x46\xf6\x0c\x96\x12\x7e\x34\xca\x56\xfd\xa9\xb2\xe5\x7a\x9f\xe9\x58\x59\xab\x75\xf9\x60\x85\x90\x0e\x5e\xfb\xa4\x2a\x44\x3f\x04\x5a\x30\x94\x73\x6c\x61\x1f\xa0\x92\xae\x66\x5f\x34\x3c\x6a\x40\xd5\xa8\x8d\x0a\xaf\x97\xe0\x2a\x0c\x37\x07\xd7\x40\xb2\x6e\x58\x00\x8b\x7d\x60\x79\x03\xce\xf3\x20\xf4\x71\x98\xeb\x45\x84\x10\x6a\x2a\x9b\xcf\x69\xba\x3c\xce\x4f\x5b\x95\x38\x73\x3c\x54\xe0\x32\x89\x5b\x00\xf0\xb3\x26\xf6\x68\xd9\x50\x03\x2b\x03\xba\x3b\xcd\x9f\xdd\x08\x00\xd8\x21\xe8\x0d\xcb\x0f\x30\x11\xc9\xd8\xd2\x75\x9e\x7a\x59\x14\x2b\xfc\x3b\x55\x81\xc2\x85\xad\xa8\xdc\x62\x26\x34\xe6\x63\xdb\x37\xdc\xc7\x0d\x0c\x5c\x8e\xa0\x38\x06\x9b\x76\xf0\x61\x0e\x2e\x6f\xdc\x37\xed\xaf\x5d\x58\x87\xa2\x5c\x4d\x9d\x2a\xe7\xcc\x06\x29\x7d\xcc\x2f\x60\x08\xc0\x40\x13\x4a\xe6\x13\x53\xf1\xef\x53\x79\xc5\x13\x73\x6f\x01\x8d\x1f\x0d\x45\xe1\xe7\x03\xc2\x12\x3e\xe7\xc2\x07\xc0\x21\x7b\x97\x13\x14\x71\xef\xb9\x36\x5b\xa6\xe2\x7b\xc3\xc1\x5c\x8e\x7f\xa0\xf7\xf4\xc4\xd2\x91\x8e\xf7\x1e\x59\x33\x41\xa6\xcc\xb8\x72\x45\xda\x48\x9c\xa6\x89\x43\x2b\x35\xf2\x80\xf0\xe0\xfc\x0e\x85\x69\xcd\x9d\xa5\x3c\xf2\x36\x68\x2f\x68\xee\xd0\x01\x89\x05\x1c\x00\xfa\x28\x84\xcf\x7a\x21\xb5\x46\x44\xe9\x8b\x6c\xbe\x6d\xde\x86\x8d\xc4\x7d\x29\x5b\xda\x55\x5e\x8b\xd5\xe6\x00\x31\x91\xcd\xdd\x81\xea\x40\x71\x7d\x2b\x00\xc5\x2c\x4a\x28\xdc\x1d\xd0\x10\x84\x27\x1e\xa0\x17\x33\xa8\xfb\x6a\xaf\x17\xec\x06\xb1\x49\x13\x26\xbe\xc5\xbf\xbf\x23\xf6\x6e\xf8\xfe\xc0\xde\xe7\xa9\xb2\x7a\x9e\xdb\x73\xc0\xb6\x67\x31\x1a\xba\x01\xa2\x6c\x4a\xa1\x1a\xb7\xb5\xbe\x14\x94\x43\x90\xc0\x96\x32\x23\x8f\x5c\xcd\x86\xe2\x56\x3a\xab\x20\x11\xd2\x83\xbc\x1d\x80\xc6\x58\xe9\x8f\x2a\x60\x02\x30\xea\x3a\x0a\x28\x15\x4a\xef\x9e\xb6\x03\x91\xa6\x23\x21\x63\xd6\x31\xe0\xbc\xa6\x10\xb5\x75\x16\x38\x27\x73\xca\x30\xb5\x0a\x6e\x8a\xc6\x32\xba\x4a\x75\x34\xa0\xd7\x56\x74\xb7\xed\x40\x1d\x93\x47\xb1\x29\xaa\x85\xbf\xd5\xa0\x15\xa7\x16\x06\xa9\xb0\x85\xb5\x2f\x56\x9d\xdf\x4a\x47\x8b\x37\x73\x21\xe0\xdc\x23\x58\x76\x1f\x05\x4c\xc9\x34\x95\xd9\xc2\xe7\x8b\xbb\xcc\x39\xdc\x06\x2b\xd3\x0c\xc4\x44\x9e\x58\xad\xea\x9c\x8b\x7b\xa4\xf8\xa7\xda\x23\x5f\xdf\x3d\xf8\xdd\xdd\x61\xb8\xe2\x87\x84\x8b\x28\xc9\xe0\xe2\x53\x9a\x46\xf7\x88\xf0\xd7\x64\x99\x35\xdf\x8c\xd6\xe7\x25\x36\x48\x4c\x59\x92\xd8\x6e\xf3\x0b\x34\xaf\xbd\xf3\xc0\x29\xa1\xe4\xee\x7a\x50\xdf\xf7\x3d\xaf\x7a\x5c\xea\x6f\xcf\x22\x81\xc0\xff\xfc\xcc\x3b\x05\x47\x96\xa0\x48\x59\x81\xd4\xbd\x05\xa8\x09\x80\xab\x74\x7b\x6f\xe9\xe2\x35\xb7\xd0\x68\x5e\x43\xa9\xf5\x93\xcf\x3b\x3e\xb3\x1f\x7f\x32\xdf\xd6\xef\xc8\x27\xc8\x0b\xf2\xe0\x09\x73\x2a\xcc\x04\x5d\xaf\x0d\x26\x42\xbc\x18\x37\x1a\xd2\xdd\x62\xa3\x01\x61\x8f\x2d\x61\xb3\x6d\x57\xae\x95\x47\xb4\x19\xd2\x04\x15\x6e\x3d\x03\x4d\xec\x80\xdc\x44\x33\x36\xa7\x10\x97\x32\x2f\x6a\x64\x20\x99\x7e\x9b\xd0\x74\x8a\x72\xa2\x62\x5a\x7d\x57\xb3\xc3\x79\x7c\xf6\x16\x3b\xbc\x01\xa4\x7f\xe8\xa3\x01\x29\x64\x15\x07\xf0\xa3\x2c\xa2\x03\x79\xe6\xe4\x8b\x63\xd8\xbb\x83\xab\x10\x15\x38\x92\x69\x0a\x28\x76\xb1\x91\xc6\x9b\x71\x13\xb6\x2c\xed\x72\x41\xe7\x3e\xc7\xd8\x15\x98\xb0\xa9\x24\x38\xb8\x31\x03\xa8\xa8\xe6\x31\x6c\x5d\xc3\x25\x1c\x82\xc5\x54\x6f\x1a\xc1\x50\xf4\xdc\x2b\x3e\x4f\x11\x44\xdc\x14\xe5\x10\x88\x65\xc3\xc8\x4d\x10\x33\x69\xbe\xea\x76\x72\x0d\x93\xe8\x9a\x0e\x56\x2e\x43\x63\xc4\x5c\x8f\x2d\x87\x62\x8c\xd3\x77\xdc\x3c\x1a\x7a\x7e\xe8\x5e\xa5\xab\x1e\xea\x21\x2a\x57\x51\xaa\xeb\x78\xbd\x48\xe9\x72\xd0\x6d\x43\x61\xe1\x26\x8c\x77\x4b\x96\x39\x99\x9a\x15\x47\xd5\xa4\xd4\x59\xf5\xb4\xea\xad\xb8\x31\xa7\xf3\x51\x2a\x93\x6d\xf6\xc8\x35\x51\x50\x73\x67\x08\xf9\xb9\x24\x7f\xcb\x68\x82\x26\x79\x61\xc9\xd1\x0d\x1b\x24\x86\x1f\xff\x48\x7a\x70\x5d\x92\x4f\xc0\x17\xc1\x19\x09\xad\x69\x49\xf8\x7c\xc1\x52\x25\x8d\x3e\xd6\xb0\xc9\xf7\x7f\x52\x23\x8b\xd7\x3b\xa2\x51\x24\xb3\x2a\x36\x6f\x87\x99\xd4\xb4\x16\x4e\x8a\x92\xfb\x6c\xcc\x52\xc1\xb0\x5a\x24\xbc\x47\xdc\x7b\xad\x86\x2b\x69\xa6\x67\x3f\x8e\xa2\x84\xb7\x06\x11\x86\x4c\x88\x9e\xf9\xec\x14\xbf\x5a\x35\x81\x42\xfb\x85\xa1\x0b\x82\xcf\x08\x3e\x3b\x22\xef\x69\x74\xcf\x44\x4c\x16\x49\x36\xe5\x36\x3d\x19\x6e\x28\x60\x97\x81\x95\xaa\x38\x31\x54\x79\xb1\x7d\x73\x0d\x0d\xc5\x9c\xde\x83\x86\xf4\xc5\x06\x8c\x1b\x4d\xb3\x93\xb6\xe5\xe9\xa1\x82\xd3\xe0\x72\x69\x15\x8b\xb2\xd4\xbc\x81\xe7\x43\xe3\xf9\x00\xbb\x12\x60\x95\x65\x82\x50\x80\x7a\xf8\x46\x91\x6c\xe1\x8c\x1f\x60\xf0\x48\xc0\x47\x84\x93\x84\xfa\x61\xdc\x88\x83\x33\x36\x14\x10\x77\xe7\x5a\x5c\x7a\xae\x12\xba\x25\xbd\x7b\xbc\xee\xf0\x4d\x30\xd1\x79\x3b\x77\x0a\x9a\x91\x76\x1e\x53\xa8\x67\x4c\x80\x1e\xd6\xbe\x65\xc8\x16\x6f\xbf\x69\x85\xf8\x41\x9c\x45\x6e\x38\xf2\x4b\x98\x09\x6e\x61\xab\xad\xad\x30\x08\xed\x71\x26\xf5\xfc\x7b\xae\x88\xa2\x9a\xab\x09\xaf\xd5\x4f\xc3\xf4\xf2\x6d\x56\x9d\x76\xcb\x69\xaf\xc9\x67\x2f\xad\x85\x8f\x51\x3e\x22\x1f\x40\xdd\xce\xa7\xa4\xa5\xcf\x0e\x6f\x62\x09\x7a\xc6\x1a\x81\xcd\x76\xe1\xdc\x77\x33\x68\x6b\x45\xf1\xf1\xe8\x47\xa4\x97\x9b\x39\x31\x3f\x1e\x0d\x98\x6b\x66\xc4\x12\xc5\x36\x21\xbe\x56\x16\x01\x70\x06\x02\x01\x11\x90\x55\x94\xf9\x3d\x07\x59\xf4\xc3\x7c\x84\x94\x2f\x7a\xcf\xc4\x2a\xb5\xaf\xfd\x08\xfb\x85\x84\xd9\xba\x21\xf6\xbc\xc2\x2f\x51\xe7\xdf\x64\x80\xed\x8f\x5d\x0e\x49\xc0\x27\xc7\x66\xc9\x8d\xa0\x1f\xdd\xdb\x40\x73\x34\xfb\x58\x50\x83\xc7\x99\x54\xe1\x39\x73\xfb\x07\x9b\xa9\xd3\x8c\xb9\x80\x72\x08\xd4\xf7\x0b\x8c\x1e\x7a\x21\x43\xcc\x03\x18\xb5\x3f\xa4\x68\xd2\xf2\xfb\x4d\x1c\x0b\x85\x65\x00\x73\xb9\x6b\xaa\x7a\x9a\x7f\xfe\x93\xba\x84\x13\xbb\x8b\xbc\xdd\x84\x8e\x59\xf2\x04\x50\x4e\x1b\x1a\x22\x7d\x34\x08\x8e\x0b\x8c\xfe\xb1\x4f\x14\x5f\xc8\x98\xe4\xe4\xd5\x14\x94\x28\x84\xc4\x68\x80\x57\x38\xad\x60\x70\xad\xe7\xb6\x8e\xb2\x3f\x05\xde\x4a\xac\x8a\x8b\xf0\x28\x81\xc8\x65\x73\xbb\x40\xfb\xb5\xd7\x3f\x57\xfe\x3e\xa9\xa7\xb1\x2b\x19\x6f\x43\x58\xdd\x21\xb0\xaa\x74\xdd\x22\xe2\x50\xd5\x15\xe5\x59\xb1\x12\x0b\xd9\x1c\x2b\x16\x8f\xda\x97\xb1\x01\xbf\xe3\x38\x9b\xdc\x00\x00\x6f\x53\xfe\xba\x43\x1e\x9a\x31\x9f\x90\x62\xf6\xd9\x74\xe3\xc3\xa3\x9b\x36\xc5\xba\xb1\xf2\xeb\x9f\x92\xff\x7b\x73\x79\x71\x38\xa7\xa9\x9a\x51\xc8\x0f\x74\x6d\x1d\x38\x98\x78\x54\x40\x9d\x79\x9d\x0b\x32\x14\x87\x64\x2a\x0f\xd0\x9b\x73\x42\x66\x5a\x2f\xd4\xc9\xf1\xf1\x94\xeb\x59\x36\x3e\x8a\xe4\xfc\x38\x5f\x9b\x63\xba\xe0\xc7\xe3\x44\x8e\x8f\x53\x06\x41\x77\x87\x3f\x1c\xfd\xf8\x03\x6c\xcd\xf1\xc3\x0f\xc7\x60\xc3\x3f\x9a\xca\xdf\x9d\xff\xf8\x1f\x7f\xf8\xa3\x69\x78\xb1\xd4\x33\x29\x4e\xac\xab\x68\x65\xdb\x87\x28\xf8\x1e\xe3\x27\xa5\x5e\xfe\xe3\xe8\xfb\x70\x18\xf6\xd5\xb9\x8c\x59\xa2\x8e\x1f\x7e\x18\xb9\x9d\x39\x5a\x74\x71\x7e\xe5\x0c\xdf\x2f\x79\xa9\x86\x93\xf9\xdd\x93\x8c\x4b\x0f\x5a\xb7\x2d\x35\x67\x25\x0c\xa9\xdc\xe2\xc4\xdc\xb3\x8a\x3f\xb0\x83\x06\xe6\x25\xa9\x06\x9d\xbe\x2b\xc2\x6f\xa3\x6c\xd3\x29\x83\x0c\xbc\x6f\x3c\x02\xf4\x48\xb4\x41\x2c\x28\xaf\x8b\xf3\xb1\x5e\xe6\x6d\xd6\xef\x29\x71\x50\x77\x0d\x80\x6a\xa7\xbb\x21\xf8\x69\x82\x5f\x3b\x9f\xb8\x7c\x74\xa0\xa7\xbb\x80\x0a\x6d\x59\x4c\xc3\xe3\x29\x22\xf1\xc0\x58\xdc\xb8\xba\xd1\x48\x61\x89\x31\x4c\xc2\x46\x41\x2a\x88\x98\x44\x3c\x02\x39\xf1\xc8\xae\x18\xec\x8a\x20\xd0\x72\x52\xf3\x8f\xf7\x89\x1c\xab\xef\x3c\x0a\x0a\x55\xae\x8f\x1c\x96\xa0\x99\x04\x77\x03\x24\xea\x96\xe2\x29\xf5\x13\x77\x66\x42\x29\xa4\xcb\xc2\xd7\x13\x55\x1e\x8b\x8a\x49\x99\x34\x95\x99\x70\x40\x8c\x52\x30\x39\x81\x28\x01\xb8\x00\x9d\x17\x04\x8c\x20\x42\xea\x20\x01\x33\x65\x0b\x64\xa4\x60\xae\x6b\x5e\xee\x2d\xc1\x48\xd7\xad\xf3\x53\x80\x91\x6e\xbb\xee\xf6\xe0\xbc\xd0\x82\x6f\x1b\xaa\x80\x47\xa9\x03\x9b\x85\xf7\xd7\xba\x26\x3c\x1f\x00\x5f\x44\x58\x64\x0c\x01\x47\x20\x82\x98\x1d\x6a\x79\x08\x99\xeb\x90\x0f\x8d\xf0\xc0\x4d\x45\x33\xc0\xa5\xd3\xe5\x3a\x30\xef\xb7\x18\x27\x46\x8d\x7f\x09\x06\x6a\xef\x5e\x95\x97\x1f\x37\xca\xa5\x10\x2c\xb5\xc6\xea\xb5\x37\x47\x47\x87\x4f\xb8\x95\xab\x3d\xbe\xb9\x00\x1a\x42\xb7\xfa\x78\x3f\x1a\x30\x81\x23\x02\xa1\xd1\x33\x39\x97\xe6\xda\x96\x99\x0a\x1e\x62\x68\x3d\x5c\x36\x2b\x2a\xc1\x2f\x10\xa9\xe6\xe5\x66\x63\x8e\x96\x79\x84\xba\x7c\xf8\xd2\x7a\xfc\xea\x60\x26\xe3\x22\xfe\xef\x9a\xf1\x7b\xe0\xd6\xd5\x74\x03\xee\xc4\x39\xd8\x4e\xa1\x2c\x89\x85\x63\xe4\x7f\x37\xa2\xba\x21\x29\x1f\xc6\xee\x52\xdf\x6d\xe0\x29\x02\x32\x85\x90\x6d\xa5\xea\xa3\xe5\xe1\x33\x91\xcd\x3b\xee\x81\x0f\x62\x6a\xb3\x01\x54\x60\x58\x8f\x8b\xe7\x39\xac\x0d\xe8\x69\x8c\x35\xe9\xa2\x18\xae\xd2\xb3\xea\xa2\xdd\x10\x65\x25\x0f\x6e\x35\x14\x50\x91\xf1\xfd\x87\x0f\x79\xc1\x9e\xe5\x82\x1d\x90\x71\x06\xcf\x2f\x2e\x6f\x43\x2f\x1e\x17\xf0\xf8\x30\x9a\xb1\xe8\x1e\x92\x51\x90\x63\xe3\x5e\xba\x62\x4d\xe3\xe5\x50\xe4\x65\x21\xb4\x74\x2e\xa9\xa5\xc7\xdd\xf4\xd8\xb3\x32\x25\x31\x57\x8b\x84\x2e\xc1\xf8\x2f\x30\x8c\x2d\x77\x1c\xf8\xf8\x4f\x43\xc9\x9b\xd9\xb8\xa0\x6e\x85\x65\x51\x4e\x48\x84\xbf\xdc\x24\x7c\xd1\x46\x1f\x92\x5d\x27\x13\x6d\x8d\x84\xba\x4d\x30\x53\x53\x05\x96\xc0\x25\x8d\x3b\x1a\x7a\xb5\x7d\xb6\x74\xb9\x34\xe8\xf0\x9d\x0b\x12\x07\x3d\x70\xe8\xaa\x1a\x9a\xbf\xb1\x64\x16\x4b\x1f\x58\x3c\x14\xc5\x7c\x74\x7b\xcf\xe6\xbb\x4c\x72\x64\xfe\xdd\x90\xb8\x5b\xe7\x56\x66\x8f\x3e\xe4\xe0\xe5\xe8\x3b\x3e\x10\x7a\x45\xa5\x80\xfa\x92\x80\x4f\x00\x69\xdf\xda\x1e\x96\x97\x02\xb0\x38\xde\xb6\x50\x47\xc1\xf5\xe4\x09\xd3\x67\xdb\x22\x14\x87\x0f\x10\xb5\x01\xa3\x95\xd4\xa5\xba\x36\x86\xc2\xe5\xb8\x4c\xb2\x04\xe1\x95\x1a\x56\xcb\x25\xdf\xbb\x68\xbc\x97\x8b\xca\xf4\x3a\x37\x09\x4a\x27\x78\x0f\x91\x4b\x4a\x88\x96\x79\x8d\x56\x20\x5d\x26\x54\x06\x6c\xd8\xa1\xa6\x43\x26\xd9\x94\x69\x62\x44\xa2\x38\x4b\x30\x65\x03\x7c\x7f\x90\xc8\x4f\x93\x84\x70\xad\x86\xc2\xe3\x0e\x20\x8a\x24\xdc\x52\x2e\x47\x2e\xb6\x62\x2a\x74\x01\xcd\xda\xda\x5a\x70\x77\xf1\x88\xeb\x70\x44\xe0\xd3\x5a\x86\x48\xc3\x8b\x05\xa3\x18\x5f\x6c\x8f\xa1\x08\xe5\xd4\xf2\x26\xd8\x60\x5c\xa8\x78\xb4\x8b\xb8\xd8\x66\xd2\xc5\x8a\x57\x9d\xb7\xe4\x88\xf4\x70\x76\x46\x48\x75\x65\x7f\x70\xb4\x36\xab\xc9\x86\x7d\x18\x49\x50\x2b\x5f\xb9\xd4\xcb\xfa\x0b\x9a\x6a\x1e\x65\x09\x4d\x93\xa5\x2b\x57\xcc\x27\x41\x05\x23\xd8\x03\xcc\x3a\xb7\xa5\x91\x01\x8c\xdd\x9a\x8b\x15\x9d\xb3\x20\x9b\xc6\xaa\xc4\x49\xe0\x6e\x42\x28\x3d\xf4\x63\x98\xb6\xbe\x3b\x22\x67\xe5\x7a\x55\x70\x26\x02\xb4\x1a\xae\x90\xfd\xf9\xf1\x06\x61\xe0\x58\xf7\x8a\x4f\x8c\x18\xfe\x4d\x70\xea\x9a\x6a\x29\x52\x75\xdf\xd1\x97\xe5\x30\x4f\x57\x87\x30\xd5\xa6\x81\xdc\x42\xbd\xbd\x82\x87\xcb\x1f\x88\x86\x01\xba\x9b\xa1\xe3\x20\x43\xa4\x9f\x0d\x06\xfa\x39\x28\x68\x57\x1e\xec\x7c\x45\xc1\x24\xd8\xc7\x8e\x43\x0d\xc0\xcc\xbb\x0f\x34\xa0\x9c\xd0\x73\xd9\xb8\xb2\xeb\xd5\xde\xcf\x05\x58\x71\x62\xc6\x65\x54\x0e\x86\xbe\xee\x52\x4d\x5c\x18\x83\xc5\x1f\x07\xb0\x48\x7f\xd8\xc6\x8c\x24\x5c\xdc\xbb\xbc\x33\xb3\xf3\x07\x84\xe6\xad\xc3\xe1\xc3\xd1\x23\x31\x37\x88\x35\x75\xd0\xaa\x5b\x48\x3a\xed\x62\xb7\xeb\xc5\x75\x37\x92\x4e\xe8\xb9\x95\xca\xb1\xc1\x3c\xda\x6f\xcb\xca\xe8\x2a\x2f\xc1\xba\x90\x2a\xbc\x5f\x82\x38\x0f\xcd\x7d\x2d\xd1\xc6\xf5\xbd\x9a\xd1\xfa\xf2\xd3\xeb\xe1\xc2\xef\x2e\xce\xfa\x1f\x06\x17\x45\x8c\xef\x3f\xdf\xf5\xef\x8a\xbf\x5c\xdf\x5d\x5c\x0c\x2e\x3e\x86\x3f\xdd\xdc\x9d\x9e\xf6\xfb\x67\xc5\xf7\x3e\xf4\x06\xe7\xa5\xf7\xcc\x4f\xc5\x97\x7a\xef\x2f\xaf\x4b\xa8\xe2\x37\x3f\x0f\xae\xae\x8a\x3f\xdd\x0e\x3e\xf5\xcf\x46\x97\x77\x05\x60\xf2\xb3\x5f\x2f\x7a\x9f\x06\xa7\x23\x37\x1e\xfb\xa4\x16\x5b\x3c\x9f\x5a\xed\xea\xed\xc2\xb7\xbb\x31\xa0\x7c\x8f\x4c\x52\xce\x44\x9c\x2c\x31\xf4\xcc\xe9\x23\xa5\x48\x97\x90\xdb\xf3\x39\x93\xd9\x36\x11\x64\x46\x5f\x97\x0f\x2c\x85\x5c\x38\x6c\xcd\x06\xce\x53\x75\xdf\x08\x67\xa2\xd3\xaa\xed\x6e\x65\xa0\xac\x4e\x97\x3e\x14\x7b\x65\x04\xa8\xcf\xa4\xb6\x9d\x90\x05\x4b\x57\x8d\x05\xee\xe2\x34\x5b\x68\x3e\x6e\x8e\x09\x6c\x99\x61\xdc\x5d\xe3\x43\x68\x8e\xfa\x14\xc9\x8b\x7a\x1e\x58\x08\x8d\xdb\x26\x2a\x08\x5a\xd8\xb4\x4e\x82\xff\xda\x45\x52\x2c\xb2\x71\xc2\x23\xc2\xe3\x1c\x50\x04\x63\xe6\x30\x82\x1b\x0d\x3b\x65\x04\x9f\x05\x4b\x41\x38\x32\x32\xe7\x22\x65\x87\x34\xd3\x33\x57\x74\xd1\xd7\xe9\x47\x44\x1d\x16\xa5\x4c\xbb\x3a\xd0\x2c\x76\xc8\xf9\x41\x4f\x30\x18\x9b\xc7\x11\x43\xca\xe8\x51\x80\xa6\xd8\x60\xc9\xc3\x2f\xb1\xf5\x0e\x36\x47\x7c\x7f\xe5\xd2\xd8\x11\x73\x55\xae\x8e\x06\x62\x20\x3e\x74\xf8\xfb\x66\xde\x86\x29\x47\x2e\xde\x10\x37\xd9\x85\x2e\xd6\x4f\x63\x1d\x8d\x85\x84\x52\x8c\x34\xb4\xad\xdb\x47\xa7\x29\x83\xfb\xc2\x3a\xa6\x9c\xc6\x0c\x8e\x54\x1b\xea\x08\x11\x8e\x46\x39\x18\xb3\x19\x4d\x26\x68\x7c\x31\x5b\x93\x9f\xab\x2a\x89\xde\xca\x7b\x26\x6c\x3d\xf4\x17\x61\x87\x02\x65\xed\x3c\xb3\xc7\xdb\x21\x72\x4b\x0d\xd4\xee\x4e\x5d\xd1\x76\x0c\xf5\xc6\xba\xa0\x28\x99\x06\x8f\x31\xde\x32\x07\xd7\x72\x51\xe2\x93\x09\xff\x62\x1a\x1c\x0a\x56\x0b\x2f\x04\xde\x6b\x97\x63\xed\xf9\x32\xc0\x6b\x60\xa2\xea\x3d\x13\x00\xfd\x8f\xf5\xbb\xd6\xd2\x6c\x37\x03\x61\x75\x2f\xaa\xe6\x42\xbf\x62\x60\x69\xe2\x85\x8a\x08\xa1\x2d\xd6\xad\x13\xe4\x74\xdc\xb3\x23\x72\x66\xd3\xef\xcc\x2f\xa7\xe7\x83\xfe\xc5\xed\xe8\xf4\xba\x7f\xd6\xbf\xb8\x1d\xf4\xce\x6f\xda\x1e\xbf\x5d\x84\x05\x97\x4e\x5f\x39\x32\xdb\x73\x88\x63\x7b\xf2\xf2\xec\x14\x3f\xa9\xfc\xd8\xc1\x96\xac\x1f\x3d\x8f\x17\xa3\x98\xab\xc8\x5c\x7f\xcb\x11\x13\x31\xe0\xb2\x6d\x44\xaa\xf5\x4d\x95\x67\xe1\xdf\x20\xfe\x0d\xc7\x41\xf0\xb6\x7b\x70\x14\xed\x9f\x03\x70\x8b\x2d\x7d\x6d\x0e\x7f\x3c\x14\xc1\x6d\x73\xb4\x1e\x8c\xd7\x34\xb7\xdd\xdc\x8a\x4d\x94\xe7\x84\xe3\xe5\x4a\x65\xd4\xf0\x47\xf7\x1a\x64\x7d\x36\xac\x8a\x45\xe2\x08\xc1\xe1\x78\x50\x7e\x88\x18\x6d\x78\x4e\x45\x4c\xb5\x4c\x97\x0d\x53\x6c\xc7\x3c\xc3\x63\x53\x64\xa1\xe1\x95\x6d\x54\x7d\xb7\x0b\xf8\x2a\x15\x65\x52\x42\x08\xb9\xdb\xcb\x9f\xfb\x17\x37\xa3\xfe\xc5\x2f\xa3\xab\xeb\xfe\x87\xc1\x7f\xf9\x14\x7b\x5b\x4c\xbd\x58\xd8\x84\x99\x4b\xd1\x70\x17\x97\xec\x57\xcb\x5f\xb0\xba\x88\x6b\xc7\x22\xca\xf3\xc9\x50\x38\xce\x92\xe6\xcd\xcf\x52\x99\x4d\x67\xf5\x0d\x95\x47\x79\xd5\xbb\xfd\x69\xa3\x61\x42\x2a\x36\x96\x20\xc0\xd3\x56\x05\x15\xe2\x13\xcb\xf7\x10\x89\xa8\x34\x3c\x00\x14\x80\x57\xeb\x6c\xdb\x0d\x1c\x6d\x23\x45\xa5\xca\xb4\x56\x0a\xff\x35\xaf\x37\x11\xd0\x6d\xc0\x37\x0b\xd7\x08\x84\x88\x61\x75\x9b\x4a\x6b\x27\x35\xbf\x15\x6e\xb0\x1f\x0f\x13\x36\x9d\xb2\x18\xc9\xab\xdc\xb0\xb5\xfa\x58\x16\x18\xe5\xf7\x7a\xdd\x2a\xda\x5a\x13\x5b\x5c\xcc\x3e\x2a\xa3\x3d\x03\xbf\xf2\x9f\xd4\xf3\x8a\x53\x57\x75\x2e\x92\x42\x69\x2a\x1a\xa0\x3b\x3b\x56\xc6\xce\x01\xf5\xd3\xbc\x3e\xbd\xb5\x85\x38\x23\x75\x7e\x0e\x36\x71\xdc\xd8\x9a\x1a\xc2\x1a\x37\x82\x5a\x1b\x41\x99\xbc\x9a\x4d\x28\xd5\x1e\x7e\x72\x3b\xc6\x4a\xd5\xc9\xe6\x9f\x83\x71\x11\x41\xcd\x2d\x7e\x19\x1a\x7e\xa0\x52\x40\x63\x98\xda\x8e\x4b\x95\x7b\xe3\x66\x5e\x67\xd9\x57\xee\x76\xc2\x5b\x77\x53\x56\xa9\x4a\x71\x50\xc1\x39\xce\x22\x0b\xd4\x87\xcd\xe6\x7e\x68\x6b\xbb\x72\x17\x6c\x4c\x0e\xc3\xca\xf0\xf1\x21\x64\x12\x0f\x45\x93\x03\xa3\xa6\xaa\x7a\x48\x01\x57\xee\xd6\xda\x0e\x85\xa2\x43\xf8\x9c\x5b\xec\x76\x09\x1e\xc4\xbd\x0e\xc2\x5e\x83\x1b\xdf\xee\xcb\x98\xa2\x87\xb2\x78\x1d\x37\xe5\x7a\x7a\xae\xda\x2d\xda\xa0\x9d\xa3\xbb\x08\x21\x81\x57\xe4\x8c\x2a\x94\x5c\x75\x34\x2b\x0e\x1c\x66\x53\x84\x89\x28\x0f\xd7\x4b\x82\xdb\x59\x08\x5a\xf9\x28\x0e\x50\xa7\x86\xea\xf7\x66\xf4\x21\x2e\xbf\x2f\x32\xd2\x8d\xf0\x43\xe1\xc8\x2b\x2f\xc8\xf7\x80\x61\x25\x34\x13\xd1\x8c\x2c\x12\x8a\x49\x4d\x33\xaa\x90\xa4\x9d\x0f\x9c\x8e\x79\xc2\x35\xe4\x63\xa3\xff\xa8\xb4\xc2\x46\xa3\xa1\xe9\xbd\x43\x82\xa2\x39\x1e\xcc\x2a\xa2\xdf\x32\x88\x2c\xaf\x38\xf9\x9c\x61\x64\xf9\x91\x0d\xbe\x58\xe9\x7d\xca\xc9\xd2\x86\x90\xe5\xdb\x61\x38\x1e\x90\x65\x3e\x97\x6e\x3b\x6b\x5b\xbc\x2a\x7f\x5e\x58\xef\x9a\x8b\xba\x7b\x48\x80\x05\x39\xec\xc0\xe6\xcb\x10\x88\xb5\x27\x6b\x92\x48\xda\x50\x29\xcb\xb5\x8d\x88\x86\x4d\x6d\xc7\x32\x1b\x37\x21\x68\xe1\xa8\x56\xb7\xbe\xca\xc4\xef\xce\xed\xae\xec\x82\x21\x03\xa4\x9a\x69\xde\xcd\xb4\x11\x4c\x9a\x6a\x76\x08\x9f\xd7\x37\x6e\x71\xa3\x5a\xcf\xb9\x42\x68\x39\xf4\xad\xc7\xe9\x32\x22\x6d\x4d\xbd\xe5\x3f\x67\x50\xd3\xf9\x72\x72\x83\x09\xc2\xdb\x10\x99\xe6\x55\x0a\xab\x3f\x89\xe5\x5e\x6f\x8b\xfe\x93\x90\x06\x5a\x27\x87\xd4\xcd\xe6\xc6\x7c\xdd\xfe\x40\x16\xcb\x49\x2e\x52\x2e\x21\x8d\xd7\xd6\xa0\x5c\x01\x35\x52\xdb\xef\x16\x2b\xf9\xb7\x8c\x65\xcc\xd0\xfe\x38\x8b\xa7\x55\xdb\x66\x07\xe9\x2c\x9f\xd2\x4c\x3e\x92\x79\x16\xcd\x88\x6b\x9c\xc4\x2c\xa1\xcb\xc2\xd4\x40\x5e\xd2\x32\x01\xf0\xae\x0d\x91\x84\xa2\x4c\x69\x39\x87\x00\xbb\xbc\xdd\x34\x13\x40\xf0\x84\x6a\x9d\xf2\x71\xa6\x6b\x03\x9f\x0a\x90\x1a\x1b\xfa\xae\x6e\xae\xfa\xa7\x83\x0f\x83\x92\xe3\xa8\x77\xf3\x73\xf8\xf7\xe7\xcb\xeb\x9f\x3f\x9c\x5f\x7e\x0e\x7f\x3b\xef\xdd\x5d\x9c\xfe\x34\xba\x3a\xef\x5d\x14\xdc\x4b\xbd\xdb\xde\x4d\xff\x76\x8d\x5b\xa9\xda\x6b\xf3\x46\xd0\x00\xf1\xc3\xc8\x2e\xd6\x70\x09\xce\x3e\xa7\x5d\xda\x5e\x4f\x48\xcf\xe1\x9f\x84\x35\xc2\xa8\xf3\x02\x82\xf7\x1a\x8b\x96\x59\x67\xe1\x19\xd5\xd4\x16\x81\x3c\x22\x3d\xe2\x8a\x79\x42\x10\xa6\x32\xc2\x82\x05\x87\x30\xbb\x83\x4d\x18\x89\x21\xca\x35\xb7\xbc\x0e\x85\x9c\x58\x58\x96\x84\x85\x60\x88\xb6\x74\xfb\xd1\x50\xf4\x1f\x98\xd0\x19\x20\xb5\xd1\x24\x71\x45\x57\xdd\x0b\x41\x12\x95\x1b\xa5\xe2\x73\x9e\xd0\x34\x2f\x19\x70\x69\xdb\x02\x81\xdd\x8d\xd5\xe7\xcc\x57\x71\xa4\x9d\xf2\x70\x37\x20\x30\xee\xd3\xf3\x01\x88\x40\x91\x76\x60\xbb\xae\xf3\xa1\x40\xd8\x0f\xdb\xe3\x9c\x42\x60\xb0\x96\xd6\x9e\x86\xdd\x37\x56\xa1\xbf\xae\x81\xec\xdf\x00\x57\x06\x2d\xcf\x4f\x15\x48\xe3\x07\xe9\xfe\xd1\x17\x3a\x5d\xb6\x96\x6b\x6e\x01\xab\x4d\x81\x6c\x6a\x63\x66\x8a\x65\x04\xd0\xdc\x41\x5c\xeb\x17\x20\xec\xb8\x80\x2e\x6b\x8d\xf7\x46\x77\x06\x78\x70\x0d\xf2\x77\x62\x2e\xa1\xd7\xba\x0e\x61\x8e\x32\xac\xc2\x58\x66\x22\x76\x65\xd0\xe7\x5c\x1c\xcf\xe9\x97\xef\xdc\x4c\x31\xe7\xcf\xe3\x84\x02\x9e\x03\x4b\x8c\x26\xb2\x34\x4c\x6e\xf5\x72\x0d\xc5\x8a\xf5\x5a\x2f\x2d\x3a\xce\x0a\x6a\x4f\xae\xa3\x62\x9c\xd2\x03\x5b\xd6\xed\x5f\x05\xed\x19\x63\xa1\xec\x81\x87\x46\x16\x29\x33\x2f\xfa\x20\xa8\x04\x63\xdb\xfc\xdf\x10\x61\x5b\x28\x1a\x51\xcf\xbb\x43\x2f\xef\x56\xc7\xa6\xd6\xbf\xfc\x04\x70\xdd\xb6\x27\xb3\x67\xe8\x6d\x76\x86\x4e\x1b\x51\x6c\xdd\x68\x66\xb3\xfe\x2a\xc7\x50\x99\x5a\xb9\xa2\x70\x29\x03\xc3\x36\x6c\x85\x43\x97\x83\xac\xff\x8a\x0b\xdb\x91\x40\xc2\x14\x98\x7b\x85\x51\xb7\xd8\xdf\x32\xeb\xb1\xfb\xe1\xfb\x6e\xf7\xac\x4e\x97\xc4\x21\x99\x86\xd1\xe9\x36\x39\xc3\xde\xb9\x30\xae\x4c\xf0\x3a\x28\x90\xeb\x4c\x98\xab\x78\x17\xc1\x0e\xed\xbd\x59\xa5\x4e\xed\x9f\x6b\x83\xdf\x9d\x21\x36\xc5\xf7\x9f\x0c\x3b\xe9\x97\x12\x64\x92\xed\x0e\x42\x5f\x6d\xeb\xe1\x85\x36\xa6\xd1\xfd\x23\x4d\x63\xb4\x15\x42\xf4\xc1\x11\xf9\x49\x3e\xb2\x07\x96\x1e\x90\x88\xa5\x9a\x5a\x34\x05\x05\xee\x57\x38\x50\xb6\x9d\xa1\x80\x68\x70\x84\xa6\x10\x50\x4f\x4f\xf3\xe9\xcc\xe8\x93\x81\xf3\x5c\xa6\x86\x1d\x69\x84\xaa\x59\xb0\xc8\xe6\xaf\x37\x2c\xc0\x24\xa1\x0f\x55\x78\x88\x4d\x32\x4d\xc9\xc0\xa7\x00\x39\xef\x94\x43\xec\x5c\x15\xee\x60\x17\xcc\x32\x4d\x4c\x38\x3e\x20\x53\x99\x50\x31\x3d\x3a\x3a\x22\x4c\x47\x47\xdf\x75\x22\x74\xdb\x60\xe8\xef\xf2\x61\x9c\x89\x94\x8a\x25\x4b\x9f\x73\xed\x83\xed\xcd\x32\x43\x70\xbf\xe2\x68\xf2\xa8\x21\xff\x9b\x72\xc6\xea\xf3\x9a\xce\xeb\x35\xd5\xce\xa9\x2f\x0d\xed\x00\x00\x78\x87\x96\xf0\xfd\x7a\xcd\xab\x43\x2a\x97\x2b\xa9\x91\xa7\x74\x35\xc0\xab\x49\xd1\x35\x4f\xe9\x17\xd9\x54\x7b\x6e\x23\x48\x94\xda\x96\x6c\xc2\xf4\x46\xc9\x31\x55\x92\xae\xa1\x38\x9f\xe4\xb6\x4d\xc8\x8f\x4c\xb2\x79\x33\xbc\xc6\xb6\x52\x54\x3e\x48\xfc\xd7\x29\x74\xd7\x5a\x8a\xca\x4b\xec\x39\x7c\x60\x3b\x5e\xb4\x85\x22\x31\x01\xbb\x4c\xb9\x02\x20\x98\x4d\x72\x6c\x7c\x33\xd8\x34\xb8\x6c\x96\x0b\xb4\xc1\x61\xf6\x4d\xb2\xc4\xb4\x21\x67\xe2\xb7\x9f\x28\x14\x75\xc0\xcf\xd3\xcc\x19\xca\x81\x44\x9d\xf7\x08\xd0\x67\x37\x72\x6e\x81\xec\x10\x00\x20\xda\x48\x07\x68\xd0\x55\x84\x97\x64\xe2\x32\x36\xee\x59\x50\xd4\x26\x06\x68\xc4\xc7\x23\xf2\x41\xa6\x50\xb9\xc6\x3a\x6e\xad\x6f\x3d\xbf\xb6\x74\xde\x09\x1a\x88\x1f\x7e\x70\x21\x15\x38\x43\x6c\x02\x20\xe8\x63\x2a\x74\x6d\x03\x79\xc4\x11\xb4\x85\x9f\xfc\x62\x54\xe1\xda\xd7\x6d\xfb\xf0\x2a\xa2\x4d\xf7\x3e\xdf\x10\x5c\x6a\x0b\xa2\x97\xae\x1a\x68\xd0\xc8\xfa\xa0\x0e\x58\xae\xd1\x06\xe2\x40\x61\x1f\x70\xd1\x1d\x8a\xa2\x59\x76\xa6\xa3\x59\x7e\xfd\x14\x6b\x3b\xd9\x52\x02\x76\x9e\xf3\x1c\x16\x10\xe3\xe5\xc2\xc0\x23\x5b\x3f\xdc\xab\xb1\x52\x30\xb0\xd4\x53\x4d\x62\x19\x36\x4b\xb8\x5e\x1f\xdd\xd1\x11\xba\x62\x1d\xa9\x69\x89\x5e\x7b\x3b\xcf\x82\xc3\x05\xe4\x4a\x8e\x40\x00\x2e\x34\x0e\x05\x63\x8b\x4c\x5f\x06\xb3\x2b\xa6\x56\x0e\x45\xb1\xab\xca\x22\xb9\xf0\x0b\x9e\x32\xc4\xa0\x52\xe6\x0a\xd7\xfc\xc1\x1c\xd4\x2a\x59\x7b\x02\x05\x0e\x50\xa5\xbd\xa1\xc0\x61\x07\x40\x56\xf7\x6c\xa9\x42\x18\x7c\x4b\x51\xa4\x89\x20\xb9\x99\x8f\xab\xf7\xbe\x76\x2b\x60\xe1\x46\x41\xed\xbd\x76\x57\x09\x76\xfa\xc9\x7c\xbc\x22\xae\xab\xd2\xb8\xa1\xc1\x3c\x25\x26\x37\x2c\x59\x36\x91\xaf\xb3\xdd\xc3\x3c\x74\xa3\xa6\x2e\x63\x6e\xa3\x03\xed\xc7\x28\x39\x43\x61\xb1\xee\x02\x97\xa8\x61\x38\xd5\x6d\xb3\x79\x7a\x88\xb0\xb5\x2c\xe4\x65\x03\x0e\xa1\x2b\x20\x56\x5f\x0e\xd3\x55\x51\xb1\x65\xa0\x31\x93\xc9\x19\x72\x6a\x3b\xdc\x30\x1e\xc8\x6e\x6e\x63\x0c\x50\x2e\xc7\xda\x85\xb3\x10\x34\x58\x4f\x01\x45\xe0\x88\x99\xe5\xeb\x89\xda\xf0\x1b\x17\x7c\x73\xd3\x3f\xbd\xee\xdf\x3e\x5b\x8c\x90\x0b\xd0\xe9\x1c\x24\xe4\xc6\x79\xd6\xff\xd0\xbb\x3b\xbf\x1d\x9d\x0d\xae\x9f\x22\x4a\xc8\x3e\xda\x20\x4c\xe8\xc6\x42\x68\x9e\x4a\xa1\xd9\x97\xad\xee\xe4\x34\x13\x23\xda\x21\x5c\xdd\xc3\xd4\xae\x12\x77\xb0\xd1\x2a\x04\xa8\xc7\xe7\xb4\x00\x48\x78\xa3\x79\xc4\xcf\xa0\xbe\xe9\x84\x27\x09\xe4\x8b\x79\x1b\xab\x4d\x02\x31\x8b\x0a\xfc\xc7\x15\x6a\xb3\x3c\x75\x28\xc6\x05\x0c\x54\xb0\xfb\xcc\x8c\x26\x84\x99\x62\x0b\xb3\x00\x29\x87\x74\xa1\x55\x28\xa1\x53\x2e\x58\x3e\x0c\xac\x7d\x94\x09\xd2\x08\xed\x66\x37\xf1\x29\xd3\x01\xad\xe0\xd5\x56\xd6\x74\x14\x57\xa0\x4f\x27\x7e\xba\x87\x7e\x86\x78\x88\xb9\x40\xc1\xb4\x70\x9a\x6f\xea\x49\xf7\x38\x3f\x02\xb0\xee\x66\x27\x29\x18\xa2\xa1\xbc\x50\xbe\x91\x76\x23\x10\x9f\x3b\xb7\x50\xdf\x73\x0c\xa5\x90\x93\xd2\x3a\x1b\x56\x68\xd6\x9a\x83\xb9\x9a\x62\x99\x16\x12\x25\x99\x32\xda\x3f\xea\xce\xbd\xcf\x37\x43\x81\x85\x22\xed\x2d\x64\x31\x9c\xb1\x0b\x74\xe4\xcb\x42\xff\x4e\x42\x09\x39\xd8\xb7\x68\xa8\x9c\x33\x2a\x14\x16\x7f\x4b\x12\x96\xe6\x94\x81\xe3\x61\x2c\xb6\xf0\xff\x50\xc4\x2f\xff\xde\xd6\xff\x92\x70\x6a\xcd\x78\xed\x53\x5b\xff\xaa\x4c\x4f\x4d\xe9\x88\x10\x25\xf8\x94\x94\x53\x13\xac\xde\x96\x8a\x6c\x80\x65\x2d\x11\x15\x43\xc7\x5b\xd1\xd2\x2d\x36\xb7\x27\xa5\x1d\x92\x52\x8b\x7b\x3d\xbc\x25\xc8\x4c\x1a\x06\xea\xe1\x97\x73\x5f\xa3\x4f\x87\x4e\x20\x08\xc6\x2c\x63\xed\xad\x93\xa3\xe6\x6c\xe4\x7d\xbc\xb8\xbc\xe8\x87\xbe\xc3\xc1\xc5\x6d\xff\x63\xff\xba\x90\xfa\x76\x7e\xd9\x2b\xa4\xaf\xdd\xdc\x5e\x97\xb2\xe3\xde\x5f\x5e\x9e\xf7\x2b\x4e\xc8\xfe\xed\xe0\x53\xa1\xf1\xb3\xbb\xeb\xde\xed\xe0\xb2\xf0\xde\xfb\xff\x9f\xbd\x6b\xeb\x71\xdb\xc8\xd2\xef\xf9\x15\x44\x5e\xec\x00\x72\x1b\x33\x83\x01\x16\x7e\xeb\xb5\x9d\x1d\x05\x8e\xdd\xdb\x6e\xc7\xbb\x3b\x1c\xc8\x25\xb2\x24\x71\x5d\xaa\x52\x8a\x64\x77\x14\x60\xff\xfb\xa2\xce\x39\x75\xe3\x9d\x92\xda\xf1\x64\xf2\x10\x04\x68\x8b\x75\xaf\x53\xe7\xfa\x7d\xcb\xb7\xd7\xb7\xff\x1d\xfe\xe5\xf5\xed\xed\xbb\xdb\x46\x7f\x1f\x5e\x0e\x87\x33\xa3\x69\x74\x9b\xe2\x3e\x5a\x12\x00\x08\x75\x2d\xe9\x1d\x2b\x3f\x5f\xb8\xe8\x13\x8a\x9c\xe7\x14\x6d\x76\xd6\x68\x46\x5e\xa9\x9c\xaf\x4e\xab\x07\xed\xab\x69\xed\xec\x47\xf3\x4a\x1f\x57\xac\xaa\xf8\xfe\x70\x1e\x1d\xe9\xf4\x2b\x32\xaf\xd4\x14\xe4\xcb\x84\x52\xd3\x68\x57\xbf\x9e\x52\xd3\x8e\x2a\xd2\x76\xa9\xe9\xf2\xed\xf2\x6e\x79\xfd\x66\xf9\x3f\x8d\x16\x3f\x5e\x2f\xef\x96\x6f\xff\x63\xf5\xfd\xbb\xdb\xd5\xed\xeb\xf7\xef\x3e\xdc\xbe\x7c\x3d\x9c\x50\xde\x1e\xbd\x37\xda\x9e\x25\x61\x3f\x2f\x92\xbb\x40\x9d\xc6\xb8\x00\x59\x6b\x04\x75\x09\xa7\x8a\x89\xe2\xd7\x42\x6e\x17\x40\x98\xf9\x22\x79\xad\xf5\x72\xcf\xb6\xfc\xa6\x16\x02\x8c\x5e\x0c\xc2\xbd\xd4\x9c\x55\xf0\xb3\x1b\x95\x2f\x83\xef\x20\x73\xa0\x73\x1a\xd0\x3f\xd1\xcf\x62\xf7\x0b\xea\x3f\x30\xf1\x5c\x56\x02\xb9\x38\x1c\x39\xf8\x0b\x40\xdf\x57\x1b\xe2\x51\x5a\xb8\x18\x67\xf2\x73\xad\x2a\x96\xf0\x5f\x32\x28\xa2\xe8\x3e\x27\x6f\xd4\x59\xf4\xb1\xe3\x4c\x47\xdd\x77\x7a\xbc\xee\xac\xdb\x92\x47\xa8\xb7\xd5\x1c\xf6\x46\x9a\xe5\x8f\xf8\x29\x11\x36\x76\x2b\x44\x95\xb8\x40\x52\xd7\x1b\xb5\xed\x46\x2e\x82\xaa\x37\x82\x5b\xf2\x34\x33\x90\x22\xaa\xb6\x49\x59\xc8\xcf\xa9\xfc\xb8\xe3\x32\x51\xb5\xc6\x3f\x55\x4a\x03\x42\xd7\x46\xd4\xe5\x8e\x03\x4d\xf4\x22\x79\xe0\xc9\x9e\x1d\x31\x55\x74\xaf\x74\x80\xe5\x04\x47\xc6\x1c\x4e\xf8\x5a\x14\xd2\x48\x8b\x43\x61\x43\x08\xcd\xad\xbf\x44\x88\xd1\x96\x10\xb1\xf3\x2b\x7c\xa7\xe5\x49\x3d\xec\x38\xa4\x88\x78\xef\x96\x35\xe3\x48\x72\x03\xe8\xa6\x52\x9f\x8d\x65\x66\x8b\x0d\x9f\x58\xf0\x0e\x58\xee\x7b\x55\xe4\x49\x5e\x1f\x44\x91\x39\xb9\xfb\xa0\x74\x6f\x45\x35\xc6\xba\x66\x54\x54\x37\x22\xb8\x43\x13\xeb\x08\xa4\x05\xfe\x8e\x81\xda\xea\x47\xae\x2e\x0f\x48\xcf\xea\x92\xeb\x67\x95\x2e\xb6\x5b\x08\x1c\xd8\xb0\xfc\xd7\x5f\x7e\xee\xcb\xdb\xce\x8f\x40\x87\xf9\x61\x42\x6d\x8b\x8c\x89\xd0\x05\xed\x75\x57\x57\xdf\x6a\xaf\xfd\xa1\xd6\x48\x37\xbe\xf1\x35\x86\xbd\x79\xfb\x07\xcd\xa1\xc4\x7a\x85\x3c\x72\xe7\xf3\xdb\x2d\x37\xc8\xaa\x4d\x44\x2c\x3e\x81\xd2\x72\x59\xd9\x17\xce\xf7\x6d\xa1\xdc\x10\x72\x1f\xc8\x2b\x13\xf5\x00\x4c\xa8\xc6\x1a\x31\xca\xb9\x99\xa9\x54\xa0\x9b\x38\x78\x37\xe7\x45\xb6\xe8\x7c\x1b\xe7\x2e\xc7\x24\x97\x6d\x71\xcf\xe5\x57\x00\x17\xe0\x3d\xed\x66\xea\xee\x96\x76\x8a\xc8\x73\xb1\xde\x5c\x10\xe8\x54\x8d\x78\x38\xa8\xb7\x15\x6a\x8d\x54\xac\x2d\x14\xb8\xf0\xd5\xe9\x03\x94\xba\xe7\x5a\x17\xf9\x9c\xdb\x6a\xd7\xe4\x9d\xfb\x74\x68\x80\x0e\xe2\xdf\xf5\x04\x17\xa5\x30\xb6\x68\xd5\xd4\x66\x9b\x09\x24\x63\xaa\x33\x54\x76\x95\xd6\x5c\xf5\x8f\xab\x85\x77\x80\x42\x0f\x35\xc0\x19\xd1\x9e\xcb\x59\x1b\xdd\x4e\x49\x1c\x59\x4b\x9f\xc5\x38\xbc\xc9\x67\xe4\x95\x61\x12\x9c\x4b\x2e\x9b\x53\xa3\x6b\xb7\x0e\x1d\x2b\xc0\xc7\xe1\x36\x31\xf2\x78\x4f\xda\xd1\xe6\xba\xdf\xf1\xfd\x41\xb0\xea\xc2\x38\x8a\xe7\xdf\xa8\xba\x52\x01\x3b\xb2\x99\xcf\xd2\x91\x24\xdb\x58\x1a\x88\x8d\x65\xde\xc9\xb3\xe6\x45\xaa\xbd\x9a\x7d\xcf\x77\x47\x96\xc5\x2c\x18\xc8\x80\x32\xf8\xc8\x2b\x97\x56\x23\x2c\xee\x17\xa0\x0d\xb8\x59\xc7\x79\x85\x36\x75\xc8\xe5\x82\x03\x48\x88\x63\xee\xde\x1f\x94\xe4\x92\xbc\x5f\x52\xa5\x92\x1a\xb7\x88\xb7\x8e\x41\x2f\x0a\x32\x2e\xc8\x48\x25\xba\xfe\x52\x89\x7b\x72\x64\x07\x90\x0f\x80\xfb\x66\x06\xf8\xd2\xbc\xf7\x46\xbb\x65\x32\x77\x11\x27\xf0\xc1\x35\x60\x5f\x35\xdf\x16\x65\xc5\xc3\xb8\x6c\xf8\xfd\xc5\xd0\x26\x23\x85\x78\x68\xe9\x7b\xd1\x26\xc7\x5e\x36\x73\x6b\x67\x8c\xe7\x78\xe0\xf9\xd2\x7d\x37\x7c\x18\xa2\xe4\x8a\x3c\x10\x12\xd1\x2b\x80\x67\x80\x13\x1d\x35\x64\x5a\x97\x0e\xac\xc1\x6d\x92\xe3\x64\xb4\x60\x70\xb0\x45\xdb\x9a\x69\x26\x2b\xce\xcb\x54\x62\x16\x3a\x96\xc8\x44\x49\x71\x9b\x08\x5e\xd4\xeb\xda\x99\x2a\x2b\x4c\xc0\x85\x4f\x36\xac\x10\xb5\xee\x55\x21\xf1\x54\x9e\x94\xed\x33\xb4\x4a\x2f\xa1\xd9\xa4\x6b\xd3\x5c\xea\x40\x70\x8b\x5c\xd2\x9a\xa5\x8d\xb3\xd4\x76\x71\x64\xbd\x67\x0a\x56\xe4\x4e\xdf\x6f\xe7\x3f\xe8\xc9\x26\xf8\xb7\x72\x75\x50\x33\x24\x1e\xb1\xd5\x74\x0b\x1f\x56\x7e\x86\x3c\xaf\x31\xc5\x78\xdc\xdb\xf5\x97\x3f\x8f\xd8\x18\x43\x52\x07\xce\xdb\x8e\xc9\x1c\xa8\x67\x59\xd5\x78\x3b\xdc\xe9\x05\x60\xc7\xca\x8a\xb5\xfe\x40\x18\xf8\x95\x57\x59\x2b\x28\x39\xb2\x54\xcd\x68\xe6\x48\x70\x2b\xea\x25\x8e\x31\x76\xf9\xb6\xfd\x9b\x4c\x00\xa3\xee\xaa\xf5\x1f\x9e\x4d\xb1\xbd\x7c\xd5\xe5\x54\xc4\x55\x4f\x35\xdc\x96\x71\x19\x5d\x22\x7a\x79\x1c\xc8\xea\x99\xd7\x08\x62\x12\x46\x0c\x85\xb5\xad\xa9\x24\xfc\x61\xf8\x21\x82\x58\x63\xfe\x76\x99\xfc\xc9\x05\xaa\xff\xf4\x57\x9b\xbd\x7b\x4c\x36\xb0\xd6\x90\x22\xaf\xb2\xac\xd6\x80\xf8\x6a\x49\xa9\x39\xbe\x2a\x73\x20\x08\xae\xf1\x2d\x2d\x41\xb8\x40\x26\x70\x3f\xbf\x2a\x19\xcd\xd1\xa4\xee\xc0\x56\x42\x24\x65\xf7\x8a\x11\x5c\x91\x2e\xab\xa4\xac\xf8\xa1\x53\x9e\x44\xea\x52\xfc\x10\x9c\x55\x65\xda\x85\x79\x3c\x5e\xcd\xfe\x23\x3b\x0c\x21\xd2\x9e\xdd\xe2\xd8\x36\xb8\xf4\xc2\xe6\x2b\x07\x68\xac\x80\xc2\x43\x48\xb2\xed\xd5\x73\x15\xf9\x5f\x24\x8d\x7e\x0e\x72\xbf\x03\x66\x20\xce\x8b\x21\xd9\x16\x7f\x3a\x3f\xa7\xcc\xe7\x8f\x13\x1a\x3d\x36\xb8\x46\x34\x85\x10\x00\xe2\x14\x80\x8e\xe6\xc6\xd8\xb6\x06\xb6\xe3\xcc\xe2\x74\x8f\x27\xf2\x05\x6b\xd3\x7f\x6a\x2d\xd1\xdc\xd2\xf4\xfb\x10\x8b\x03\x54\x2f\x9f\xfb\x33\xc9\x63\xe1\x4a\xd2\x7f\x8a\x01\x55\xa2\x25\x56\xc5\x24\xe4\x99\x36\x37\x36\xbc\x50\x39\x97\xaa\xe2\x09\x4b\x64\x21\x9e\xcb\x5a\x88\xe7\x6f\x95\x34\x82\xb9\x2c\xb6\x98\xaf\x04\x1e\x6b\x24\x96\xf2\x04\x45\x51\xa8\x22\xb8\x02\x20\x9c\xcd\x90\x30\x8a\x52\x19\x89\x69\xb6\x40\x1c\x53\x69\xbe\x20\x8e\x04\xe0\x75\x29\x5c\x6d\x03\xf6\x66\xe1\x6c\xa9\x2f\xa8\xf3\x3d\x86\x8d\x77\x1c\xb0\x21\x04\xd8\xb3\x6a\x0a\xfe\x60\x70\xff\x6a\x18\xdc\x95\xb6\x9e\xff\x19\x5c\xee\xfd\x97\xea\x64\x32\x75\x67\xe8\x38\xb5\x75\xc2\x79\xfc\x2d\xc3\xb1\x8f\x89\x07\xec\xc1\x7f\xe9\x6f\x73\x11\x7e\xed\x4a\x5d\x22\x2a\xf5\x33\x16\xfc\xaf\xd4\xc6\x32\xb0\x9f\x0e\x52\x30\x31\x2c\x10\x96\x59\x85\xd0\x04\xed\x43\xd2\x67\xf7\x2a\xb9\x22\xcb\x78\xda\x60\x9b\x0b\xf6\x4e\x7e\x8f\x9f\xdf\x28\x51\x64\xc3\xb1\x14\xfb\x34\x01\xd5\x44\x2b\x92\x06\xa4\x2c\xdc\xd2\x3d\xd2\xa0\x30\x48\x50\xf1\xac\xf2\x9e\x9f\xf6\xe4\xe6\xf8\x18\xad\xb9\xe0\x5a\x01\x14\x2c\x4f\xe4\x63\x9e\x15\x48\x36\x87\x42\x3b\x54\xa4\x81\xb7\x01\x5c\x8e\x19\x23\xfb\x22\x1a\x08\xc8\xa6\x87\x9d\x12\x7c\x81\xae\x25\x08\x54\xa4\xf2\xc0\x75\xa6\x8c\x91\x96\xe4\xea\x81\x92\x33\x0b\x91\xfb\x6a\xf6\xa7\x10\x37\x85\xe8\xc6\x77\x04\xd9\xc3\x9d\xeb\xcf\x31\xa6\x8c\x1f\x5b\x0b\xdb\x79\x2e\x1c\xcc\xa5\x02\x21\x43\xa7\xe0\x23\xc5\x52\x71\x29\x88\xe4\xa0\xe1\xc4\x31\x8b\x1e\x8d\x67\xde\x0e\x73\x57\xa8\x0c\x0f\x0c\xd2\xeb\x54\x8d\x7d\xa5\xaa\x99\xe6\x52\x42\x01\x06\xe2\x35\xa1\x5f\xdf\x18\x88\x10\xef\x66\xa8\x86\xf8\x74\x68\xda\xd4\x54\x7a\xb7\xd5\x93\x32\x54\x49\x3a\xf7\x19\xeb\x0b\x0a\x40\xc3\xcb\xf8\x22\x79\x12\x4d\xf4\x09\x24\xe8\x4b\x05\xfd\x91\x83\x22\x5a\x1a\x38\xae\x8b\xa4\xa8\x52\x59\x94\x78\x32\x35\x17\xfc\xde\x8c\x2e\xa4\x4a\xa5\x10\x04\xe1\x28\xb8\x69\x43\xb4\x9e\x51\x49\x40\xee\xd0\x5e\x21\x15\x4e\x87\x89\xde\x0c\x12\x0a\x81\xf9\xa2\x96\x50\xa7\xcc\x7f\x41\x7a\x11\x63\xe8\xa2\x57\x3e\x37\xdd\x79\xd6\x1b\x02\x94\x03\xce\xed\xa3\xaa\x91\xa8\x2c\x27\xea\x5f\x5b\xb9\xea\xb2\xee\x0a\x54\x46\xd7\xaa\xda\x45\x1b\x41\x88\x53\x78\x93\xb8\x31\xb1\x2b\x60\x72\x83\x75\x95\x9c\x55\xbb\xa4\xa8\x16\x90\x2e\x69\x05\x47\x2a\x59\x4e\x80\x9d\xd4\x5c\xe1\xa8\x96\xfb\xf7\x99\xfe\x7d\xad\xee\x87\x74\xba\x73\x83\x71\x78\xab\x0f\x82\xc9\x15\x0a\xd4\xdf\x20\x1c\x17\x80\x81\xf5\xf9\xb1\xea\xf5\xca\xf1\x70\x5c\x64\x9c\x4e\xd3\xb9\x8d\x20\xfa\x8c\x0a\x67\x3b\x5a\xe0\x61\xf0\x25\x5e\x56\x33\x87\xba\x75\x1b\x16\x28\x84\x11\x16\xe4\x25\x9b\x2e\x05\x7c\xa4\x8e\x35\x1c\xc4\xf6\xb4\x8e\x85\xea\xec\x09\xf8\x5a\xc3\x46\x53\x76\xbe\xf1\x86\x34\xb7\x7d\x7e\xc4\xa2\xa5\x30\x9d\x14\xb5\x18\x19\xd6\xe3\x46\x2e\x7a\x5d\x08\xed\x08\xc6\x47\x47\x5a\xe6\x7c\xca\x98\xa2\xc2\x93\x52\x19\xbb\xc6\x7a\x38\xba\xc1\xde\x42\x13\x44\x75\x84\xbc\x2f\x99\xf5\x1e\x53\x42\x4c\xae\xcc\x45\xf6\xb4\x64\x29\x1d\x1f\xf7\x22\x49\xbf\xc5\x93\x55\xa6\xdf\x22\xda\xbd\xc5\x0c\xb4\xd4\x6c\x74\x7f\xf2\x88\x1d\xd4\x79\xda\x31\x37\xc3\x5f\x38\xa2\x0c\x9b\xe5\xcd\xfb\x2d\x39\xd1\x82\xb2\x65\x4c\xdf\x5a\x63\x03\xf4\x4c\xa2\xcd\x79\xb4\x84\x69\x80\x6b\xab\xeb\xac\xf2\x13\x76\x14\x53\xff\x6e\x3f\x34\x4b\x74\xa8\xe9\x45\x75\x94\x4e\x4a\xa7\xd2\xb6\xe6\x39\x68\xaf\x85\x68\x35\xd5\xa6\x56\x0b\xce\x2a\xf8\xa8\x2d\xa2\x08\x00\xd5\xf8\x6a\x84\xa6\x1c\x00\x9f\xf7\x9a\x7b\xb4\xd3\xab\xc4\x93\xfb\x81\xea\x31\xc0\x23\x26\x84\x25\xd1\x42\xad\x2d\x60\x4e\x2a\x6b\x48\xf3\xdf\xd4\x46\x1c\x05\xb5\x10\xa9\x04\x42\xb9\x4d\x01\x09\x19\xb4\x2e\xa9\xfc\x51\x51\x4d\x05\xa8\x57\x76\x92\x36\xb8\x4f\xcb\xf6\xc4\x01\xab\xd0\x1f\x5e\xc1\xb3\xbd\xc1\x30\x73\x03\x69\x17\xf2\x87\x20\xcb\x71\x61\x74\x0f\xed\x27\x95\x31\x99\xca\xff\x35\xcb\x63\x79\xd2\x68\x5b\xd5\x06\x2f\xb1\x45\x26\x4e\x9e\x7e\xc2\x46\x9f\xfe\xf5\xbb\x4f\xdf\x21\x07\x65\x5d\x02\x96\xd5\x22\x7e\x42\x5c\x59\x5c\x2d\x04\xe4\xd8\xda\x19\x6c\xb4\xda\x63\x15\xaf\xeb\x62\x90\x37\x85\xac\x9c\x99\x74\x52\xa3\x44\x52\xde\xf3\x7a\x9d\x64\xac\xca\x76\xcf\xac\x36\x17\x72\xc7\x05\x64\xfa\xa0\x39\x1a\x5d\xab\xbb\x32\xcc\x58\x60\x7a\xef\xb0\x62\xa3\xf3\x62\xa6\x00\x71\x93\xbb\xe8\x54\x86\x88\xcc\x78\x38\x3d\x4c\xab\xd7\xf4\xdc\xcf\x2d\x52\x8d\x77\x97\x92\x8b\x58\xb2\x3d\xcf\x93\x14\x81\x1d\xd2\x6f\xed\xf6\xa7\xf2\xb0\xbe\x12\xc7\x4d\x75\x05\x45\x2e\x57\x66\x59\xae\x00\xcd\x61\xe4\xa5\x5b\xe5\x6d\x53\x69\x64\xb9\x7b\x8d\xad\x6e\x7d\xc7\xad\x8e\xeb\x69\xba\xd2\x82\x2e\x1e\xb7\x3e\xef\xe3\x18\x50\x5c\x59\x08\x74\x5b\x44\x0e\x66\x94\xdc\x40\xb1\xf2\xf7\x13\xc9\x58\x92\xb2\x62\x55\x91\x21\x2a\x9b\x64\xe2\x08\x69\x3d\x8b\x54\xe6\x85\x46\xd3\x9a\x65\xc7\x4c\x14\x19\x11\x7d\xc5\xba\x10\xbf\xe7\xb2\x7a\xfd\x4b\xc5\xb5\x64\xc2\xe6\x0f\x2d\xe5\x46\x9d\xa3\x10\x71\x6a\xef\x3c\x84\xeb\x65\xac\xf1\x40\x49\x3a\xb6\xeb\x1d\x8c\x99\x46\x36\x6e\xb0\xaa\x6d\xbe\x81\x3b\xe2\x0b\xc2\x87\x61\x50\xb1\xf2\x9f\xf5\x5a\x09\x9e\xfc\x5c\x73\x7d\x4c\x96\xaf\x12\xa5\xa1\xb6\xb6\x52\xf4\xa7\x22\x9f\x05\xe6\x8a\xe4\xb4\x14\x0a\x74\x54\xb8\x0d\x7d\xa8\x35\xe2\xd2\xc3\x57\x2b\xed\xc8\x4e\x03\x67\x67\x3c\x83\xae\xdd\x8a\x4a\x50\x00\x92\xef\x4b\x29\xaf\x7d\xc5\x2f\xdd\x77\xe5\x43\x8f\xe2\xea\x18\x34\x63\x1f\x67\xf3\x52\xd3\x3a\xe9\x53\x39\x8f\xb0\x3a\xd7\x7a\x1f\x94\x2e\xb6\x85\x64\x95\xd2\xc9\xd3\x1b\x5b\xd2\xf6\x9d\x2b\xc3\x86\x55\xec\x1e\x46\xc3\xbb\x3a\x67\x89\xd0\x33\xdb\xad\x1a\x41\x34\x99\xe7\xab\x76\xcd\xc1\x5c\x48\xd9\xd1\x6c\x09\xf3\xab\xb2\x62\xfb\x43\x08\x29\xe9\x90\xce\x68\x65\x04\x2e\x42\x62\x07\x06\x46\x78\x51\xfa\xdc\xb5\x54\x92\xeb\x0a\xf7\x4d\xe9\x0e\xac\xf4\xe6\x2c\x41\xcc\xaf\x4e\xac\xe8\x20\x76\xd2\xf1\xaf\x07\xdd\xfb\xb7\x6f\xac\x47\xcf\x3f\xdb\xd1\x3b\x08\x13\xe5\x32\x03\xa9\x0a\x99\xeb\xbb\x28\x79\x3e\x95\x3e\x71\xfd\xa5\x50\x75\x9e\x90\xec\xa1\x50\x81\xbe\x4a\x0a\x7e\xb5\x48\xca\xbf\xbc\x78\xfe\xfc\xea\xaa\x8f\x2c\x7c\x26\x76\x91\xbb\xdf\xf0\x5d\xf7\x09\x87\x7f\xeb\x2c\x0c\x19\xb9\x5a\x11\x29\xe7\x6a\x9e\x9d\x68\x91\x9f\xe0\xb4\x84\x7e\x94\x38\xed\xb9\xd9\xa5\x23\x2a\x3d\xa7\x3b\x9b\x5f\x3b\xdc\xd5\x81\x69\x2e\xab\x15\xf4\x38\xaf\x33\xe8\xe4\x06\x3e\x8f\x0a\xde\x26\xd9\xc3\x7f\xbf\x53\xe8\xe6\xb0\x59\xef\xff\x08\x08\x85\x09\x45\xd2\xc8\xf6\xa7\x05\x44\x1d\x03\x97\xf0\x18\x87\x2a\x4d\xe8\x84\xd5\x0b\x26\x14\x09\xa6\x49\x13\xf2\xa3\x47\x00\x08\xc7\x97\xeb\xf2\x3a\x8d\xa0\xb0\x7f\xf3\x4f\x16\xe6\x4a\xfb\xe0\x44\xc2\xaa\x04\x99\xc5\x7f\xe5\x5a\xf9\x6a\x66\x42\xa6\x0f\x1a\x1e\xa8\x00\x39\xae\x4e\x87\x5a\x42\x0c\x45\x04\xf9\x09\x51\x2e\xe0\x2f\x54\x58\x80\x4a\xd5\xfa\x68\x2b\x41\xfa\xc1\xa9\x57\x27\x70\x77\xb8\xa1\x04\x3a\x4d\x20\x3d\xad\xdd\xe7\x44\xb1\xbd\xa0\xcf\x41\x65\x33\xea\xb7\xd1\x35\xd8\x81\x22\xfc\x00\xe1\xbf\x49\x9a\x3e\xac\x2b\x98\xc4\xdf\xff\xeb\x1f\x57\x7d\x08\x6a\x30\xf4\x93\x19\xda\xbe\xb7\x74\x95\x9a\xb3\xdc\x33\x80\x84\x04\x1f\x63\xe8\x68\xa3\x07\xf2\x0c\x4d\xe6\x9c\x7d\x69\xeb\x2a\x0e\xf7\xc4\x1f\xf1\x22\x0f\xe1\x6f\xdd\x01\xa7\xed\x71\x04\x10\x6a\x93\x80\xc5\xd2\xa3\x2d\x5d\xd1\x38\x3b\x7a\x98\xb1\x7a\xdd\xf2\xe9\x0b\xe9\x81\x7d\x35\xde\x53\x86\x6f\x6d\x8c\x1b\xa5\xc4\xb9\x76\x06\x13\x16\x51\x68\x05\x00\x0e\xe7\xe8\x09\x78\x00\x9c\x61\xb1\x7c\xe5\x7c\x5e\xae\x68\x1a\xe4\x74\x00\x9f\x04\x01\x19\x1a\x02\x84\x41\x90\x3e\xac\x3f\x4d\xa1\x3c\x74\xb8\x3d\x67\xa6\x5b\x40\x1b\x18\x2f\x71\xd8\xc4\x2d\xc3\x27\x48\x11\x65\x7e\x8c\x50\x58\xd6\x18\xe1\x2c\x2b\x07\xe1\x16\x1a\x5d\x39\x8b\x27\x2c\x40\x75\xeb\x18\xf4\x6d\xd7\x13\x41\x9e\x8c\xc9\x44\x0f\x48\x2a\x83\xc7\x02\xcb\x4c\x6c\x3e\x8b\x5b\xb5\x2e\x43\x28\x3a\x86\x67\x1b\x42\xe7\xa0\x0c\x0c\x9a\xb1\xaf\x42\x30\x0f\xf0\xc6\x66\x6a\xbf\x36\xc6\x08\x82\x70\x51\x38\x04\x5e\xb9\x6b\x5b\x71\xea\xca\xe5\xec\x6b\x85\xf8\x7d\x8d\xb5\x77\xb9\x24\x61\x3d\x5c\x28\xb2\x3a\xa3\xe8\x3d\xaa\xc5\x65\x01\x11\xba\xe5\xec\x75\x73\x06\x80\x53\xff\xc0\x8e\x25\x20\x9f\x18\xab\x78\xb3\xf1\xc4\x4e\xa1\x96\xee\xec\x34\x57\x20\x48\x30\x62\x35\x01\x22\xd1\x5c\x0a\xe2\xf6\x13\x16\xe3\xc5\x17\x8a\x3c\x29\xbb\x17\xe7\xb1\xd1\x1b\xba\xd7\x02\xda\x77\x35\xc6\x84\x23\x1d\xe5\x3f\x2f\xd0\xb2\xf8\xb3\x4f\x5b\xe7\x99\x92\xae\x2e\xf9\x22\x06\x6b\x07\xb2\x43\xf7\x70\xe1\xdf\x5a\x00\xd4\x63\xd6\xf3\x99\x46\x7c\xf0\x4c\x6a\x95\x11\xa0\x76\x95\x00\x20\x1a\x8a\x63\xd3\xf7\x22\xd9\xb3\x42\xd2\x35\xa8\xb4\x11\x90\x39\x5f\xd7\xdb\x6d\xaf\x6d\x29\xd4\xf6\x51\xc3\x12\x16\x07\x21\xf8\x7d\x4f\x4a\xbc\x18\xaa\xed\x1f\x39\xa1\xbf\x23\x27\xc2\x60\xa9\xd3\x25\xdc\x00\x4b\xdb\x13\xba\x9e\x37\x85\xe0\x5f\xc6\xf2\xbf\x90\x1b\x63\x39\xc5\x8d\x61\x63\x17\x90\x3f\x89\xf3\x70\xde\xe5\x7f\x21\xff\x06\xd6\x94\xac\x8a\x58\xbd\x1c\x18\xd2\x89\x45\x5f\xae\x3a\x18\x2e\x2b\x21\x6a\x95\x5c\xe6\x25\x00\xc6\x5f\xbe\x0a\x0c\x64\xfb\xf9\x25\x56\x23\x84\x09\xef\xd5\x9e\x27\xd0\x55\x89\xc8\x34\x09\x25\x80\x2e\x20\xd6\x69\x26\xe8\x41\x0c\xe1\xc2\x53\x30\x2f\xdb\x31\xb9\xe5\xb9\x57\x09\x9f\x4a\xfe\x90\x18\x59\xbb\x08\x83\x3f\xc1\xf6\x2c\x12\x5e\x65\xdf\x11\x24\xae\xcf\x15\xd1\x3c\x53\x3a\x07\x68\x88\x2d\xd3\x39\x64\x28\xd1\x81\x17\x2c\xfb\x0c\xa4\x6c\xf0\x1c\x61\x8f\x14\xa0\xb2\xe8\x09\x18\x34\xf5\xad\x15\x32\x43\x78\x52\xc7\x93\x6e\xc7\x87\x9f\x97\x09\xcb\xb4\x2a\x89\xb5\x99\xb8\xb8\x88\x04\x2a\xe0\xc1\x81\x1e\x7b\x5d\x14\xac\x3c\x0b\x0d\xe2\x5a\xfa\x7c\x03\xfe\xcb\x41\x30\x19\x9f\x78\x9c\x6e\xa5\x19\xc0\xe4\xf6\xea\x73\xae\x0e\xef\x8b\x56\x02\x87\x30\x97\xfe\x5a\xa1\x6e\xa7\x39\xcb\x8f\x61\xb5\x52\x21\x09\xbb\x8e\xe5\xfb\x42\x9a\xad\x37\xaf\x0b\xf2\x22\x91\xf4\xca\x91\x5d\x5f\x60\x98\x16\xa0\x89\x84\x68\xbc\x88\x65\x22\xb9\x51\x08\x98\x2e\xc4\x11\x74\xc0\x83\xe6\xcf\x82\x7e\x82\xfb\x4d\x79\x62\x45\x99\x4a\x1c\x3b\xb0\x2a\x6e\x6a\x81\x9a\x22\xd8\x52\x6e\x02\x74\x0f\x3f\x2c\x17\xe6\x91\xa8\x08\x10\x24\xe8\x18\xce\xec\x45\x72\x6e\xda\x56\xcc\x24\xc7\x9c\xaf\xa2\xd3\x90\x10\xb0\x53\x0f\x36\x31\xf0\x81\xf9\xb8\xef\x1c\x33\xef\x86\x64\x97\x35\xe1\x82\x28\x31\x3c\xe8\x11\x2b\xc3\xf7\x4a\x13\x68\x07\x08\x87\x1b\x22\x7f\xf8\x5b\x71\xcf\x17\xc9\xfb\x03\xd3\x9f\x17\xc9\xab\xa3\x64\xfb\x22\xfb\x41\xad\x47\x2d\xb7\x4b\x78\x2f\x9c\x82\x31\xdb\xbb\xd5\xe9\x07\x58\x04\x25\xfb\x81\x8f\xab\x6d\x67\xdb\x00\x9e\x39\x31\x84\xd6\xda\xf7\x40\xda\x98\x68\x2f\xae\xc3\xa5\xf4\xcf\xfe\x90\x6e\xaf\x36\xda\x94\x00\x5e\x56\x53\xd6\x6c\x57\x20\xd3\xc8\x48\x48\xf6\x35\x13\x7f\x06\xaf\x9e\xd2\xc9\x41\xb0\xca\x9c\x15\xcb\xa7\x84\xa7\x02\x63\xaf\x28\xed\x1b\xb9\xd0\xad\x45\xed\x15\xb1\xd8\xf1\xea\xa0\x94\xe8\x7c\xdb\x2f\xba\x80\x2d\x3f\xd5\xd4\xc5\x5b\x62\x0e\x59\x19\xbe\x78\x76\x15\xbd\xcf\xc3\x7b\x48\x02\xcc\x6b\x38\x4d\x79\xad\x91\x04\xc6\x2e\xc7\x95\x77\x30\x32\xa3\x7c\x63\xc4\x1b\x1f\xb9\x35\xcf\x18\x54\xb9\x5a\xed\x03\xf9\xa9\x90\xd7\xde\xbd\xd1\x1d\xde\x98\xb2\xdd\x4f\x8f\xca\x01\xed\xae\x8a\xae\xa2\xa7\xb9\x97\xeb\x6e\xd7\xe9\x62\xc5\x91\x5b\xf7\x90\xcd\x3a\x1a\x2b\x6a\xb6\x49\xd6\xab\x4c\xb0\x72\x62\xc6\x47\xa7\xdc\x59\x52\x43\x2f\xa1\x9d\xe9\x32\xf3\x6f\xe0\x0d\xdb\x4f\x14\xc6\xa9\xbc\x76\x45\xbd\xfe\x19\x77\xaa\x07\x8a\x59\x54\xba\x5a\x5b\x83\xa9\x4c\xbe\x02\x7c\x91\x94\x75\xb6\x83\x64\xad\x58\x4e\x85\x72\xab\x7d\x63\x17\xa9\x34\x0f\x21\x22\xbc\x31\x88\x88\x3c\x98\xe7\xae\x2c\x7e\xe5\xee\xa5\x45\x95\x28\x7a\x5c\xd7\xcc\x6c\x0d\xc1\xb4\x37\x15\x11\x9b\x37\xc7\xf4\x67\x9e\x07\x4e\x9a\xfa\x60\x8c\xcb\xab\xd4\x2d\x33\x9e\x5f\xcf\x2c\x46\x9a\x4d\x19\x4e\x2c\x54\xc4\x1a\x92\x56\x14\x1b\x9e\x1d\xb3\x56\x0d\x68\x14\x87\xbc\x9c\x37\xf0\x34\x67\xd8\x50\xad\x60\xb7\x8d\xf3\xb1\x55\xef\x92\xf4\x05\x6f\xfe\x39\x13\x22\x7a\xca\xd5\x7e\xef\xfe\x8c\x91\x24\xe8\x3f\x72\x1b\x2e\x6a\xfb\x7f\x13\xfe\xdf\x4a\x06\x9b\x3a\x00\x76\x06\xe9\xa3\x9d\x09\x0b\x5f\x57\xea\x7f\x91\x87\x27\xb2\xda\xf1\x8e\x0a\x80\x69\x87\x8c\x0a\x2c\x72\x57\xfc\x31\x07\x3b\x06\x3f\xb5\xeb\xf5\x52\xa8\xb2\xd6\xc3\xd7\xea\x36\x1e\xb5\xed\xdd\xcf\x26\xc2\xf4\xe1\xfb\x35\x87\xba\x9e\x1c\x77\xa6\x73\x32\x63\x4f\xb0\xb1\x44\x9a\xdf\x53\x28\xff\x81\x27\x19\x3b\x40\x7e\x65\x37\x12\x66\xeb\xbb\xc0\x72\x85\x37\x6d\xcb\xc3\xf7\xb5\xf1\xec\x44\x87\x2b\x8a\x81\x7c\x55\xc9\x78\x9d\xd6\x4d\xa3\xf6\x38\x72\x72\x4c\x8a\x1a\x5d\xc2\x23\x7b\xc3\xaa\x1d\x9a\xdf\x80\x0a\x8f\x11\xc4\xca\xa8\x26\x88\x53\x8c\x6e\xda\xb5\x50\x6b\x00\xb7\xad\x80\x97\xa7\xe7\x9c\xd3\xe1\x9c\xb4\x74\xed\x0d\x9b\x72\xb6\xcd\x7d\x80\x5c\x6a\xcd\x4b\x28\xaa\x6b\xc7\x41\x5a\x69\x8d\x17\x71\x11\xb4\x87\x6b\xc4\xd6\xab\x96\x8b\xa0\x0d\xb1\x63\xe4\x25\x64\xe2\xbc\x1e\x10\x98\x7d\x17\xeb\x75\x98\x8d\xcc\x80\xab\xa7\x02\x36\x54\x0c\x34\x96\x85\xdc\x0a\xde\x98\xaf\x45\x0f\x4f\xe5\x35\xfe\x4b\x48\x60\xed\x41\xe0\x5c\xb2\x0b\x01\xc5\xba\xfb\x87\xe9\xc9\xc9\xb5\x2d\x37\x84\xb2\x36\x46\x81\x30\x67\xcb\x80\xe3\x61\x61\x19\xb1\xb5\xd1\x54\x4b\x78\x88\xcb\x7a\xfd\xcc\x17\x9f\x29\x0d\x4f\x37\xd4\x26\x1e\x98\x06\x14\xee\x5d\x21\xf2\x67\x1d\x05\xc6\xe8\x3d\xf4\x90\x50\x16\x9f\x80\x09\x12\x5f\x60\x71\x61\xed\x83\x9b\xbb\x6b\xc7\x28\xce\x9c\x65\x3b\x97\x77\x8f\xe2\x7a\x48\x5e\x44\x66\xc8\x6f\x9d\xb4\x31\x21\x2b\xa2\x07\x04\xf4\xf7\x2f\x27\xa2\x35\x9b\x22\x27\xee\x62\xa3\xc5\xde\x1a\x63\x76\x91\xe4\xe8\x5b\xaa\x72\x85\xa1\xe9\x2f\x50\x9c\xed\x7d\x2e\xe5\x81\x3d\x48\x2a\xf9\x9a\x95\xfc\x3e\x4d\x3e\x74\xb3\x0b\x18\xf9\xd0\x4a\x57\x09\xa9\xee\xd1\xb2\xaf\x0a\x87\x98\xb9\x08\xb0\xa3\x99\x10\x21\x4e\x93\x77\xb2\xa4\xd2\x9b\xe2\xe6\xf9\x17\xc2\xfc\x3f\x6b\x0a\x6e\x2a\xf1\xcb\xa1\x6c\x82\x2f\x6c\x7d\x12\xd5\xf6\x93\xf3\xff\x19\x9a\xbc\xde\x30\x1d\xbb\xcd\x97\xd2\x27\x33\x96\xed\xf8\xca\x0c\xad\x9e\x51\xc4\x42\x44\xfc\x2f\xcd\xc7\xef\xf1\xdb\xc1\xc7\x0c\xf5\x22\x54\xd3\xb0\x2f\x48\x5a\x63\x19\xd4\x62\x3b\x5f\xe7\xd8\xf5\xce\xb0\xdb\x55\x07\x2f\xe1\xe8\x58\xbb\x1d\xdd\x01\x65\x21\x5c\x66\x5b\x21\x93\x31\xad\x6d\x22\x2a\xf5\x9a\x30\x5d\x15\x1b\x96\x45\xbe\xe9\x49\xe8\x2c\xd1\x0b\x89\x2d\x96\x10\x32\xf5\x54\xef\x56\x94\xb3\xc4\x41\x36\xf7\xef\xff\xa5\x6d\x0a\xee\x85\xf4\x23\x78\x1e\x86\x5d\x72\x78\x7d\xdb\x6f\x64\xe4\xb3\x65\xad\x64\xdd\x89\x8b\xcd\x92\xa8\xf0\xbe\x73\x49\x03\x46\xe1\x33\xd6\xf0\xc4\x92\x83\x79\xb8\x6c\x01\xcd\xef\x74\xc9\xd9\x82\x56\x25\x8a\x5b\x24\x05\xa5\xea\xe5\xaa\x59\x6e\x07\x4b\x88\xa9\xc9\xf7\x3c\xf7\xa5\x88\x01\x1e\x85\x79\xfa\xd8\x96\x27\x7b\x9e\x17\x75\x13\xf6\x2f\x4a\xa3\xff\xc3\x16\xfe\xd7\xb3\x85\x21\x68\xff\x98\x86\x70\x77\x81\xc6\x1f\x4f\xe1\x57\xf0\x14\x06\xe3\xa4\xbd\x9e\x79\x0b\x26\x4b\x8f\xe1\xb8\x98\x7f\x6c\xbd\x06\xea\xde\x15\xd6\x3e\x87\xa1\x0b\xa7\x0a\xd7\xc0\x28\xfe\x5d\x57\xa3\xff\x60\x3e\xda\x1b\x7d\xb1\xf0\xc0\x94\xc7\xd4\x5c\x71\x17\x30\x78\x6b\xaf\x36\x30\xf1\x55\x6a\xe8\x8a\x07\xf8\x28\xac\x7a\x52\xba\x55\x8f\xaf\xb2\xcd\x82\x7a\x53\x94\xd5\x4f\x4c\xd4\x67\x81\xa2\x40\x2d\xc4\xa3\xc5\xb8\xed\x50\x71\x98\xc1\x17\x83\xa1\xd9\xdb\x38\x78\x6a\xde\x55\x3c\x73\x50\x3c\x6d\xa1\x46\xcd\xb8\xe7\x08\xde\x4f\x6e\xbd\x3e\xa1\xce\xf8\xa0\xd9\xe1\xc0\xb5\x8d\x08\xb6\x82\xb6\x80\xdb\x09\xbd\xa4\x12\x7d\x0f\x3f\xbc\x7f\xf7\xb6\xf9\x36\x18\xd9\xd3\x68\x1a\x7e\x06\x4b\x77\xd5\xbd\x73\x6f\x6b\x21\x7a\x77\x6e\x02\x9d\xe1\x87\x37\x6f\x56\x3f\x5d\xbf\xf9\xf0\x7a\x10\x72\x2f\xf8\x59\xef\x9a\xb8\x91\xd0\x9a\xa0\x45\x58\x81\x15\x58\xef\xb9\xb6\xe5\x08\x7e\xd6\xa8\x78\xd7\x42\xc4\xd0\x8b\xa9\xfc\x44\xed\x40\xea\x4e\x2d\xd1\x63\x93\xca\x64\x70\xe1\xe2\xfe\xe1\x67\x9f\x4c\xe3\x9f\xf0\xdb\x67\x89\x9f\xc4\x8b\xe4\xad\xeb\xb5\x67\x5d\x29\x2f\xf0\x8c\xeb\x80\x08\x90\x7d\xd7\xe1\xd2\xe0\xb2\xa7\x5d\x8f\x0f\x12\x90\x3d\x78\x6e\x31\x61\x2f\x72\x3b\x70\xed\x3e\xc5\xde\x40\x27\xcb\x73\x54\x6d\xa1\xdd\x05\x42\x82\x22\xeb\xbc\x43\xcd\x4c\x25\xd1\x91\x32\xa8\xde\xeb\x1d\x53\xb2\xa4\x38\xb9\x60\x72\x5b\xb3\x2d\x2f\x17\x89\xed\x3c\x95\xfb\x62\xbb\x03\x0c\x15\xcf\xe3\x8f\x96\x0c\xab\x8a\x7b\xde\x38\x42\x98\xe2\x44\xb8\x01\x8b\xa4\x90\xa9\xa4\x39\xc9\xad\x6f\x1e\xb3\x9f\x7e\x78\xef\xa6\x63\x4e\x9a\x6b\x88\x50\x4d\x65\x2a\x71\x73\x11\xaa\xcd\xba\x49\x40\xf1\x03\xee\xf4\xe8\xe8\x32\xcd\x2d\x90\x32\xc8\xf4\x2d\x38\x6c\x52\xe9\x52\xed\x61\x63\x23\x16\x24\xcc\x89\xc4\x21\x8d\xcb\x13\xbb\x19\xf6\x4e\xd0\xd8\xba\x4f\xfd\xd9\x6f\x80\xb9\x70\xab\xfb\x46\x2b\x13\x8e\xad\x17\x63\x13\x75\x6c\x16\x08\x8e\xbe\xfa\x2b\xa8\xaf\xe8\x1e\x8d\x9d\x17\xfe\xa6\x37\xb8\xac\xea\xb5\x98\x31\x24\xfc\xfd\xe0\xa0\x50\x24\x0f\x0f\x6a\x82\x8f\xf4\xb6\x71\xb5\xcc\x31\x1d\xea\x76\xad\x54\xcf\xbe\x5c\xd0\xdb\x18\x0d\x8a\x3e\x18\x5b\x8c\x3a\xab\x4e\x39\x2f\x13\xd2\xb6\x9b\x4b\x64\xa5\xcf\xd0\x80\x44\x51\x9e\x34\x1c\xaf\x3f\x4d\x1e\x91\xd3\x10\xe8\xb1\x9b\x25\x61\xe9\x9d\x8b\x04\x6c\x8f\x98\x24\x1f\x17\x45\x38\x78\x81\xe2\x45\x02\xdf\x28\xa3\x1a\xa4\x85\x3b\x44\x0b\xbf\x73\x0b\x18\x64\x56\xeb\xd2\x88\x4b\x92\x77\x24\xb5\x95\x4e\x58\x2a\x2d\xae\x96\x15\xc7\xd7\x16\xe9\x44\xbb\xbf\x62\x2a\xfc\x01\x51\x69\x40\x63\xad\x12\x25\xb9\x95\x86\xa9\x04\xf0\x72\x09\xde\xd8\x75\x09\xb0\x82\x04\xd1\x4d\xff\x10\xf0\xcd\x31\x89\xe4\xa4\xe3\x32\xaf\xa1\x06\x44\xef\xfc\x37\xe6\xbf\xff\xfb\xe6\xff\x03\x00\x00\xff\xff\xbb\x53\xfc\x5f\xb3\xd6\x03\x00") +var _adminSwaggerJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x23\xb7\x95\x37\xfc\xff\x7e\x0a\x3c\x93\xa7\xca\x76\x22\x51\xb6\xb3\x9b\xca\x6a\xeb\xa9\xf7\xa5\x25\xce\x58\x8f\x35\x92\xa2\xcb\x78\xfd\x2e\x53\x34\xd8\x0d\x92\x88\x9a\x00\xd3\x40\x4b\xc3\xa4\xf2\xdd\xdf\xc2\x39\x00\x1a\x7d\x23\xbb\x49\xea\x36\xe6\x6e\x55\x3c\x62\x77\xe3\x7a\x70\x70\xae\xbf\xf3\xcf\x7f\x23\xe4\x9d\x7a\xa4\xd3\x29\x4b\xdf\x1d\x93\x77\xdf\xf7\xbe\x7d\x77\x60\x7e\xe3\x62\x22\xdf\x1d\x13\xf3\x9c\x90\x77\x9a\xeb\x84\x99\xe7\x93\x64\xa9\x19\x8f\x93\x23\xc5\xd2\x07\x1e\xb1\x23\x1a\xcf\xb9\xe8\x2d\x52\xa9\x25\x7c\x48\xc8\xbb\x07\x96\x2a\x2e\x85\x79\xdd\xfe\x93\x08\xa9\x89\x62\xfa\xdd\xbf\x11\xf2\x2f\x68\x5e\x45\x33\x36\x67\xea\xdd\x31\xf9\x1f\xfc\x68\xa6\xf5\xc2\x35\x60\xfe\xad\xcc\xbb\x7f\x85\x77\x23\x29\x54\x56\x78\x99\x2e\x16\x09\x8f\xa8\xe6\x52\x1c\xfd\x4d\x49\x91\xbf\xbb\x48\x65\x9c\x45\x2d\xdf\xa5\x7a\xa6\xf2\x39\x1e\xd1\x05\x3f\x7a\xf8\xee\x88\x46\x9a\x3f\xb0\x51\x42\x33\x11\xcd\x46\x8b\x84\x0a\x75\xf4\x4f\x1e\x9b\x39\xfe\x8d\x45\xfa\x5f\xf0\x47\x2c\xe7\x94\x0b\xfc\xb7\xa0\x73\xf6\x2f\xdf\x0e\x21\xef\xa6\x4c\x07\x7f\x9a\xd9\x66\xf3\x39\x4d\x97\x66\x45\xde\x33\x1d\xcd\x88\x9e\x31\x82\xfd\x10\xb7\x44\x72\x42\x28\x39\x4e\xd9\xe4\xf8\xd7\x94\x4d\x46\x6e\xa1\x7b\xb8\xc0\xe7\x30\x9a\xab\x84\x8a\x5f\x7b\x76\x99\xa0\xe5\x98\xa9\x28\xe5\x0b\x6d\xd7\xfb\x9a\xe9\x94\xb3\x07\x16\x76\x80\x13\x21\x66\x22\xbe\x33\xb5\x60\x11\x9f\x70\x16\x93\xf1\x92\x70\xb1\xc8\x34\x49\xd9\xdf\x33\xa6\x34\x99\xf0\x44\xb3\x54\x15\x7a\x91\x0b\x96\xc2\x0a\x9e\xc5\xa6\x97\x0f\x4c\xf7\xa1\xed\x7c\x54\xe1\xdb\x29\x53\x0b\x29\x14\x53\x85\x45\x20\xe4\xdd\xf7\xdf\x7e\x5b\xfa\xa9\x3a\x83\x3e\x51\x59\x14\x31\xa5\x26\x59\x42\x5c\x4b\xe1\x60\x70\x41\x0d\xf9\xd0\x4a\x63\x84\xbc\xfb\xdf\x29\x9b\x98\x76\x7e\x77\x14\xb3\x09\x17\xdc\xb4\xab\x90\x4a\x83\xd1\x16\xbe\xfa\xd7\xbf\xd5\xfd\xfb\x5f\xc1\x8c\x16\x34\xa5\x73\x66\x96\xc5\xd3\x15\xfe\x5f\x69\x2e\x86\x12\x4c\xe7\x39\xb5\x94\x07\x5e\x9a\xed\x05\x9d\x33\xb3\xf3\x66\xbb\xec\x17\xf0\xef\x94\x29\x99\xa5\x11\x23\x63\x96\x48\x31\x55\x44\xcb\xca\x1a\x70\x68\xc1\x10\x71\xf9\x89\xd9\x4a\x9e\x32\xb3\x57\x3a\xcd\x58\xe9\xa9\x5e\x2e\x60\x90\x4a\xa7\x5c\x4c\xc3\xa5\xf8\xd7\x41\xab\xa9\x21\xed\x77\x98\x19\x7e\xd0\x38\xb1\xa1\xe8\xbb\x57\x22\x2a\xc8\x98\x11\x73\xe2\x79\xcc\x52\x16\x13\xaa\x08\x25\x2a\x1b\x2b\xa6\xc9\x23\xd7\x33\x2e\xcc\xdf\x48\xbe\x91\x5b\xb3\xd7\xb3\x36\xf0\xcf\xd5\x2b\x73\xa7\x58\x6a\x06\xfe\xc0\x63\x16\x93\x07\x9a\x64\x8c\x4c\x64\x5a\x58\x9e\xde\x50\xdc\xce\xcc\x3a\xcc\xc7\x5c\xc0\xc9\x33\x6b\xe9\x28\xe4\x0f\x6e\xb9\xfe\x40\x4c\x7f\x24\x13\xfc\xef\x19\x4b\x96\x84\xc7\x4c\x68\x73\xae\x55\xb9\xb5\x3f\x48\xe8\x9f\x26\xe4\x90\x98\x75\x66\xa9\x86\xf5\x96\x42\xb3\xcf\x5a\x91\x43\x92\xf0\x7b\x46\xbe\x3a\xe7\x4a\x93\xfe\xd5\xd9\x57\x07\xe4\xab\xf3\x9c\x71\xa8\xaf\x9e\x61\x85\xfd\xbf\xff\x1a\x1c\x3d\x4d\xa7\xe5\x43\xf7\xae\x6f\x4e\xf3\x0d\x5e\x40\x79\x0b\x7f\xfd\xb7\xb0\x1d\xbb\x5f\xab\xb9\x7a\xce\xd2\x2d\x3f\x6f\xcb\xc5\x61\x99\x8a\x0c\x5c\x99\x1d\xda\x96\x7f\x57\x6e\x87\x1a\xe6\xad\xb6\xe4\xde\x66\xec\x65\xf6\xad\xde\x16\xff\x36\x53\x78\x6a\x1e\xbe\x0d\x03\xa7\x1a\x4e\x16\xe5\x02\x0f\xa2\x3f\x97\xa9\x32\x67\xd1\x9d\x90\x57\xc2\xb6\xb6\xe1\xe7\xc1\xcc\x02\x96\xee\x38\x75\xb0\x2a\xaf\x70\xde\x09\x9f\xf3\x75\xfb\x7b\x26\x62\x23\x3c\x5a\x86\x2a\xb2\xf9\x98\xa5\x66\x19\x1c\x6b\x85\xd9\x8e\x0d\xab\xd5\x59\x2a\x58\xdc\x62\x9a\x7f\xcf\x58\xba\x5c\x31\xcf\x09\x4d\x54\xd3\x44\xb9\xd0\xcc\x48\xea\xa5\xc7\x13\x99\xce\xa9\xb6\x2f\xfc\xe9\xdf\xbb\x2e\x84\x96\xf7\x6c\xdd\xfe\x9f\xe1\x6e\x46\x54\x01\x19\xcc\xb3\x44\xf3\x45\xc2\xc8\x82\x4e\x99\xb2\x2b\x92\x25\x5a\x1d\xc0\x6b\x46\x3b\x60\xe9\xa1\xbf\xe5\xa0\x07\x77\xbb\x67\x0a\x7e\x21\x13\xcf\xec\x04\xfb\xac\xa1\xa5\xa1\x80\xfb\x1d\x96\x28\xbc\xb5\x9e\x60\x29\x37\xa3\x19\x25\x53\x3d\x1a\x2f\x7b\xf7\xac\xd2\x6f\x23\xe5\x50\x41\xa8\xd6\x29\x1f\x67\x9a\x99\x79\x9b\x36\xdc\xfd\x0c\xec\x11\x85\x80\x36\xac\xe1\xe5\x26\x1c\xf3\x94\x45\x30\xb7\x2e\x07\xc6\x7f\x65\xe6\x6d\x34\xb1\x25\xce\xfe\x9e\x2d\x41\xe6\xa9\x59\x01\xbf\xe5\x43\x31\x14\xe4\x90\x9c\x0e\x6e\x4e\x06\x17\xa7\x67\x17\x1f\x8e\xc9\x0f\x4b\x12\xb3\x09\xcd\x12\x7d\x40\x26\x9c\x25\xb1\x22\x34\x65\xd0\x24\x8b\x8d\x5c\x63\x06\xc3\x44\xcc\xc5\x94\xc8\x34\x66\xe9\xd3\x2d\x63\xe9\x29\x13\xd9\xbc\x74\xaf\xc0\xef\xf9\xe8\x4b\x5f\x18\x31\xc6\x3f\x2a\x3c\xf9\x6b\x65\x81\x61\xc6\xa6\xef\xa0\xb5\x67\x13\x9c\xa2\x19\x4f\xe2\x94\x89\x23\x4d\xd5\xfd\x88\x7d\x66\x51\x86\x77\xf2\x3f\x8b\x3f\x8c\x8c\xf4\x2b\x63\x56\xfc\xa5\xf0\x47\x2e\x6e\x75\xfe\xd4\xeb\xdb\x9d\xbf\x04\xed\xbc\xdd\x77\xf0\x0b\x8f\x6b\xdf\x86\x5f\xd6\xcc\xc1\xbd\xb3\x62\xb0\xee\x95\xc6\x51\xb9\x17\xac\xb0\x57\xfb\x4e\xca\x74\xba\x1c\x51\xad\xd9\x7c\xa1\x3b\x5a\x1e\x28\x49\x8c\xec\xba\x4a\x56\xbd\x90\x31\x1b\xb8\xfe\x7e\xb5\x22\x28\x0a\x9b\xc8\xb5\x26\x2c\x65\x22\x62\xcd\x2d\xdc\x52\x75\x9f\xb7\xb0\x5e\xe0\x05\x1a\x23\x66\xf9\x49\x4e\x60\x95\x8e\x73\xb1\xd7\x2c\x49\xfe\xe6\x3a\x61\xb7\x30\x1f\xf5\x5e\xa6\x66\x78\x6f\x41\xe0\x2d\x0c\xfc\x39\x64\xde\x4d\x4f\xf4\x17\x67\xe5\xd8\x90\x3f\xed\x6d\x22\xdb\xaf\x64\x5b\x0b\x8a\x4c\x89\x5a\x2a\xcd\xe6\x6b\x6d\x29\x6f\x67\x21\xec\x05\xf4\x5a\x07\x5c\xba\x03\x7f\x03\xa7\xbe\x78\xa3\xef\x8f\x77\x87\x25\xdb\x95\x25\xf4\xb5\xcf\xd3\x79\xbb\x56\x4f\xf5\xc6\x6d\x5f\xe0\xee\x79\x13\xd3\x2c\xc8\x9a\xbb\x1e\xe4\x13\x99\x33\x1a\xf7\xca\xad\xf6\x08\x06\xb0\x46\x91\x2d\xda\xd2\xfd\xf9\x33\x9f\x86\x16\x20\x34\xf7\xe9\x19\x57\x81\x31\x8c\x44\x32\x45\x59\x30\xb6\xe7\x1d\x75\xd9\xfe\x6d\xff\x66\x70\x7b\x4c\xfa\x24\xa6\x9a\x9a\x03\x9e\xb2\x45\xca\x14\x13\x1a\xec\x04\xe6\x7b\xbd\x24\x73\x19\xb3\x04\x35\xda\xf7\x46\xb2\x26\xa7\x54\xd3\x13\xaa\x69\x22\xa7\x3d\xd2\x87\x3f\xcd\xc7\x5c\x11\x9a\x28\x49\xa8\x23\x2b\x16\xbb\x26\xa8\x88\x1d\x6b\xa1\x24\x92\xf3\x05\x4f\xbc\x1f\xc1\x1b\x6f\xb8\x88\xf9\x03\x8f\x33\x9a\x10\x39\x36\x5c\xc5\x68\xe0\x83\x07\x26\x74\x46\x93\x64\x49\x68\x92\x10\xdb\xad\x7b\x81\xa8\x99\xcc\x92\xd8\xb4\xeb\x46\xa9\xf8\x9c\x27\x34\x35\x2a\x3e\x8e\xf6\xd2\xb6\x45\x6e\x67\xcc\x8f\x15\xc6\x65\x56\x73\x4e\xef\x99\x22\x5c\x93\x85\x54\x8a\x8f\x93\xfc\xcc\xdf\x9d\x11\x18\xf7\xc9\xf9\x19\xd8\x0b\x22\x4d\x24\xf2\x50\xd7\xb9\xb5\x0f\xb9\x1e\xe7\x54\x08\x06\x1d\x4b\x3d\x63\xa9\xed\xde\xbe\xfc\xd2\xaa\xff\xdd\xc5\xcd\xd5\xe0\xe4\xec\xfd\xd9\xe0\xb4\xaa\xfb\xdf\xf6\x6f\x7e\xaa\xfe\xfa\xf3\xe5\xf5\x4f\xef\xcf\x2f\x7f\xae\x3e\x39\xef\xdf\x5d\x9c\xfc\x38\xba\x3a\xef\x5f\x54\x1f\x5a\xb2\x6a\x6d\x46\x08\x47\xd6\xf1\x6c\xed\x6d\xa6\x4f\x65\x33\x3d\xf8\x72\x8d\xa6\xd6\x29\xd5\xde\x60\xea\x6d\x14\xf6\x4b\xb2\xa0\x4a\xa1\x64\x84\x23\xe8\x0d\xc5\x47\x99\x1a\x06\x36\x91\x86\x47\x18\xe9\x49\xa7\x59\xa4\xb9\x98\xfa\x8f\x8e\xc9\x30\xfb\xf6\xdb\x3f\x46\xe7\x5c\xdc\xc3\xbf\xd8\x6b\x5c\x9c\xbd\x45\x79\x6f\x51\xfe\x6d\x59\x94\x8d\xe8\x73\x14\x1a\x92\x77\x1b\x5c\x65\x84\x0b\xf0\x89\x1b\x51\x42\x66\xda\xfc\xd3\x74\x09\xe4\xb1\x22\xc4\xaa\x9d\xc1\xd2\x47\x58\x35\xf4\x91\xca\x39\x08\x72\x9f\xb9\x02\x66\xf4\x28\xd3\xfb\x49\x22\x1f\xdb\x99\x2b\x3f\x30\xed\x87\x61\x04\xa7\xb7\x60\xa5\xfc\xd9\xce\xd0\x0f\xfc\x03\xd3\x66\xec\xd7\xb6\x97\x7d\xb0\xd5\x3e\xd8\xea\x65\x83\xad\x5e\x95\xa9\xf0\xe9\x59\x6b\xd1\xae\x88\xfc\xb5\xc1\x0f\xd7\xe8\x66\x6b\xf0\xa2\x05\x4e\xb2\x67\xe1\xc9\x45\x57\xd4\x2e\xf9\x72\xd1\xd9\xb4\x86\x27\x17\x86\xf1\x56\xf8\x72\x61\xd0\xcf\xcf\x93\x7f\x13\x7e\xa2\xbd\x1b\x68\xc3\x85\x7a\x93\xac\xbb\xe5\xad\xf4\x6c\x4e\x9c\xa7\xbf\x4a\x2a\x31\x1f\x5d\x82\x3c\x3a\x44\x75\xb4\x0e\xe3\x58\x13\xb7\x51\x1b\xa8\x51\x17\x99\x51\x0d\xc5\xa8\x8d\xbd\xd8\x2e\xd8\x62\xd3\x5b\xaf\x7d\xf8\x44\xd7\x5b\xaf\x7d\xe0\xc4\x07\xa6\x0b\xc3\x78\x2b\xb7\x5e\x61\xd0\xcf\x7f\xeb\xfd\x46\xe3\x25\xf6\x01\x12\x4f\xb8\x74\x5f\xfa\x5d\xf9\x7a\x43\x20\x7e\x03\x31\x0f\xfb\x20\x87\x4e\x6b\xf4\x65\x45\x35\x7c\xa9\x61\x0c\x6f\x33\x6e\x61\x1f\xa8\xb0\x0f\x54\x78\x09\x8f\xd2\xdb\x0b\x54\x78\x52\xc5\x97\x19\xb2\x52\x60\x45\x0d\x95\x9b\x77\x0b\xa9\x9a\xf5\xbd\xd0\x79\x5d\xa3\xd7\x41\x9b\x45\x6b\x26\x50\xef\xaf\x64\x46\x15\x91\x51\x94\xa5\x25\x17\x6d\xf9\x94\x9f\xa4\x8c\x6a\x73\x44\x8a\x86\x4b\x02\x2d\x93\x94\x45\x32\x05\x27\x25\x25\x8b\x19\x55\x8c\xe8\x94\x0a\xc5\xd7\x69\x79\xd8\x2a\x8c\xcb\xb4\xf3\x16\x14\xbc\xea\x22\x3e\x97\x7a\x37\x96\x71\xe5\x40\xe2\x59\xad\x7b\xb2\xfa\x26\xd9\xd9\xd4\x21\xed\xb7\xcd\xcc\x9f\xf0\xa8\x98\x5b\x6b\xc7\x47\xa5\xa0\xc6\x6f\x7a\x54\x8a\xd6\x8e\x9d\x1c\x15\x18\xd7\x5b\x39\x2a\xd5\x45\xfc\xcd\x1c\x95\xba\xa9\xbf\x86\xa3\xe2\xc2\x01\x76\x7c\x5c\x2a\x3e\xf8\x4d\x8f\x4c\x35\x5c\x61\x27\xc7\xc6\x8f\xef\xad\x1c\x9d\xfa\x05\xfd\xcd\x1c\x9f\xa6\xe9\xbf\xec\x11\xf2\x7e\x88\xd6\x87\xe7\x36\xe5\xd3\x29\x4b\x51\x33\x8a\x0c\x29\xae\x87\x5a\xca\x2d\xef\x9b\x1d\x98\xf5\xa7\xc1\xf7\xf0\x16\x4e\x82\x1f\x2c\x8e\xfd\x37\x73\x04\x2a\xf3\x7e\x25\xb4\x7f\x64\x38\xf1\x03\xa0\xb5\xb5\x3b\x03\xd7\x0c\x08\x1f\x2e\x90\x45\xca\x1e\xb8\xcc\x54\xb2\x3c\x4c\x33\x51\xc7\xed\xc1\x48\xf0\xc8\x93\x84\x48\x91\x2c\x89\xd2\x34\xd5\xee\xb1\x98\xa2\x47\xc9\x1c\xa6\x84\x2a\x4d\xee\x85\x7c\x14\x64\x42\x79\x92\xa5\x8c\x2c\x24\x17\xba\x37\x14\x67\x82\x5c\xe3\x18\x41\xf3\x3e\x20\x99\x32\x47\x30\xa2\x42\x48\x4d\xa2\x19\x15\x53\x46\xa8\x70\xd0\x35\x39\x65\x10\x99\x92\x6c\x11\x9b\x83\x65\xba\x28\xd9\x98\xf2\x03\x36\x14\xb7\x60\xc5\x50\x84\x7d\xd6\x29\x9b\xb3\x64\x69\xfa\x30\xb4\xaf\x25\xb1\xeb\x83\x43\xb5\x06\x71\x96\xa6\x32\x55\xa0\xb3\x8f\x97\xff\xa0\x42\x73\xc1\x08\xa8\x99\x0a\x81\x8f\x0e\xc9\xb9\x54\x10\x93\xfd\xd3\x9f\x15\x89\x92\x4c\x69\x96\x1e\x90\x71\x36\x55\x84\x0b\xb2\x48\xa8\x9e\xc8\x74\x6e\x46\xc8\x85\xd2\x74\xcc\x13\xae\x97\x07\x64\x4e\xa3\x19\xb6\x05\x6b\xa0\x0e\x86\x22\x96\x8f\x42\xe9\x94\x51\xdf\xbb\x7b\x48\xbe\x0e\x9f\x21\x01\xa8\x6f\x0e\xc0\x70\xcf\xe7\x8b\x64\x19\x0e\x3f\x48\x84\x86\x3d\x31\x8d\xb0\x98\x8c\x59\x44\x33\x65\x0d\x3b\x3a\x5d\x12\xf6\x79\x46\x33\x05\x7b\x67\xa6\x67\xad\x1e\x91\x9c\x2f\x12\xa6\x19\xe1\x13\xa2\x53\xce\x62\x42\xa7\x94\x9b\xa5\xbb\x61\x2b\x12\xb7\x3d\xd1\xdb\x0d\xb4\x54\xff\x2b\x58\x3e\xe6\x32\x65\x24\x66\x9a\xf2\x44\xad\x76\x4a\x3e\x2b\xc1\x91\x27\xa7\x37\xf2\x7a\xc9\x8d\xbc\x6a\x6a\x5b\x71\x13\xda\x1d\xdb\x5f\x85\x6f\xe9\x2a\x2c\x72\x85\x57\x71\x17\x22\x48\xc4\x0e\x04\x42\x61\xad\xe2\x11\x4d\xb6\x94\x0d\xaf\xed\xa0\x3a\x4b\x87\xee\xc3\xfd\xa1\x78\x5b\x87\x02\x77\xed\xf5\x9c\x8a\xa6\x84\x8a\x9d\x23\xc5\x74\xc1\x78\x59\x91\x11\xa1\xc8\x9c\x6a\x73\xb1\x4d\xed\x15\xdd\x12\xc5\x30\x07\x75\x79\x53\x07\xe5\x39\x90\x5c\xbe\xec\x88\x85\x7d\xa4\xc2\x6f\x10\x81\xf6\xd5\x24\x30\xee\x73\xa0\x9f\x28\x07\x9a\xab\x7d\x0e\xf4\x3e\x07\xba\xed\x02\xed\x73\xa0\xf7\x39\xd0\x6f\x36\x07\xfa\x49\xd3\x9f\x77\x97\xe4\xbc\x9b\x4c\xe6\x37\x25\x9d\xef\x25\xf3\xbd\x64\xbe\x4f\x57\xf6\x53\xdb\x15\x17\x74\x5f\xbf\x8b\x59\xc2\x34\x6b\x36\xd0\xb1\x74\x6e\x14\x0e\xbc\xe1\xb9\x30\xa2\xe0\x34\x65\x4a\x6d\xcb\xd3\x7c\xc3\x61\x79\x85\x1a\x7f\x44\x8e\x32\xeb\xc9\x12\xec\x3a\xab\x98\x9d\x6f\xfb\x6d\xb2\x3c\x3f\xfc\x3d\x64\xc3\x9e\x07\xee\x79\xe0\x26\x53\x7b\x3d\xe6\xe8\xe0\x30\xbf\xa8\x3d\x3a\xa8\xb4\x33\xe2\xf1\x36\xc5\x76\xda\x03\x97\xd3\x39\x8b\x07\x90\x56\xe0\x93\x22\xd2\x5f\xcd\x27\x61\x19\x1d\x97\x40\xd0\xde\x62\x1d\x7e\x9d\x2f\x7c\xa1\xf6\xc9\x66\x06\xec\xbc\xa2\xcd\x59\xfc\x26\x6c\xd8\xb5\x2b\xfc\x85\x54\xe3\x79\x1d\x8c\xe4\xd9\x8b\xf1\xbc\x8e\x69\xef\x6d\xaa\xfb\x5a\x3c\x7b\xab\x61\xcb\x09\xef\xad\x86\xaf\xd7\x6a\xf8\x52\xae\x80\x67\x3e\x9e\xcf\x25\x3a\xb6\x0f\xf5\x76\x11\xd9\x22\x26\xd9\x22\x91\x34\x6e\x59\x4e\x37\x90\xe8\x5a\xc4\x7b\x8b\x98\xa4\x6c\xca\x95\x66\xa9\xd9\x97\x5a\xc1\x70\x7d\x00\xf8\x5b\xad\x9b\xdb\x3a\xc4\x27\xec\xf6\xdd\xbf\xb7\x18\xfe\xb5\xbd\xb3\x81\x13\x8d\x69\xec\x0b\x5a\x82\xf8\x36\xa7\x4b\x32\xa3\x0f\xcc\x85\x25\x3e\xd0\x84\xc7\xb4\xbc\xd6\xa5\x19\xae\x1a\xd0\x7f\x76\x1b\x10\x2d\x0e\xc7\x57\x40\x52\xc5\xb0\x31\x9b\xd1\x0c\xef\xcc\x8c\x62\x9e\xa4\x8c\xc6\x4b\x32\x66\x4c\x78\xb2\xa9\xb9\x4f\x1a\xc6\xbc\x13\xc1\xf9\xc5\x15\xd3\x2a\xf5\xbc\x16\xb5\xf4\x19\x03\xa5\xea\xf9\xcd\xf6\x3a\xe8\xf6\x8a\xa7\xfa\xfe\x6d\xb1\xa0\x7d\xf0\xd4\xde\x3c\xf9\xf2\xe6\xc9\x7d\xf0\xd4\x5e\xd1\x7f\x65\x8a\xfe\x3e\x78\x6a\x1f\x3c\xb5\x37\x83\xac\x9e\xf6\xde\x0c\xf2\x45\x04\x4f\xb5\x92\xe1\x37\x0c\x9f\x7a\xe3\xd2\xfc\x5e\x98\x77\xef\xed\x85\xf9\xbd\x30\xff\x85\x0a\xf3\xaf\x63\x85\xf7\x92\xfc\x5e\x92\xdf\x4b\xf2\x7b\x49\x7e\x2f\xc9\xef\x7c\x19\xf7\x92\x7c\xbd\x24\x0f\xff\x72\xd5\x19\xba\x8a\xf5\x1d\xc5\xf9\xce\xf9\x11\xdd\x9d\x81\x1f\x98\x7e\xab\x9e\xc0\xbd\xd4\xbe\x97\xda\x5f\xb7\xd4\xfe\x6a\x26\xf4\xe5\x21\xab\xef\xb1\xc9\xf7\xd8\xe4\x7b\x6c\xf2\x27\xc6\x26\x77\x5f\xbf\x5b\x64\xcd\xb2\xcd\x1d\xa0\x97\xd9\xc3\xa5\xa9\xce\x14\x82\x5b\xe6\xc1\x26\xad\xc4\x9e\x55\xb2\xce\x5d\x0e\x90\x16\xf4\xb0\x5e\xee\x21\x7d\x4d\xe6\xd2\xe8\x6e\x82\x15\xde\x71\x0c\x0e\x03\x6b\xa6\xfc\x81\x09\xe2\x92\x03\x0e\xec\x35\x76\x00\xc6\x94\x7f\xf9\xc3\x87\xd9\x5a\x54\x13\x4a\x34\x9f\xb3\x1e\x39\x9b\x20\xb7\x88\xcc\xe9\x52\x4c\xab\x52\x34\x16\x52\x3e\x7c\x24\xe2\x7c\xac\xae\x6f\x9e\x07\xe7\xe0\x6b\x07\x8e\xd9\x66\x89\x46\xd6\xeb\x1a\x07\x68\xba\xb1\xe7\x50\x70\xd0\xe6\x2c\x4d\xdc\x97\x85\x6e\xdd\xcb\x73\x1a\x1b\xc6\x10\x0c\x21\x4f\x2b\x0b\xdf\x87\x3b\x9d\x2b\x1f\x5e\x54\xf8\x1e\xbf\x06\x7c\x3b\xc0\xa3\x03\x1c\xde\x56\xc3\x98\x41\xf4\x9b\x11\xf1\xe2\x2c\x61\x84\x2a\x25\x23\x4e\x41\x8d\x41\x19\x80\x70\xed\x2c\x0d\xee\x25\xd7\x75\xcc\x15\x1d\x27\x2c\xb6\x6b\xcc\xf2\x68\xa7\x95\x23\xe7\x8a\x8c\x99\x59\x62\xc3\xa6\x8a\xab\x3f\x43\x09\xa4\x66\x34\xc1\x50\x58\x75\x24\x4c\xe0\x40\x56\x48\xd0\x48\x9c\x6f\x55\x88\xc6\xd1\xef\x93\xee\xf6\x22\xf5\x5e\xa4\xee\x34\xa1\x2f\x4a\xa4\x7e\x45\x11\x9a\x8e\x21\xbd\x68\x84\x26\xf8\x40\x0d\xe7\x1f\x79\xc3\xa6\x6a\x6b\xeb\x39\xe7\x4a\x2b\x12\x65\x4a\xcb\x79\xb3\xe4\xf3\xd1\xf5\xd0\xf7\x1d\x9c\x48\x31\xe1\xd3\x0c\xef\x96\x5f\xad\x6c\xe2\x4f\x74\xae\xa6\x2c\x17\xac\x9d\x61\xc8\xdb\xad\xd7\x75\x56\x9b\x8f\x58\xe3\xe4\xad\x69\xe7\x4d\xdc\x76\xf5\x43\x7f\xae\x4b\xaf\x8b\xb2\x9a\xdb\xc7\xad\xa6\x69\xf4\x8b\xd1\xf5\xe0\xe6\xf2\xee\xfa\x64\x70\x4c\xfa\x8b\x45\xc2\xd1\x65\x85\x14\xc6\xff\x61\x26\x85\x65\x46\x3c\x89\x58\x81\x08\xd1\x7f\xc1\x47\x66\xf4\x41\x72\x48\x4e\xce\xef\x6e\x6e\x07\xd7\x0d\x0d\x5a\x92\x80\x22\xad\x6c\xbe\x48\x40\x3e\xba\xcf\xc6\x2c\x15\xcc\x48\xf8\x16\x23\x38\xf7\x9c\x61\xa3\x83\xff\x1e\x9c\xdc\xdd\x9e\x5d\x5e\x8c\xfe\x72\x37\xb8\x1b\x1c\x13\x47\x5b\xa6\x59\x33\x2e\x33\x8a\x78\x29\xe8\xdc\x68\xdd\xc5\x7a\x28\x7f\xcf\x58\x06\xe2\x18\x9f\x8a\x39\x03\xe8\xee\x42\x8b\x6e\xc0\xe7\xfd\x1f\x06\xe7\xc5\x96\x67\x2c\x04\x2e\x26\x09\x1d\xb3\xc4\xba\xf2\xc0\x3b\x65\xce\x4f\x00\xf1\x8c\x3e\xbe\x0c\x57\xf5\x2f\x77\xfd\xf3\xb3\xdb\x5f\x46\x97\xef\x47\x37\x83\xeb\x4f\x67\x27\x83\x91\xd5\xa4\x4e\xfa\xa6\xdf\x42\x4f\x56\xe1\x22\x7f\xcf\x68\x62\x34\x72\x39\x71\x50\xc6\xe4\x71\xc6\x04\xc9\x04\x50\x1c\xaa\xf9\xa0\x95\x84\x38\x0e\x38\xa3\xab\xf3\xbb\x0f\x67\x17\xa3\xcb\x4f\x83\xeb\xeb\xb3\xd3\xc1\x31\xb9\x61\x09\x28\xc2\x6e\xd1\x61\x17\x17\x49\x36\xe5\x82\xf0\xf9\x22\x61\x66\x35\xf0\x70\x8e\xd9\x8c\x3e\x70\x99\x16\xb4\x15\x58\x47\x60\x05\xd0\xbe\x53\x38\x47\xc1\xd2\x5d\x5e\xbc\x3f\xfb\x70\x4c\xfa\x71\xec\xe7\xa0\xa0\x8d\x02\xe5\x38\xf8\x89\xc3\x0a\xfc\x44\x44\x31\x20\x04\x2a\xfa\x3e\xb0\x34\xe5\x31\x53\x2f\xee\x70\x28\x1c\x88\xaa\x0a\x5d\xa6\xf0\xea\x1b\x25\x72\x5d\xf5\x42\x81\xfa\xaa\x2f\xae\xa3\xa2\xea\x17\x25\x32\x68\x36\x1c\x54\xf6\xb1\xb5\x4d\xa0\xb8\x3e\xcf\x76\x63\x1a\x66\x17\x8f\x9c\x6d\xe8\xe8\x9f\x05\xa6\xf7\xaf\x1d\x46\x48\x61\x52\xcc\x4a\x80\xa9\x20\x43\xfc\x57\x7b\xb5\xb5\xbc\x30\x83\x2f\xeb\x3e\xac\xfa\x4e\x82\x0f\xde\xc2\x4d\x18\x0e\xf7\x15\xdd\x7a\xd7\xa1\x6c\xe3\x44\xe4\x39\xd3\x14\x2a\x88\x6b\x49\xa6\x4c\xf7\xc8\xa5\x80\x67\xb7\x54\xdd\x1f\x10\x57\x1d\x86\xc8\x94\xe4\xc2\xe3\x33\x24\x95\xbf\x11\xa3\x61\x77\x85\x66\xaf\x98\xef\x15\xf3\xfa\x95\xd9\x47\xa8\x35\xac\xf0\xae\x6e\xd4\x4e\x76\xf6\xdd\x5d\x7c\x81\x59\xdd\x05\x9b\x94\xec\xa2\x85\x1b\x71\xad\x0d\xf4\xed\x5e\x86\xcf\x6b\x05\xdd\xe9\xd5\x88\xc5\x63\xf6\xf7\x1e\xfe\xdf\xfe\xde\xdb\xdf\x7b\xfb\x7b\xef\x15\xac\xf0\x8b\x5b\x94\x6b\xb8\xfb\x8b\x9a\x94\xd7\x29\xc8\x1b\x43\xd3\xe5\x0a\x71\x17\x70\xba\x5f\xdb\x60\xd0\xd5\x98\x92\xab\x1a\xb2\x22\x6a\x46\x53\xac\xca\x1a\xc9\xf9\x5c\x8a\xa2\xad\xfa\x80\x78\xc7\x3a\x18\x02\x61\x76\xeb\x2c\xcd\x79\x37\xfc\x6d\xd8\x98\x83\x75\x79\x8e\x8c\xa2\x9d\x8a\x10\x18\xaa\xbf\xd7\xaf\x9f\x50\xce\xd8\x63\x07\xee\x14\x3b\xf0\x75\xcc\xf5\x49\xb2\x8f\x76\x6f\x5f\x7f\x1b\x19\x47\x7b\x90\xc0\x7d\x4e\xcd\x3e\xa7\x06\x7e\xdf\x83\x04\xee\x8e\x5a\x9f\x56\xa6\x97\x31\x1b\x95\xca\xa8\xf8\x3f\x47\x65\x97\x57\xe1\x49\xe8\xff\x2a\x3c\xc8\x93\x8c\xa0\x75\x1e\xef\xb2\xf4\xca\x85\x8c\xd9\x16\xe5\x57\xcc\x88\x5a\x97\x5e\x29\xf4\xf5\xca\x45\x78\xb7\x4c\x28\xca\x17\x06\xfe\xc4\x82\x7c\x03\xc5\x7c\x89\xd6\xa8\x1a\xfa\xdf\x9b\xa6\xd6\x2e\xd4\x97\x5a\xad\x20\x67\x70\x6f\xc8\x51\xd3\xee\x16\x70\x21\x35\xa3\x86\xbb\xa0\xfe\xb9\xbf\x11\xea\x1f\x3f\x0d\x8c\x4c\xfb\x0b\xa1\x84\x1e\x53\xbc\x0a\x36\x45\x8d\x29\x74\xff\x36\xec\x3c\xe1\x88\x9f\xc3\xd2\xb3\x92\x98\xbe\xb8\x6b\x62\xd5\xd1\xd8\x5f\x16\x2d\x97\xeb\x4b\xbd\x32\xf6\x68\x2f\xab\x6c\x2f\x7b\x38\x95\xbd\xe9\xe7\xf5\x4c\x78\x6f\xfa\x79\xd3\xa6\x1f\x74\x54\x8f\x16\x34\x65\x42\xd7\xc8\xe8\xe5\xeb\x04\x5e\x0f\xf3\xe6\x9d\xd4\x01\x0d\xa0\xb4\x68\x2f\x64\x7f\x55\x7d\x59\xb6\x20\x2b\x18\x8c\x50\xae\x08\xf2\x86\x8e\xfe\x99\xff\x3b\x50\x02\x82\x1f\x6b\x1c\xbe\xab\x02\xc1\x10\xc3\x5e\x99\xeb\x3b\xb3\x31\x61\xbb\xca\x36\x72\x42\x62\x83\xa3\xb6\x39\x7e\xcc\xa5\x14\xb0\x38\x17\xb8\xf2\x19\xd6\xc4\x95\xd9\x9e\x0e\x9d\x18\x96\xc7\x4f\xac\x0d\x33\xbb\xc2\x4f\x4f\xe1\xcb\xb7\x95\x89\xd4\x30\xf4\xe7\x0d\x3f\xab\x92\x63\xbb\xd3\xed\x88\x83\x63\x6e\xcd\xe3\x8c\x83\x27\x06\xa0\xe2\xe0\x3e\x0f\x36\xdc\xe5\x4f\x53\x48\x2f\x6a\xba\x9e\x9e\x5b\x80\xac\x9c\xb9\x76\x13\xb7\x34\xfa\x76\xe7\xfd\xe2\xc1\x38\x6b\xe8\xfe\x45\x03\x73\x56\x30\xee\xed\xca\x45\xbe\x18\x5f\xf6\xb6\xfb\xe7\xe3\xcc\x1f\x98\xfe\xf2\xd8\xf2\x07\xa6\x9f\x8b\x27\x6f\xca\x88\x57\x32\xa3\xbc\x46\xd0\x1b\x8d\x13\xa9\xf0\xdf\x37\x3b\xdd\x2e\xf1\x5a\x3f\xe3\x24\x6d\xb0\x96\x4f\x45\x0f\xa7\xaa\xa5\x35\x60\x14\x74\xc0\x7d\xca\xf0\x3e\x65\x78\x9f\x32\xbc\x4f\x19\x7e\x7d\x29\xc3\xee\xeb\x77\x31\x4b\x98\x66\x8d\x72\xd3\x29\x3c\x7e\x29\xb9\x09\x7b\x7f\x46\xa9\x09\x3b\xfc\xf2\x04\x27\x9c\xd7\x5e\x76\xda\xcb\x4e\xbb\x98\xee\x6b\xd5\x5e\x1d\x95\xbf\x06\xed\xb5\x35\x3a\x51\x1e\x24\xb6\x36\x36\xc0\x4e\xfb\xd7\xb5\x41\x01\x01\xd2\xa3\x1b\xce\x3a\xc7\xff\x95\x1b\xf6\xdb\x61\x72\xea\xa9\xf9\xd8\x36\xee\x4d\xb7\xee\x5f\xac\x77\x73\x5f\xcb\xa2\x76\xad\xf6\xce\xd7\x15\x8b\xb3\x77\xbe\xee\x9d\xaf\xaf\xce\xf9\xba\x73\x95\x6a\x65\x45\xfa\x6b\x7b\x35\xaf\x8c\x0a\x77\x17\x3d\xea\x32\x86\x14\x10\x7f\x3b\x66\x8b\x44\x2e\xc1\xc6\xb2\xd2\xda\xec\x6b\xd1\xd7\x04\x47\x95\x2f\x7f\xf7\xf6\x55\x45\x68\x7f\xed\xf7\xbf\x1b\xf9\x73\xa9\x35\xaf\x45\xec\xcd\xe7\xfd\x2a\x04\xdd\xa3\x7f\x96\x52\x22\x5a\x61\xa6\x04\x49\x0c\xeb\x8f\xc1\x50\xd4\x3f\x09\x20\xf3\xed\xad\x39\xce\x74\x10\x6f\xa8\xcc\x01\x58\xb0\x54\x2f\x83\x37\xd9\x7c\xa1\x97\xff\x35\x14\x3c\x47\xd6\xe6\x53\x21\x53\xe4\x81\xe6\xe3\x19\x15\x71\x62\xce\x8f\xf2\xed\x44\x54\x08\xa9\x41\x38\x81\x19\xc4\xe4\x81\x53\x14\x65\xfa\x57\x67\x2d\x7c\xf2\xad\xce\x62\xc1\x9d\xfe\x86\x4e\xe2\x73\x63\x56\xaf\xb9\x45\x3f\x24\x72\x0c\x55\x16\xb2\xa2\x89\xc1\x34\xb0\x77\x00\x17\x76\xee\xa5\x98\x87\xa6\xea\xbe\x9c\xa8\x55\x0c\xdb\x1f\xad\x4c\xdd\x5a\xf3\x6e\x01\xcc\x70\xf5\xab\xa5\xf4\xae\xe2\x33\x9b\xf0\x05\x8f\x61\xc8\xe5\x71\xb8\x1f\xc3\x0e\xdd\x6f\x79\xcb\xee\x17\x57\xa5\x0a\x7e\x4c\x99\x4e\x97\x23\xaa\xb5\x61\x48\xbb\xcc\x29\xbb\xa5\xea\x7e\x8b\x9c\xb2\xa2\x77\x67\x4d\x4e\x59\xa1\xaf\x57\xce\xb1\x0a\x39\x65\xc5\x81\x3f\x39\xc7\x6a\x49\xdc\x5f\x5c\xfa\x40\xdb\xa3\xba\x4f\x25\xd8\x60\xe9\xbe\xd4\xb4\x82\x55\xbc\xf8\xd5\x8c\xb0\x74\x1d\x7c\x89\x27\xb7\x78\xb9\xed\x8f\xe8\xaa\x35\xfa\xe2\xca\x69\x94\x64\x96\x35\x73\x7b\x23\x65\x35\xca\x62\xd7\xae\x47\xf5\x34\xf6\xf7\x60\x37\xf6\x75\xf6\xf6\x75\xf6\xf6\x75\xf6\x9e\xbc\xce\x5e\x3b\x9d\xb5\xb5\xc2\xda\x56\x5b\x6d\xa7\xaa\x36\xeb\xa9\x4f\xe0\x73\x6e\xaf\x4c\x96\xf2\xd1\x8b\x6a\xe4\xa6\xf9\xe8\x85\xee\xdf\x84\x73\xba\x30\xe2\xe7\xc8\x47\xff\x8d\x6a\x96\x7b\xb5\xf2\x49\xd6\xed\x4b\xd5\x29\x5f\xb9\x42\xb9\xcf\xa4\xdf\xa3\x18\xee\x43\x4d\x76\xb8\x38\xfb\x50\x93\x7d\xa8\xc9\x17\x1b\x6a\xd2\xac\x9e\xf0\x78\xeb\x2c\xc9\x8e\xb8\xe5\xde\xca\x90\xfe\x0a\xa2\x94\x11\xfb\x5b\x20\x99\xd7\x69\x0b\xb9\x2c\x5d\x40\x1e\xde\x5c\x73\x38\x8b\xdf\x84\xca\x50\xbb\x9a\xcf\xa1\x3a\xec\x41\xb0\x77\x0a\x82\xfd\xea\xa6\xbd\x97\x2a\xf7\x52\xe5\x5e\x70\x6a\x39\xe1\xbd\xe0\xf4\x7a\x05\xa7\x97\xd2\x86\xbe\x24\x3c\x24\x23\x62\x15\xb2\x92\x56\xc6\x29\x23\xa6\x11\x38\x33\xb2\x45\x22\x69\xbc\x2e\xe2\xe8\xd7\x40\x7c\x5b\x21\xf7\x05\xed\xa6\x79\x9c\x72\x49\xfc\x5b\x25\xdb\x61\x03\xa6\xc7\xb7\x20\xda\x99\x71\xe2\x88\x5b\x44\x47\x86\x1d\xbe\xfb\xf7\x16\x03\xbf\xb6\x77\x32\x70\x9a\x31\x8d\x1d\x68\x00\x8a\x67\x73\xba\x24\x33\xfa\xc0\xc8\x84\xf2\x04\xed\x73\x3c\xa6\xe5\xf5\x2d\xcd\x6d\xd5\x80\xfe\xb3\xdb\x80\x68\x71\x38\x79\x46\xa3\xb9\x2f\x50\xaa\x8a\x68\xe2\xdc\x7d\xf0\xce\x8c\x2a\x42\x93\x94\xd1\x78\x49\xc6\x8c\x89\x20\x93\xad\xed\x98\x77\x22\x18\xbf\x78\x78\x66\x48\x37\x2f\x1a\xe5\x0d\x5c\xa3\xb1\x5a\xf4\xce\x15\xcb\x32\x27\xd9\x42\x87\xdc\x46\x71\x54\xdf\xbf\x15\xe6\xf2\x1c\x6a\xe2\x17\xec\x45\xda\x7b\x8a\x7e\x9b\x35\x19\x5f\x8d\xf6\xb1\x57\xd1\xf7\x49\xc6\x7b\xcf\xcf\xde\x80\xb1\x37\x60\xec\x7c\x19\x5f\x93\x01\xe3\x05\x65\x74\xcc\x6d\x7a\x92\x62\x25\xaf\x45\x5a\xdf\x0b\xeb\x7b\x61\x7d\x2f\xac\x7f\xb1\xc2\xfa\xeb\x58\xe1\xbd\xa4\xbe\x97\xd4\xf7\x92\xfa\x5e\x52\xdf\x4b\xea\x3b\x5f\xc6\xbd\xa4\x5e\x92\xd4\xe1\x5f\x0e\x2d\xa0\xab\xd8\xde\x5a\x5c\xdf\x0c\x1a\xa0\x9d\x9b\xce\x62\x03\xbc\x15\xc9\x7c\x2f\x95\xef\xa5\xf2\xd7\x2d\x95\xbf\x9a\x09\x7d\x79\x09\xc1\xfb\x94\xda\x7d\x4a\xed\x3e\xa5\xf6\x25\x52\x6a\x1d\x2f\x59\x25\xe1\xac\xaa\xa5\xf3\xc9\x32\x97\xaf\xb9\x88\x92\x0c\x44\x55\xf3\xf3\x0f\x19\x4f\x62\x02\x2a\x92\xd1\x74\xb9\x14\xdf\x00\x3d\x01\x29\xc0\x38\x5d\xf5\x87\xd5\x12\xcc\xa7\x0a\xab\x7b\xb5\x42\x4c\x3e\xda\x4d\x61\xd8\x76\xb5\xa7\xbe\x04\xee\x06\x15\xf7\x0a\xbf\xb9\x86\x5e\x51\x1d\xbe\x03\x27\x96\x18\x8e\xe4\xc6\xf7\xc4\x15\xf9\x6a\xfb\xec\x54\x9f\xef\x67\xfb\xd1\xdb\x2a\x65\x50\x1d\xf5\xbe\x2a\x1f\x09\x76\x6d\x5f\x95\xef\x09\xe7\xed\xce\xd9\x9a\x99\x3b\x1a\x45\x5b\xf8\x1b\x9d\xf6\x8b\x07\x3b\x36\x9f\xf4\x17\x0d\x7d\xac\xbd\xc8\x2a\xb9\x75\x47\xff\xac\xbd\xa7\x5e\xa0\x18\x61\xe7\xcb\x69\x27\x65\x09\xb7\xb9\x9e\x3e\x30\xfd\xa5\xdc\x4d\xfb\xd2\x84\xfb\xf2\x3a\x3b\x9a\xee\x46\x77\xcf\x9b\x9d\xed\xbe\x10\xe3\xbe\x10\xe3\xbe\x10\x63\xe1\x08\xee\x0b\x31\xee\x0b\x31\x12\xf2\x2c\x85\x18\x3b\xcb\x8c\x3b\x28\xc9\xb8\x8d\xc4\x88\xdd\x7f\x29\x42\xe3\xbe\x2c\xe3\x5e\x6e\xdc\xdd\x74\x7f\x5b\x72\xe3\x2b\xb4\x5a\xbc\x8a\xfa\x93\xde\x6a\xf1\xe2\x50\x40\x9e\xb5\xb7\x86\x03\x0a\x63\x4d\xfc\xd7\x3b\x45\x05\x72\x9b\xb6\x47\x06\xb2\xff\xb7\x47\x06\xda\x23\x03\x35\xcc\x7a\x1f\xcc\xbc\x47\x06\x22\xfb\x70\xdd\x7d\xb8\xee\x6b\x0e\xd7\x6d\xb1\x8d\x7b\x64\xa0\x96\x22\xe3\x13\xa1\x03\x39\x99\x6b\x2b\x84\xa0\x1a\x71\x70\x3d\x4a\xd0\xcf\x55\x8d\xe8\xd5\x8a\x7a\x6e\xac\x7b\xb4\xa0\x3d\x5a\xd0\xb6\xb4\xf3\x2a\x14\xd0\x67\x44\x0d\xaa\xe3\x30\x5d\x72\x91\x6b\x98\xcb\xb6\x0a\xe6\xdb\x40\x10\x72\xa3\xdd\x27\x26\xef\x53\x20\x5e\x7f\x0a\xc4\xab\x4b\x4c\x7e\x35\x9a\xca\x5e\x9d\xdf\xe7\x26\xef\x73\x93\xf7\xc6\x8e\xbd\xb1\x63\xe7\xcb\xf8\x9a\x8c\x1d\x2f\x2c\xb7\x3f\x21\x92\xd0\x6b\x94\xe0\xf7\x02\x3c\xbe\xb7\x17\xe0\xf7\x02\xfc\x17\x2a\xc0\xbf\x8e\x15\xde\x4b\xef\x7b\xe9\x7d\x2f\xbd\xef\xa5\xf7\xbd\xf4\xbe\xf3\x65\xdc\x4b\xef\xcf\x86\x2e\x54\x27\xc2\x77\x46\x18\xea\xe8\xe6\x0b\x12\xc8\xde\x92\xb4\xbe\x97\xd4\xf7\x92\xfa\xeb\x96\xd4\x5f\xcd\x84\xf6\x68\x43\x7b\xb4\xa1\x3d\xda\xd0\x1e\x6d\x68\x23\x19\xe9\xdf\xec\xb1\x7c\x17\xdc\xc4\xfe\xca\x7e\xf7\x43\x22\xc7\xb7\xcb\x05\x33\xff\x3d\xe5\x73\x26\x14\x48\xb4\x5c\x2f\x43\x99\xa8\x61\xe5\xab\x6b\xfe\xee\xe6\xec\xe2\xc3\x79\x98\x86\xf6\xee\xe3\xdd\xf9\xed\xd9\x55\xff\xda\xaf\x8b\x9f\x55\xb8\x16\xf6\xbb\x82\x58\x77\x22\xe7\x0b\x9a\x72\x25\xc5\xe0\xb3\x39\x9d\x66\x68\x97\x20\xfb\xc8\x74\xb3\xd1\x0d\xfe\x12\x8e\xec\xa2\xf8\xe7\x87\xdb\xe2\x5f\x85\x59\x9c\xdf\x16\xff\x1a\xac\x9c\x4d\xd0\x70\x99\x9f\x1d\x92\x0f\xb7\xc7\xe4\x03\x04\xa9\xa4\xe4\x76\x46\x91\x25\x9d\xdf\x1e\x93\x73\xa6\x14\xfc\x92\x7f\xac\xb9\x4e\x60\x6e\x3f\x70\x41\xd3\x25\x71\xd3\xc7\x5c\x54\x0a\xd6\x5f\xb7\x34\xe5\xc5\x13\x7f\xcb\x04\x28\x34\xf9\xea\x9d\xcb\x29\x8f\x68\xb2\xdd\x22\xf6\x2f\xc2\x83\xf4\xee\xf2\x7a\xe5\x52\x84\x6f\x57\xd7\xa2\x7f\x71\x0a\x99\xb1\x6e\xa8\x35\x33\xbf\x60\xca\x68\x4c\x91\x14\xb1\xb5\x88\x1b\x7e\xb6\x0c\xc4\x94\xbf\x49\xc8\x95\xcd\x94\x11\x9e\xfb\x17\xa7\xe4\x88\x5c\x5e\x0f\xc5\xa5\xd1\xaa\x0c\x9f\x65\xe6\x7e\x47\xae\xcb\x15\x11\x52\x13\x3e\x5f\xc8\x54\x53\xa1\x8d\x68\x03\x8c\xcd\xae\x08\x2a\x69\x27\x72\x3e\xcf\x34\xd5\xfc\x81\x55\x16\x55\xa0\x92\x78\xc3\xf4\x59\x0c\x06\xe7\x9a\x35\x44\xce\x97\xcf\x65\x91\x9a\xf6\x0d\xd7\x2d\x6a\x16\x3c\xae\x08\xe7\xae\x09\x9a\xa6\xb4\xc8\x1f\xdf\x71\xcd\xe6\xe5\xf7\x5b\x06\x4c\xfe\xab\x56\x6d\x32\x57\xc2\xb9\xa4\x46\x05\xc5\xf4\xc8\x73\xae\x59\x4a\x93\x8f\x74\xf1\xde\xd9\xb0\x36\xa0\x8f\xff\x7b\x53\x48\x54\x7d\xf7\x4b\xff\x63\x98\xea\xfa\xee\xea\xfa\xf2\xf6\x72\x25\xcd\x14\x5a\xa8\x12\x8d\x79\x7c\x0c\xff\x4b\x8e\x88\x69\xdd\xdf\x5c\x73\xa6\xa9\xb9\xd1\xc9\xd7\x98\xd2\xe5\x53\x30\xb8\x48\x80\x46\x16\x29\x9f\x73\xb3\xaf\x56\x8b\xff\x06\x2f\x47\x7f\xfb\x7b\x2a\xc1\x0f\x30\x69\x13\xe4\x0e\x4d\x45\x4c\xd3\x98\xfc\x4d\x95\xf3\x99\xc1\x78\x84\x3f\xb0\x98\x1c\x92\x99\xd6\x0b\x75\x7c\x74\xf4\xf8\xf8\xd8\x33\x6f\xf7\x64\x3a\x3d\x32\xff\x38\x64\xa2\x37\xd3\xf3\x04\xf3\xb7\xcd\x2a\x1c\x93\xab\x54\x6a\x09\x02\x04\x51\x2c\xe5\x34\x81\x54\xd2\x31\x9e\x76\x39\x21\xbf\x46\x32\x65\xbd\x7c\x63\xac\x62\x89\x42\x89\x53\x3e\x8f\xcc\x4b\x35\x47\xa7\xbc\x9f\x24\x66\x11\x8f\xad\x24\xc5\x44\x24\xc1\xfa\x80\xf6\x4a\xd3\x9e\xcb\x83\x63\xd6\x59\xe4\x97\x33\x10\x36\x68\xcc\x08\x7d\xa0\x3c\x41\x94\x00\x89\x86\x48\x5c\x67\x4c\x6e\x39\x43\xb1\x33\x33\x22\x36\x44\x27\x82\x22\xe9\x5e\x5d\x98\x09\x47\x32\x21\xe3\x6c\x32\x61\x69\xe8\xab\x3a\x30\xd2\x08\x57\x24\x65\x91\x9c\xcf\x99\x40\x53\xa5\x69\x08\xbe\x84\x15\xb3\xa3\xed\x0d\x05\xec\xbf\x11\x53\x80\x02\x62\x09\x07\x5b\x30\xa3\xae\x88\x25\x76\x33\xce\x26\x05\x5f\x18\xe0\x22\xd0\x98\x70\x3d\x14\xfd\xc4\x28\xb6\x73\xa9\x59\x18\x66\x09\x86\xf3\xc2\x82\x03\x43\x48\xd9\x22\xa1\x91\x4b\xe2\x4d\x64\x44\x13\x32\xe1\x09\x53\x4b\xa5\xd9\x3c\x6c\xe0\x6b\xd0\xb5\xcc\x9a\x71\x45\x62\xf9\x28\x12\x49\xed\x3c\xca\x9f\x7d\x53\xe4\x2d\x03\x97\x2d\x3f\x48\x53\x99\xc2\xff\xfc\xc4\x45\xbc\xd9\x19\xbc\xbb\xf8\xe9\xe2\xf2\xe7\xc2\x31\xbc\xbb\x19\x5c\x87\x7f\xdf\xfc\x72\x73\x3b\xf8\xb8\xf2\x1c\x96\x5b\xc9\x29\x0b\x86\x07\x32\xf8\x31\xb9\xc1\x45\x90\x29\x31\x5a\x55\xc3\xa4\x3e\x5a\x52\xca\x7f\x90\x31\xdb\x6c\x6e\x1f\xfb\x17\x77\xfd\x02\x47\xb9\x39\xf9\x71\x70\x7a\x77\x5e\x10\xf0\xdc\xfc\x82\x5f\xae\x07\x28\xbe\x85\xbf\x9d\xfc\x78\x76\x7e\x3a\xaa\x11\xf8\xde\x5d\x0f\x4e\x2e\x3f\x0d\xae\x73\xd9\xac\x76\x89\x4a\x83\x29\x33\xab\x5b\x64\x4a\x33\x19\x93\xf1\x32\xcc\x33\xcd\xb1\x11\x1e\xa9\x22\x09\xf8\x63\x72\x8c\x0e\x6c\xf5\x18\x78\x93\x03\x8b\xc8\xbf\x30\x02\xff\x81\x7d\x07\xa0\x1d\x50\x39\xa2\xba\x88\x15\x11\x36\x6c\x7a\xa7\x22\x50\x34\x10\xe4\xc1\x2f\x9c\x51\x85\x94\x79\x31\x33\x87\x3a\xe5\xd3\x29\x28\xfe\xa5\xa1\x62\x6b\xf6\x53\x58\x5e\xf8\x0e\xf7\x7f\x91\x4a\x38\xe7\xa6\x5b\x6b\x31\xf2\x5a\x05\x7e\x88\xc8\x94\x85\x16\x53\x0a\x0a\x43\xcd\xd0\xdc\x66\x99\x45\x68\x5c\x2f\x3c\x8f\x79\x60\x34\xb0\x2d\x85\xf6\x8a\x45\xca\x1e\xb8\xcc\x82\x4f\x2d\x62\x49\x61\xc7\x6b\x9b\xcf\x17\x00\x96\x0d\x95\x9a\x52\x33\x9e\x3c\x6a\x5b\x30\x2c\xec\x01\x5a\x98\xa4\x72\x5e\xd3\x46\xf1\x98\x9c\x5d\xde\xe8\x94\x6a\x36\x5d\x9e\x5a\x96\xb1\xf9\xf1\x38\xbd\xfc\xf9\xe2\xfc\xb2\x7f\x3a\x1a\xf4\x3f\x14\x4f\xbc\x7f\x72\x73\x7b\x3d\xe8\x7f\x2c\x3e\x1a\x5d\x5c\xde\x8e\xdc\x1b\x2b\x49\xbe\xa1\x83\xea\x3d\x5d\x7c\xf1\x98\x18\x96\x0b\xac\xd1\x41\xc0\x05\xfc\x71\xcc\x26\x32\x45\x3e\x3f\x77\xee\x4b\xb8\x51\x88\x5f\x5b\x16\xa3\xf2\x5e\x9c\xc5\x31\x68\xb6\x75\x4d\xa2\xd5\x4a\xa7\x8c\xce\xe1\x9e\xa0\x82\x0c\x44\x7c\x78\x39\x39\xbc\xc1\x1f\xe7\x34\xbd\x67\xa9\xff\xf4\x31\xe5\x5a\x33\x30\xff\x73\xeb\x19\x00\xcd\x1b\x86\x6c\x2e\x32\x08\xaf\xcf\x3b\xe8\x91\x6b\xc3\xf7\xcd\xfb\xfe\x52\x33\xc4\x1e\x33\x4d\x79\xa2\xec\x60\x0b\xeb\x7a\x4c\xce\x69\x3a\xcd\xf5\xe8\xaf\xe5\x64\x82\x8d\x7d\x83\xc3\x30\x77\x58\x61\x16\x35\xbc\xd7\x90\x86\xbb\x17\xa1\x3f\xfb\xb2\x97\xfe\xaa\x54\x75\xb7\xd8\x8e\xa6\xee\xae\x60\xc5\x2f\x2f\x46\x83\xff\x3e\x2b\x68\x42\xf6\x49\x0d\xad\xc1\xc4\xf1\xf1\xea\x4b\xa6\xbe\xed\x2a\x39\x15\x5f\xac\x21\x27\xcc\xc2\x31\x3b\x3f\x31\xba\x55\x0d\x2d\xb1\xcf\x5c\xe3\xc6\x84\xe3\x2e\x91\x50\xde\x0c\x98\x47\xe8\x62\xc1\x68\xaa\xea\x76\xbb\x28\x06\x36\xec\x3d\xf6\x14\xf6\x61\x37\xd9\xf5\x73\x40\xa4\x48\x96\xa1\x10\x51\xa2\xc8\x16\x34\x80\x6d\x55\x28\xe0\x0a\xe0\x7f\x2e\x2d\xd4\xce\x47\xae\x8c\x8a\x84\x3f\xfe\x60\x31\x80\x36\x23\x88\xf7\xfd\xb3\xf3\x92\x70\x31\x3a\x1d\xbc\xef\xdf\x9d\xaf\x56\xf3\x0b\xdf\x95\xb7\x98\x1c\x12\xf3\xbc\xe8\x3b\xe3\x13\xbc\x33\x1c\x92\x11\x2a\x70\x4c\x18\xf1\xd3\x25\xcd\xa0\xbd\x29\x66\x8b\x44\x2e\xe7\x4c\x80\xf9\xbe\x70\x13\x9a\xf5\x9c\x50\x6e\xaf\x96\x60\xb0\xc7\x46\x66\xb1\x96\x45\xb8\xc6\x0e\x1d\x7c\x12\x8b\xfd\xcd\x5b\x44\x4f\x2a\xb1\xee\x2b\xb4\x7e\xdb\xff\xdc\x68\xaa\x37\x3c\x63\xfd\x93\xdb\xb3\x4f\x05\x9b\x43\xff\xfa\xe4\xc7\xb3\x4f\x75\x52\xcd\xe8\xc3\xe0\x62\x70\xdd\xbf\x5d\x23\x9c\x94\x9a\xac\x13\x4e\x94\x19\x70\xd9\xfb\xc1\x95\x8f\x0a\x30\x67\x27\x95\x09\xe1\x5a\x91\x07\xae\xf8\x98\x03\x62\x95\xf5\x24\xdc\x9d\x01\x67\x85\x34\x29\xae\x97\x4e\x7c\xc1\x7e\x8b\xfb\x68\x38\xa9\x6d\x1f\x95\xec\xd0\xbf\x10\x19\x95\x0c\x37\xc7\x4d\xfa\x98\xf4\xd3\x68\xc6\x1f\x40\x69\x0b\x3e\x13\x46\x90\x16\x53\x96\xe2\x70\xc0\x7a\x1a\x8e\x25\x78\x6e\x46\x15\x0a\x2b\xf9\xaa\x79\xa1\x75\xca\x84\x51\xfc\xc3\x4e\x50\x90\x4a\x99\xf8\xca\xc8\x5c\x8b\x84\x47\x5c\x27\x4b\x12\x81\xc5\x26\x36\x62\xee\x9c\x0a\x3a\xb5\xc2\x01\xa8\x39\x25\x92\xf8\x0b\xc2\x7a\x5d\x4e\xac\x69\xee\x96\xb3\x0d\x8f\xd9\xdd\xc5\xe9\xe0\xfd\xd9\x45\x91\x04\x7e\x3c\xfb\x50\x10\x61\x3f\x0e\x4e\xcf\xee\x0a\xb7\xb9\x91\x64\x57\xcb\xf5\xe5\x66\x6b\x8e\xa2\x7f\xe9\x98\x9c\xe2\xa7\xc7\x66\x71\x6b\x30\xcb\xbc\xf2\x5b\x5a\x87\x6b\x17\x96\xe3\xfe\x31\x10\x3a\xad\xb5\x2b\xb6\x35\x98\x58\x1f\x42\xc1\x62\x52\xef\x6a\xac\xf4\x7d\x51\x76\x0a\x55\x5d\xb1\xd6\x91\x60\x3a\xe9\xe5\x76\x94\xd0\x07\x09\x46\x83\x26\x93\x4d\x8d\x59\x3a\x67\xd8\x9f\xc0\xc5\x34\xcf\x94\x46\x57\x00\x10\x27\xb9\xff\xb3\x32\x0b\x0a\xae\x82\x1e\xb9\x61\x6c\x28\x9c\xf5\x60\xca\xf5\x2c\x1b\xf7\x22\x39\x3f\xca\x01\xf3\x8e\xe8\x82\xcf\xa9\x91\xa4\x59\xba\x3c\x1a\x27\x72\x7c\x34\xa7\x4a\xb3\xf4\x68\x71\x3f\x05\x2f\xb8\x73\x87\x1c\xf9\x66\xa7\xf2\x77\xe7\x7f\xfc\xf6\xf0\xfc\xcf\xdf\xbe\xab\xda\x83\x9a\xf6\x7f\x20\x22\xba\x50\x59\x62\xa3\x66\xd2\x70\x6d\xdc\x91\xcf\xd8\xba\xfd\xbe\x28\x6e\xd7\x76\xfa\xeb\xc9\xd5\x5d\xc1\x3e\x5b\xfc\xf3\xe3\xe0\xe3\xe5\xf5\x2f\x05\x4e\x79\x7b\x79\xdd\xff\xb0\xda\x4e\x5b\x51\x70\x4b\xcb\xf0\x93\x90\x8f\xa2\x38\x7b\x55\x9e\x74\x26\x34\x9f\x33\xa7\xdf\xda\x3f\x6f\x71\xa6\x1b\xcc\xfc\xf2\xf6\xc7\xa2\x24\xf5\xfe\xfc\x97\xdb\xc1\xe8\xe6\xf4\xa7\x95\x33\xc1\xcf\x0a\x23\xbb\x01\xef\xfc\x89\x4c\xb2\xb9\x08\xff\xbd\xf9\xd8\xce\x2e\x6e\x07\x1f\xca\xa3\xbb\xec\xdf\x16\x97\xfd\xba\x18\x41\xf2\xee\x87\xcb\xcb\xf3\x41\xc1\x5f\xf2\xee\xb4\x7f\x3b\xb8\x3d\xfb\x58\xb8\xed\x4e\xef\xae\x11\xe3\x6e\xd5\x34\xdd\x08\x6a\x26\x6a\xa6\x15\x4e\x73\xd7\x7c\xa6\xd5\x31\xef\xdb\x88\x4d\x3c\x28\x87\x01\x0a\x0a\xc6\x4a\x80\xc9\xe4\xd0\xdb\x2b\x23\x1c\x69\x2d\xaf\xd1\xc5\x6d\x22\xcd\xbc\x6e\xe5\x46\xaf\x62\x79\xb7\x7e\x08\x08\xfc\x88\x9a\x2c\x4d\x12\xf9\x88\xb1\x72\x73\x6e\xae\x3c\x8b\x89\x65\x5e\x51\x24\xca\xd2\x94\x09\x9d\x2c\x7b\x35\xec\xa4\xb8\x2d\x2c\x4a\x99\xfe\x28\x33\xa1\x37\x27\xb9\xfe\x45\xe1\x50\x0f\x2e\x3e\x8d\x3e\xf5\x8b\x14\x78\x76\xbe\xfa\x90\x87\x4d\xd4\xdc\x73\xfd\x8b\x5f\xfc\x0d\x07\x11\x95\x07\x5e\xfd\x43\xc1\x30\x4a\xb8\x91\x29\x23\x6a\x54\xc3\x04\xc4\x05\xc2\x38\xe8\xf3\x73\x33\x39\x88\xe0\x5a\xa0\x6b\x02\xc1\x46\x71\x90\xc7\xee\x1f\xa5\xf6\x14\xac\x0b\x98\x2a\x5d\xc0\x2a\xb4\x63\x55\x56\x41\x98\x78\xe0\xa9\x04\xf4\x52\xf2\x40\x53\x6e\x44\x5d\x6c\xd9\xcc\xf5\x18\xfe\xb7\x5b\x9b\x60\x75\x2c\x31\xae\x1b\x99\xea\x53\x1f\x29\xb7\x99\xa9\xa1\x2e\x62\xac\x1a\x2b\x56\x6f\x45\xa8\x7e\x5b\xb3\x39\x5b\x46\xd4\x15\x26\x7c\x4b\xd5\x7d\xc5\x1e\x79\x26\x94\xa6\x22\x62\x27\x09\x55\x6a\xd3\x55\x40\xbd\xe7\xa0\xc8\x28\xaf\xaf\xef\xae\x6e\xcf\x7e\x58\x43\x9c\xe5\x8f\xab\x31\x8a\x51\x92\x39\x93\xfd\x38\x95\x34\x26\x66\xd7\xa7\x12\xdd\x03\x56\x18\xc8\xf1\x69\x31\xde\xd7\x07\x49\x14\xb0\x71\xf3\x30\x45\xab\xfb\x84\xe6\x45\x6e\x17\x82\x44\x66\x25\x48\xa0\x06\x39\x66\x05\xde\x06\x84\xed\xb7\x1a\xef\x22\xa1\x7a\x22\xd3\x39\x12\x67\x61\xd2\xd8\xf8\xea\x46\xb9\xd0\x2c\x4d\xb3\x85\xe6\x0e\x70\xb8\x7c\xb9\x42\xbd\x68\x39\xfd\xc8\x94\xa2\x53\xb6\x8d\x53\xaa\x4e\xa0\xb8\xf9\x14\xfe\x09\x4e\xa7\x36\xc2\x42\x61\x84\x2e\x9a\xcd\xd1\xd3\xa5\x78\x4f\x79\x92\xa5\xec\x4a\x26\x3c\xda\xd0\x89\x6e\xb4\xe0\xd1\xd9\x47\x23\xd8\xf7\x6f\x07\xe7\x05\x0e\x08\xcf\xfa\xef\x6f\x07\xd7\x16\xd1\xb5\xff\xc3\xf9\x60\x74\x71\x79\x3a\xb8\x19\x9d\x5c\x7e\xbc\x3a\x1f\xac\xf1\x4d\x37\x36\x5e\xb5\xb8\x94\x5f\x3d\xae\xfc\x02\x3b\x9c\x66\xa8\x37\x39\x1d\x1a\xa2\xc9\x29\x4f\xc0\x31\x26\xd1\x41\x46\x89\x90\x31\xe2\x6a\x28\xa7\xb1\x79\xa8\x55\x72\xa6\xbf\x4a\x12\x42\x33\x2d\xe7\x14\x2c\xb9\xc9\x72\x28\xe8\x58\xa6\x1a\xf4\x46\x7f\xe7\x90\x34\x13\xc2\x9c\x6f\xd3\x18\xe2\x08\x47\x09\xa3\x82\x64\x8b\x20\x09\xc0\xda\x12\x27\x5c\x40\xf4\xcc\x9c\xa6\xf7\xae\x28\x92\x0f\xad\xf4\x87\x42\x11\xaa\x86\x02\xf1\x3e\x2c\x93\x6d\xb1\xc2\xc7\xad\xde\x6a\x5c\x9d\x39\xbd\x67\x66\x55\xe6\x59\x34\x33\x9a\xe7\x34\x65\x4a\x59\x7b\x53\x44\x05\x3a\x25\xed\xeb\x8f\x3c\x49\x86\x42\x48\xb3\x14\xce\xac\x15\xb3\x05\x13\x31\x13\x11\xc7\x70\x7f\xf0\xe7\x79\x73\xc7\x34\xa5\x8b\x19\x51\x12\x1c\x61\xb0\xec\xa0\xd3\xe2\x47\x2e\x94\xc7\x22\x9c\xc0\xe3\xd0\x2a\x95\x66\x86\x4f\x5c\xc2\xf5\x86\xab\x0c\x1f\x3b\x93\x94\x33\xc5\xa2\x6d\x60\xbe\x48\x98\x46\x44\x69\x58\x72\xd8\x0c\xb3\xd6\x85\xfd\x30\xdb\x54\xb7\x09\x43\x91\x8f\x99\x2a\x3b\xa2\x5e\x8d\xb5\xcb\x1e\x29\xf2\x23\x15\x71\x62\x5a\x71\x76\xcd\xe2\x59\x84\xf0\xd2\xbe\xa1\x1a\x77\x1a\xb7\x91\x01\x23\x9a\xa9\x4e\x42\xe0\xea\x1c\x0d\xb4\x14\x1c\xe6\x8e\x62\x20\x6f\x9b\xa0\x01\xab\xbb\x30\x2c\x92\x26\xd2\xae\x12\xbe\x9e\x61\x95\x14\x02\xa3\x69\xd0\x4a\x17\x29\x17\x11\x5f\xd0\x64\x23\x91\xb5\x14\x60\x67\xe3\xd6\xbe\xe6\x13\x43\x3e\xdf\x54\x5c\x39\x9a\xa5\x73\x48\x5c\xb2\xc3\xf4\x5b\xd8\x41\xbb\xb4\x91\x8a\x4c\xe5\x1e\x66\x9a\xca\x0c\x6d\xf4\xb0\x2e\x2c\xae\x39\xaa\xbd\xba\xed\x36\x27\x83\x16\x83\x9a\x36\xd8\x6c\x8c\x06\x68\x5a\xbf\x52\x2b\xb6\x77\x0c\x47\xa1\xc9\x55\x7d\x9b\x75\x3b\x10\x3c\xfc\xd7\x2a\xda\xf9\x48\x17\x86\x66\x2c\xce\x35\xcd\xe7\x68\x65\x3b\x5b\x3b\xc7\xf9\xd4\x03\x7f\x9a\x8f\xf5\x6c\xbf\x1b\xf9\x12\xda\xa0\x88\x6a\x27\x05\xbf\x62\x90\x7b\x66\x69\x7c\x92\x69\x73\x3c\x29\x78\x26\xc9\xd7\xac\x37\xed\x11\x87\x48\x7e\x40\xfa\x57\x57\x83\x8b\xd3\x03\xc2\x74\xf4\x8d\x8b\xda\xb1\x41\x0c\x43\xa1\xa5\x95\x56\x96\x64\x26\x1f\x81\x37\xb2\x74\xca\x0a\x73\x76\x11\x0f\x80\x88\x34\xe5\x4a\xa7\x36\xee\x42\xc4\x21\x1e\x3f\x9f\x97\x45\x5c\xa4\x90\x4c\xcf\xb6\x21\x0d\xaa\x54\x36\x37\x22\xf8\x88\xd3\xf9\x28\x95\xc9\x36\x4c\xe1\x14\xa6\x02\x52\xbe\x4f\xdb\xe3\x74\x4e\x4c\xb3\xd6\x3d\xec\xdd\x10\x5e\xa4\x33\x82\x91\xe1\xcb\xe6\xde\x0c\xee\x2d\x67\x91\xb4\x31\x2a\xdc\xb9\x45\x21\xad\xaf\x81\x55\xe4\xa6\xa4\x91\xb5\xde\x8d\x68\x14\x19\x4d\x61\xc7\x93\x0a\x8a\x3c\x38\x33\xa1\xed\xe8\xc9\xa6\xb9\x8e\xce\xdd\x30\x17\x86\x83\x41\x38\x5c\x15\x9f\xbd\xa6\xdf\xf1\xb2\xd2\xab\x2b\xc3\x70\xa7\xbc\x26\x88\x97\xb0\x62\xb0\x93\x0a\xcb\x38\xe8\x19\xb3\x70\x62\x61\x97\x2e\xc8\xd5\x34\xbc\x94\x59\x5a\xc7\xe8\x86\xe2\x94\x2d\x52\x66\x24\xfd\xb2\x51\xd5\xd3\xf4\x75\x91\x12\xf7\x74\xbd\xa7\xeb\x37\x4f\xd7\x27\x58\x7a\xc5\xd9\x8f\x83\xd2\x06\xdb\x10\x7a\x5d\x2b\xab\x5a\x22\x4f\x7e\xbf\x9f\xe0\xc5\x5e\x57\x31\xa2\x48\x45\xee\x0e\xe6\xa2\x52\x2b\x07\x37\x12\x0a\xbf\xc2\x85\xfb\xf7\x4c\x6a\xaa\xbe\xe9\x0d\x85\x91\x1e\xee\xd9\x12\xcd\x23\xe6\x7e\xfe\xbd\x11\x42\x0f\x15\x13\x0a\x62\x1f\x7f\x8f\x86\x6c\xb3\xb7\xce\xbc\x84\x3a\x19\x96\xe8\x29\x16\xb3\x80\x78\x35\xdb\xa8\x15\x0f\xf2\x68\xc0\xbc\x02\x86\x7b\x86\xc3\x9f\x32\x0d\xf9\x42\x9a\x6b\x50\x16\x62\xac\x01\x54\x19\xfa\x5a\x1b\x22\x52\x45\x2a\xc1\xae\x19\x67\xdb\x71\x3c\x55\x6d\x63\x2d\x4b\xf0\x62\xf2\x8d\x0d\x00\x3d\x72\x06\x93\x28\x95\x95\xc2\x3a\x54\x11\xdc\xe9\x31\x9e\x03\xe7\xcc\x61\xa2\xf7\xc8\xef\xf9\x82\xc5\x9c\x42\x38\xa8\xf9\xeb\xc8\xcc\xeb\x77\x27\xd7\x97\x17\xa3\x3c\x88\xfb\xbf\x86\xa2\x9f\x28\x49\x8c\xe0\x2f\x53\xad\x88\x90\xc2\xc7\x9e\x2e\x52\xe6\x64\x21\x3b\x17\xb3\xaa\x81\x29\x78\x28\x9a\x46\x10\xcb\x48\xf5\xe8\xa3\xea\xd1\x39\xfd\x87\x14\xe0\x57\xea\xc3\x3f\x4f\x12\x99\xc5\x3f\x53\x1d\xcd\x8e\xc0\xdd\xa3\x8f\xd8\x03\x13\x1a\xcd\xca\x66\xb9\x62\xc8\x44\x51\x10\xba\xfa\x3b\x33\xe6\x3c\x9e\x5c\x19\x15\x2e\x62\x0b\x4d\xfe\xdf\x94\x8d\xa5\xd4\xf5\xdc\x59\x4e\x26\x8a\x75\xe2\xc4\xb9\x76\x72\x73\x49\xfe\xfc\xa7\x6f\xbf\x33\x24\xb4\xc9\x1a\x9f\xdd\x5c\x8e\xcc\xf7\xbf\x3b\xb5\xdf\xab\x0e\x9c\xf5\x12\xad\xba\xc0\xc6\x1d\xf1\x60\x14\x69\x26\x80\xed\xa7\x58\x6d\x59\x12\x8a\xe4\x90\xef\x63\x1d\x77\x3b\xc5\x9c\xbd\xad\x02\xc6\xb7\xb8\xce\x3e\x24\x72\x0c\x06\x91\xac\x50\xed\x63\x85\xbb\xb3\xab\x1b\xa4\x7c\x31\x71\xb5\x48\xe8\xb2\xd2\xc3\xba\x65\xbf\x30\xdc\x69\x41\x23\x96\x27\x1b\xba\xc8\x84\x48\xce\xe7\x10\x2d\xe3\xe2\x13\x62\x3e\x81\xb0\x19\x6d\x2e\x3b\x32\x66\xfa\x11\x82\xb4\xdc\xaf\xfe\x92\x76\x96\x48\xc3\xca\x80\x5d\x0e\xcd\x22\xc7\x19\x58\xbf\x87\xef\x0e\xc8\xf0\x5d\xcc\x1e\x58\x22\x17\xe6\x34\x9b\x1f\x98\x8e\xea\x36\x71\x30\xa7\x3c\xb9\x90\xda\xc7\xfd\x6c\xb3\x9f\x29\x8b\xf8\x82\x9b\xd3\x35\x62\xa6\xdd\x27\xcd\x06\xa8\x3f\x60\xb7\x33\xe6\x41\x11\x60\x0c\x84\xc6\xb1\x21\x62\x28\x7d\xe2\x86\x97\xdb\x96\x45\x30\xf5\x02\xa4\x7f\x77\x81\xc5\x68\x95\xd0\x63\xd8\x66\x31\xa8\xaa\x76\x07\xbc\xc5\x61\xa7\x27\xa9\xde\xb7\x16\xc9\xd4\x23\x28\xfb\x8e\xf3\x32\x14\x2b\xe9\xdf\x56\xd5\x09\xd2\x11\xad\xa9\xae\xd1\xb4\x51\x3e\x80\x66\x2d\xda\x8d\xb3\xb8\x32\x37\xe6\xbb\x95\x43\x53\x21\x1e\x48\x14\x16\xc7\x02\xb5\xda\x06\xd2\x96\x63\x77\xd9\xda\x11\x47\x89\x54\x59\xda\xd2\x71\x59\x1c\xf4\x89\xfd\x74\xd5\xb8\x07\xa1\x15\x22\x4b\xb4\xea\x64\xe8\xa8\x59\xf8\x52\xe2\x27\xb2\x09\x6d\x25\x67\xfb\xf6\x01\xc9\x2b\xeb\xd3\x24\x8f\x32\x16\x31\xc9\xa5\xc4\xa1\xc8\x6d\x59\x8a\x3c\xb2\x04\xcc\xdf\x91\x9c\x2f\x40\x02\xb2\xc3\xb5\x2d\x99\x0b\x5c\x53\xcd\x0e\x88\xcc\xb4\x69\xec\x00\x4b\x1a\xda\x2d\x38\x1c\x53\x00\x25\xc9\x4b\x31\x83\x4c\x6e\x7d\x79\x1e\x88\x02\x69\x1d\x59\x21\x17\xe4\x03\xd3\xd0\x0a\x00\xfd\x84\x13\xc4\xd2\x8d\x2b\x8f\xd2\x49\x65\xdb\x3a\x9f\x28\x3b\x93\x0e\x3b\x9f\x27\x59\xfc\x90\xc8\xf1\xca\x7d\xbf\x84\xc6\xc9\xdd\xf5\x99\x73\x1e\xe4\x76\xd5\x00\xa9\x60\x1d\x75\xb2\x34\x2d\x44\x3c\xae\x39\xf8\xc5\x94\x8c\xd5\x84\x09\x09\x11\x5c\x60\x7a\x0a\x24\x11\x95\xc7\x69\x2d\xee\xeb\xc6\x08\xf6\xcf\xd1\xdb\xb1\x3e\xe3\x78\xe7\x55\x8b\xfb\xba\xed\x2f\x5a\xea\x9f\x7a\x32\x70\x34\xf4\x8c\xf1\x94\xb4\x9a\x96\x3b\xb9\x23\x3c\xed\xed\x89\x26\xa7\xea\x26\x91\x16\xd9\x87\x67\x0d\x66\x60\x16\x86\xa8\x50\x61\xb4\x37\x14\xa5\x41\x58\x17\x8e\x22\x40\x5e\xf0\x0b\x17\xa4\xc0\xf5\x0f\xc8\x84\x7f\xb6\x8d\xe6\xae\x5d\xf7\x6a\xa0\xeb\x37\xb8\x12\x66\xb4\x4a\x76\x1d\x6e\xc6\x2b\xf8\x7e\xa5\x69\x5b\x2a\x6d\x04\x0b\x23\x9c\xa5\xcc\x88\xd0\x2c\x26\xd0\xad\x77\x34\xaf\xbd\x15\x35\x4d\xcd\xa2\xd0\x4e\x2a\x45\x0e\xcb\x15\x53\xcd\x0e\x35\x5f\x1b\x0f\xb8\x40\x47\x84\x79\x93\x50\x1d\x64\xc7\xe5\xcc\x75\xcc\xa6\x54\x38\xaf\x64\xc3\x70\x1d\x57\xdf\xe2\x34\x1b\x21\x8d\x42\x40\x07\x88\x10\x66\x40\xc5\x71\xa8\x05\xac\xe7\xca\x71\x58\xc3\xcf\x6b\x58\xb6\x47\xea\xed\x50\x0d\x83\xcd\xa0\xf8\xfd\xab\x19\x6c\x42\x95\x26\x76\x4c\x4d\xca\x52\x20\xc4\xee\x20\xad\x77\x55\x41\xb4\x50\xfb\x68\x6b\x72\x32\x24\x54\x94\xb3\x99\xd6\xdc\x56\xeb\xca\x14\xb3\x49\x13\x73\x96\x4e\x9d\xac\x87\x95\x14\xfc\xd9\xb6\x25\x15\x1c\x23\x0d\x99\x09\xf8\xa7\xab\x4d\xf7\x48\x5f\x54\xd2\xc7\x9c\x49\xb2\xb0\x5e\xc8\xb6\x69\xf2\x48\x97\x8a\x2c\x52\xcc\xb4\x40\xa7\xb5\x9b\x3c\xf8\x8a\x8a\x1f\x79\x63\x88\x76\x51\x03\x50\x30\xb9\x85\xbd\x38\x28\x10\xd8\x9e\xdb\xb5\x14\xfb\x4b\x0e\xd5\xba\x1a\x7e\x5e\x9b\xaa\x65\x75\x15\x39\x36\x4f\xbb\x0c\xc3\x72\x2d\xb6\x0b\x88\x95\x56\xb1\x18\x14\x9d\xb1\x4d\xb2\x1e\x18\x12\xcf\xe9\x98\x25\x5b\xfb\x4c\x37\x32\xea\x40\xd7\x16\x75\xc7\xe8\xf0\x0c\x9d\xca\x50\xfd\x3a\x2d\xb3\x36\x67\x0a\x4d\xb3\x3a\x17\xf3\xaa\x79\x16\x0a\x81\x6c\x31\x51\x07\x23\xb5\xc9\x54\x9b\xc0\xa5\xc2\x2b\x24\x00\x61\xaa\x53\xa7\xc3\xab\xa4\x6c\x41\xda\x6c\x20\x01\x16\x54\xc3\x38\xb6\x06\x83\x5a\x3b\x95\x8d\x43\x6c\x5b\x82\xac\x9e\x4d\x88\x90\x82\x11\xae\xf2\x97\x75\x31\xaa\xc6\x67\x7f\x18\x89\x12\x75\xf5\x6a\x69\xab\xa7\x56\xcc\xf3\xd0\x61\xaf\x4a\xba\xe8\x46\xc1\x8c\x5e\x43\xd3\x25\x64\x8f\x23\x4f\x2b\xca\x47\x6b\xc7\xb9\x73\xe1\xf5\xd6\x81\x03\x04\x0e\x1f\x2d\x09\x88\x64\xa5\xc1\x11\x4c\xb1\xb7\x2f\xd9\x8f\x6c\x06\xc4\x50\x78\x45\x18\x08\x91\x2b\x32\xa7\x8b\x1e\x81\x5d\xd3\xf9\x57\x98\xd1\xa3\xfd\x16\x1e\xe4\x75\xe7\x01\xa2\xb1\x61\x05\xd6\x59\x02\xdc\x55\x96\xaf\x6b\x31\x73\xda\xa1\x3e\x60\x65\xfc\xba\x92\xdd\xae\xd3\x64\x79\x48\x95\xe2\x53\x73\x0d\x05\x76\xce\xd5\x1c\xc9\x96\xb5\x7a\x05\xe6\xab\xf6\x4b\x66\x36\x3e\xab\x18\xb4\x30\xff\x2e\xd7\xc0\x83\x44\xa9\x90\x4a\x2d\x24\x04\x16\x5b\xa6\x8a\xfc\x5e\x48\xfd\xfb\x00\x34\xc3\xe9\xca\x58\xf5\xcc\x5a\x2c\x0e\x2a\x68\x5e\x70\x68\x2d\xe1\x10\x1a\x24\x6f\xad\x5d\xf9\x6d\x91\x5a\x72\xff\xe9\x93\x4a\x76\x83\x6a\x30\x55\x13\x1c\x22\xc2\x04\xef\xcc\x40\xf0\x1c\xf5\x3c\x09\x92\x41\xca\x5c\x22\xdf\x5c\xa6\xac\x04\x55\x8c\xfc\xdc\x47\x1b\xce\x17\xba\x36\xd1\xa0\x2a\x1a\xd5\xd8\xc7\x10\xb5\x35\x3f\xe9\x05\xbb\x98\xea\x0d\xc5\x0d\x63\xcd\x50\x9e\x7e\x2f\x7e\x85\x86\x60\xac\x36\xbd\x77\x15\xa5\xed\x22\xf4\x70\x5e\x4c\xd4\x5e\x41\x35\x6b\xf0\x35\xea\x75\xfc\x4d\xc2\x05\x9b\x64\x5c\x6f\xd3\x0e\x6b\xd2\x35\x01\x48\xf4\x86\xe2\xbd\x4c\xed\x15\xac\x2c\x60\xd3\x98\x46\xf7\x87\x4c\xc4\x84\x66\x7a\x86\x40\x0e\xd6\x0c\xbd\xb4\xd4\x60\x24\x0d\x20\x1b\x9f\xe4\xcf\x55\x44\x53\x7b\x79\x4c\xe8\x83\x74\xa3\x18\x8a\xa0\x11\x80\x84\x02\x0c\x40\x40\x42\x6f\x52\xdb\x18\x80\xae\x36\xad\x45\x1d\xc6\x77\x05\xe1\x7b\xf5\x39\x2b\x60\x96\x03\x98\x95\x60\xca\x8a\xec\xa5\xd5\x39\x73\xc6\x2d\xa7\x2b\xa9\xb0\xea\xa3\x7f\xf3\xc0\x06\x01\xa3\x79\xc7\xce\xc0\x48\x3a\xdf\x3a\x5e\x5b\x00\xa4\x98\x64\x29\xc4\x72\xd4\xb5\xf9\x75\x34\xe3\x49\x6e\xea\xfe\xe6\xc0\x0f\xd3\x34\x99\xb0\x07\x96\x20\x1c\x52\x94\x82\x9f\x1b\x7d\xae\xdf\x92\xff\x83\xb8\xd7\xe4\xbb\xa1\xf8\x00\x6c\x38\x49\x96\x90\xac\xed\x5b\xa6\xba\xd4\xcc\x7d\xed\x00\xb4\x8d\x28\x21\xc5\x81\xe0\x5e\xcf\xe8\x03\x1b\x0a\xd7\xcc\xff\x21\xf7\xe4\x0f\xe4\xbb\x26\xab\x90\x73\x57\x3f\xb1\xcd\xe0\x7d\xe0\x0c\x0e\x6e\x39\xcb\x28\x2d\xbf\x71\x26\x85\x82\x41\xaf\x26\x41\xc3\x63\xae\x70\xf1\x20\xa3\x4a\x4c\x44\x78\x6a\x69\xca\x84\x1e\x09\x19\xb3\x11\xab\xf1\x80\xad\x60\x12\x46\x08\xb8\x90\x31\x5b\xeb\xbf\xf2\xcc\xf4\x67\x30\x83\xa8\x6c\xec\xb7\x03\xe2\xc4\x7d\x50\xb0\xd7\xe4\x8b\x94\x56\x3f\x72\x0f\x6c\xb0\xc9\xb8\x37\xf5\xbd\x5d\x5a\xf9\xec\x00\x2e\x04\x3b\x80\x7a\xff\x4f\x42\xb5\x0b\xa5\x2d\x1f\xc7\xb2\xdd\xd9\xbc\x6c\x66\x6e\x2f\xab\x00\xb2\x01\x40\xe4\x52\x3e\xe5\x46\x7e\x6f\xef\xdf\x03\x4e\xb8\x89\xf1\x1c\xf3\xd7\x5b\x59\xcf\xf3\xa5\x70\xf9\x3a\x87\x9e\xfe\x72\x9f\xd5\x58\x66\x65\x01\xde\x2e\x00\x57\x61\x90\xaf\x95\xd5\x97\x86\x0f\x4f\x31\x90\x8c\xcd\x38\x86\x6e\xf7\x4f\xce\x89\x39\x1d\x72\x8e\x69\x59\xb0\x68\x99\x9e\xc9\x94\xff\xa3\x31\xde\xa7\x59\x46\xcf\x1d\x73\x79\x78\x14\x8e\xb3\x28\xad\x03\xb1\xa2\x48\xa1\x0b\x5a\x49\x9d\xce\x44\xc6\x19\xa4\xf7\x1b\x36\x3b\xc9\x12\xc4\x04\x8b\x64\x1a\x63\x61\x0e\x55\x08\xc6\x32\xef\x79\xf1\x9e\x6a\xdf\x20\xb7\x59\xd0\x16\x75\x2c\x9a\x51\x31\x5d\x2d\x80\xfe\x25\x63\xd9\x8e\xe2\xd9\x2c\x12\xe8\x33\x05\x0a\x94\xd5\x00\x3a\x55\x79\x6c\x23\xae\x8d\xe1\xcd\xf9\xfa\xfe\xdd\xcc\x54\x05\xa1\x8f\xce\x4a\xe7\x93\x61\x51\x25\x47\xcc\xe8\x4e\x16\x9d\x6b\x44\x55\xda\x81\x49\xe7\x39\xdc\xff\x55\x19\xa9\x86\xfd\x58\xf2\x7b\xf0\xd9\x8a\x65\x16\xf1\x44\x76\x12\x07\x4f\x55\x92\x3e\x9e\xd0\x64\xb2\x01\x93\xab\x0a\xd5\xab\xd6\x3b\x30\xa0\x78\xb6\x56\x13\x93\xab\x25\x31\x73\x7f\x4c\x39\x14\xd8\x5e\xe6\x2f\x7b\x78\x74\x77\x5d\x84\x3c\xc6\x48\x29\x28\xd6\x42\x18\x80\x5b\xc2\x65\x4b\x13\x6e\xb3\x01\xc2\x36\x54\xec\xba\xea\x26\x6e\x3a\x11\xc8\x92\x5e\xeb\x91\xa8\x66\x19\xad\x3d\x0c\x1e\x64\xee\x65\x0c\x88\x5e\xb4\x79\xe2\x93\xd1\x89\x42\x82\x8b\xac\x33\x89\xdc\x14\x4d\x95\x9d\xe9\x02\xfb\x1e\x81\xcf\x78\x6b\x57\x49\xe0\x02\xc8\xa3\xce\x31\xdd\xc8\x65\x16\x3e\x93\x21\x13\xbc\xf0\xc5\x84\xa7\xc0\x09\xdf\x94\xd9\xf6\xa4\xfc\x2c\x47\xf7\x72\x1c\xa9\xe5\x50\x56\xba\x1e\x5b\x3a\x12\xc1\x42\xb6\x8a\xbd\x9e\xdb\x20\xc1\xa2\x0b\x0e\x23\x95\x64\x10\x85\x00\xde\xb8\x4c\x11\x9d\x52\x88\x37\x87\x28\xe1\x9f\x51\xcb\xe3\x0a\xad\x30\x0e\xc5\x6b\xbe\xd0\x4b\x0b\xfa\x0a\xbc\xd9\xc2\x41\xea\x19\x15\x36\x79\xb5\xce\xdd\x57\xe6\xd3\x71\xc1\xe1\x57\xd7\x19\x74\x64\x55\xdb\xda\x26\xdd\x42\x87\xc9\x10\xa5\x18\xfc\x26\xef\x3e\x57\x90\x44\x43\x93\x46\x7b\xca\x58\xca\x84\x51\xd1\xa4\x76\xd6\x3e\xae\x58\x5f\x79\x18\x77\xaf\x18\x30\x06\x9d\x66\xcc\xe8\xdc\x34\x49\x4a\xf3\xa2\x50\xc2\x4a\x7b\x0c\x5d\x34\x9a\xe4\x98\x69\xcd\xce\xc7\x83\xf0\xe4\x8f\x59\xd2\x29\xa0\x0b\x3f\x58\x49\x45\xf0\x4a\x5e\x62\xa9\x55\x06\x63\x18\x6d\x54\x9b\xef\xb9\x6e\x60\x61\x96\xe8\x4a\x11\xa2\x98\x69\xb9\xd9\x10\x15\x8b\xb2\x94\xeb\xe5\xc8\x1a\x9e\xda\x33\xad\x1b\xfb\xe5\x89\xfd\xb0\x8d\x56\x77\x4c\x5c\x7f\xce\xd0\x05\xe2\x4d\xca\x11\x20\xd0\x4e\xa1\xcd\x76\x1b\x4d\xad\x36\x0f\x6c\xd5\xc2\xba\x44\xb4\x76\x43\x35\x5d\x6c\x3a\x3c\x0b\x3c\x36\x92\x13\x97\xe2\xd5\x7e\x61\xcb\x88\x6c\x1d\x2c\x76\x29\x02\x3a\x91\x45\xca\x65\x6a\x81\xcf\xda\x04\x29\xcd\xe9\xe7\xd1\x82\xa6\x34\x49\x58\xc2\xd5\x7c\x73\xfb\xe2\x1f\xbf\x5f\x39\xda\x13\x04\xe8\x53\x16\xee\xf2\x33\x9f\x67\xf3\xa0\x34\x22\x20\x80\x04\x79\xfc\xd6\x64\x6f\xd3\xd1\xdc\x00\xf3\x8b\x46\x68\x9e\x06\xc8\x0c\x46\x27\xe6\xca\xf2\x67\xab\x2e\xd3\x68\x06\x25\xab\x26\x94\xa7\x82\x29\xd5\x23\x17\x52\xb3\x63\xf2\x91\x2e\x6e\x41\xe1\x43\xc4\xec\x29\x5a\x68\xa9\x22\x46\x72\xca\x04\xd7\x07\x43\x81\xb1\x6e\x7e\x55\x8e\x22\x29\x10\xdc\x21\x82\x85\xf5\x4d\x80\xc9\xd1\xa1\x1c\x68\x04\xd1\x35\x54\xd2\x2d\xaf\xb9\x18\x1a\x07\x88\xe7\x73\xb8\xe4\x55\x0e\xec\xea\x74\x02\x2f\x62\x15\x48\x11\x80\x18\xe0\xe3\x58\x32\x15\x28\xfb\xc4\xcb\xec\x09\x9f\x30\x43\x21\x43\x21\x27\x45\xc3\x04\xe2\x39\x38\x78\x07\xd3\x69\x94\x4a\xa5\x6c\xb4\x1b\xb6\xb3\x3a\x2c\xf7\xd6\x26\xdb\xef\x22\x8a\xe1\xf9\x22\xde\xab\xe5\x4a\x83\x02\x37\xf5\x62\xff\x98\x79\x60\x81\xc6\x9b\x76\xdb\x90\x58\xc7\x86\x48\xca\xa8\xb2\xd6\x58\x88\x1c\x2d\x85\xcc\x75\x90\xcc\xfd\x98\x31\x76\xfc\xd0\x43\x79\x04\x14\x64\x41\xb5\xb0\xb4\xa0\xa1\xeb\x34\x65\x50\x26\x08\x51\x9d\xce\x4a\x44\x03\x00\x5c\x29\xa3\xf1\x32\x58\x11\x6f\x6f\xc4\x9e\x41\x32\x51\x7c\x6e\x78\x27\xa0\x09\x0a\x79\x28\x17\xee\xb0\x16\xde\x02\x1c\x16\x3e\x31\x84\x18\x58\x2b\xcd\x17\xe2\x10\x0a\xce\x99\xe3\x55\xe3\xaa\x75\x8d\x80\x6b\x17\x40\xa5\x66\xcc\x12\xee\xf0\x5d\xff\x87\xcb\xeb\xdb\xc1\xe9\xf0\x5d\x1e\x9c\xe3\x22\x39\x1d\x23\xf1\x30\x11\x52\x0c\x85\xf7\xa7\xfb\x34\x5a\xd8\x4b\x42\xe3\x38\x07\x31\xc0\xf8\xf1\x11\xba\x03\xdb\x9e\x8a\xb5\x9e\xf4\x6a\x33\xef\xf9\x67\x16\x5f\x37\xc0\xb4\xee\x24\xf6\xa9\x95\xcf\xa8\x96\xc4\x0d\x97\xec\x70\xfb\xfa\xa9\xdc\x99\xef\xda\x53\x30\x9e\x84\x52\x5a\x1b\xe4\xb4\x69\x42\x7d\x05\xe1\x09\xd0\x80\xe1\xcc\x90\x30\xc5\xc0\xda\xf1\x3d\x99\x73\x01\x29\x09\xab\x96\xf6\xae\x38\x8f\x2e\xe0\xfe\x67\x17\x77\xc5\xca\x3b\x3f\x5e\xde\x15\x91\xa5\xfb\xbf\xac\x46\xe4\x2f\xb6\xb0\xca\xac\x1c\x4c\x31\x8f\xfd\xb4\xd9\x7d\x7e\x65\xea\x26\xfa\x81\xe9\x4f\x58\xe9\x6b\x17\xc1\x1c\x16\x63\x17\x54\x6c\x36\x72\xc5\xde\xda\x93\xc1\xa7\x9a\xf2\x70\xc5\x88\x1d\x87\xe2\x0b\x3d\xf8\xfa\x70\x41\xb6\x42\x0f\x31\x94\xa1\xa0\x14\x58\xb6\x9d\x5b\xc4\xdc\x98\x52\x98\xe5\x1a\xc2\xdb\xbe\xdc\x47\xde\x9c\x9c\xe0\xc7\xad\xdc\xf4\xd7\xa1\x73\xde\xb4\x95\x2f\x25\xe9\x5f\x9d\xd5\xac\xf5\x79\x59\x0b\xf9\xb2\xc0\x5d\x12\xaf\x10\xed\x1a\xd7\x25\x88\xb2\x7c\x15\x90\x2e\x76\xa6\xdb\xa1\xb9\xa0\xdd\xe8\xaa\x68\x8c\x7a\x52\x59\x68\x0b\xd1\xa7\x10\x89\x6c\x23\x24\x76\x93\xe9\x97\x2f\x43\xc7\x54\xbf\x70\x40\x36\x9a\x25\x4c\x6f\xab\xba\x4a\x0f\xc2\x74\x37\xac\x62\xe1\x2c\x5f\x3b\x4b\x01\xcc\x67\xd3\x26\x07\xf0\x13\x52\xb4\xcf\x9f\x01\x20\x0b\x07\x4f\xe8\x5c\x9c\x36\x9c\x3d\x9c\x6e\x48\x6d\xdd\xd2\x06\xf3\xf1\x39\xf3\xaf\x45\x06\xa5\x0b\x6a\x01\xd1\x41\x18\x74\xf0\x09\x75\x30\x73\xbd\xa1\x08\xab\xee\xa3\xf8\x66\xce\x88\x83\xea\x00\xd8\x4a\xc3\x4e\x6d\xac\x91\xbf\x99\x0b\x3b\x50\x8e\x9a\xd7\xb3\x22\xd8\x46\xa5\x1f\x7b\x3a\xd5\x8c\xba\x78\x4a\xa7\xf1\x58\x77\x46\x88\x0d\x02\xed\x05\x28\x03\xb6\x63\xf6\xc0\xac\x0b\x84\x06\xe0\x6d\x41\x3c\xbb\x51\x8e\xc4\x57\xda\x47\xac\xf2\xc4\x02\x84\x50\x1f\xa5\x92\xdb\xd9\x15\xe5\xb6\xe5\xd5\x07\x7c\x07\x39\x89\xaa\x04\xc7\xdf\xe1\x58\xc1\x97\x6d\xcc\x04\x40\x09\xa1\x39\x1b\x3a\x6d\x4a\x40\xfc\xbc\x60\xd1\x26\x59\x65\x57\xae\xfa\xf1\x2a\x8b\x76\x11\x11\x16\xac\xb5\x6e\x07\x6d\xbf\xb8\x8b\x08\xbf\x21\xa6\x0d\x51\xaf\xe7\xeb\xb2\xc4\xfc\x2c\x3a\xe5\x7c\x9a\x69\x7c\xb2\x78\x23\x1d\x67\x61\xfb\xc9\xa7\x61\x0d\xf6\x90\xc1\x8f\x2c\x60\xdb\x39\x3d\x4f\x76\xd4\x6d\x25\xcf\xa8\x60\x71\x7e\x25\x69\x51\xeb\x47\xd9\x94\x0f\xb5\x8e\x97\xee\x84\x77\xbb\x40\x0d\x17\x09\x5c\x3a\x54\x85\x10\x10\xa0\x12\x90\xf7\x31\x35\xa8\x3e\xa7\x09\x84\x96\x3a\x27\x5b\x10\xce\x66\x93\xba\xcd\xe2\x29\x4d\xe7\x1e\x0d\xa7\x0c\xb5\x54\x5a\xae\x35\x3c\x6e\x57\x39\x2a\x7b\x89\x66\xd7\x12\x4d\x07\x33\x10\x52\x27\x4b\x4b\xa9\x67\x16\x02\xd9\xe6\x39\x14\x27\x08\x21\x54\xf6\x8a\xb4\x38\xaa\x70\xf5\x73\xe1\xff\x2a\x72\x70\x47\xd4\x21\xa9\xd6\xc5\x86\xf6\x02\x9c\x6c\xb0\x72\x26\xa1\x34\x60\x4d\xb3\x30\x5a\xf4\xa4\x61\x01\x98\xb3\x0b\xac\xd9\x02\x31\xda\x4b\x99\x91\x47\xae\x8c\x2e\x3c\x14\xe0\x6a\xf2\x85\x62\xb4\xb4\xc5\x5d\x0e\xe0\x2d\xc8\xe6\x50\xd9\x78\xce\x35\xa1\xc1\x0c\xef\x80\x33\x5c\xbb\x38\x7e\x3c\xcf\xe6\x03\x98\x71\x6d\xba\x40\x5d\xd6\xde\x9a\x43\xb3\x81\xf1\x27\x6f\x64\xdb\x8c\x80\xc0\x2d\xfe\xb4\x39\x01\x81\xc6\x13\x6a\x98\xb5\x67\x6e\x9f\x14\x40\xea\xad\x0d\x16\x2a\x03\xf0\x4c\xb8\xd2\xa5\xbb\xc5\x02\x64\xac\x49\x08\xc8\x37\xa2\x55\x46\x40\xfe\xfa\x2e\x52\x02\x9a\xb0\xcb\x56\x85\x88\xba\x4f\xea\x05\xad\x1b\x5f\xee\x51\xba\xd8\x8b\x50\x52\xba\x6a\x94\x94\x5e\x5b\xa2\x73\x50\xee\x76\xe3\x08\x85\x2e\xea\x60\x1e\x66\x16\x52\x51\x10\x35\x5a\x4c\x6d\x63\x65\xce\x2f\xa4\x86\xd0\xa0\x08\x00\xcd\x2b\xe1\xaa\x43\x51\x2f\x81\xac\xe6\x89\xdb\x46\xf9\xec\x34\x21\x3a\x38\x7f\x6e\x16\xd6\xa2\xf5\xb3\x0f\xfb\x47\x65\xd9\x42\x93\x97\x45\xcc\xdc\x55\xd1\xa0\x80\x80\xe0\xb1\x49\xdc\x74\xcd\xa9\x6c\x19\x83\xb3\xf6\x5c\xd8\x4b\x77\x87\xaa\x5d\x85\x3b\xb7\x0e\x59\xf2\x32\xb2\xe5\xc6\xce\xe7\xee\xd4\xf8\x92\xc7\x69\x13\xc8\x55\xc0\x19\xd9\x19\x3a\x4a\x39\xc9\xc2\x34\x7e\x00\x5e\x2a\x3b\x74\x8a\xa5\xde\x3c\x2c\x55\x69\x4b\x0a\x13\xb6\x50\xf6\x4f\x30\xe9\xae\x30\xb9\x01\x7c\x64\x6a\xa1\x02\x79\x68\x37\x00\x7c\x5c\x57\xe3\xba\xc8\x87\xbd\x68\x97\x89\x98\xa5\x82\x51\x3d\x7b\xbe\x30\x9d\x93\x6d\x8d\xd3\xcf\x16\xb2\x73\xb2\x13\x8c\xf4\x52\x18\x4c\xc7\x08\x98\x0e\xe1\x24\x39\x62\x6e\x45\x71\xac\xab\x4d\x91\x67\xd2\x75\xa1\xd2\xad\x22\x79\xea\x95\xb9\xa7\x89\x69\xaa\xb1\xfa\x54\xa2\x99\xcc\x61\x0f\x71\x86\xd7\x2c\xc9\x17\x11\x3c\x94\xd2\x47\x6b\x5b\x1b\x99\x3b\x68\x84\x00\x7d\x1d\x76\xf3\x9a\x3e\x22\x64\xda\x29\xd5\xf4\x04\xbf\x5e\x35\xec\x02\xb0\x08\x24\x20\x7a\x78\x98\x05\xba\x83\x2d\xf7\xf2\x05\x8b\x31\x7a\xe6\x6b\xde\x63\x3d\xf2\x43\x22\xc7\xea\x80\x60\xed\xb1\x03\x14\xec\xe1\x39\xa2\x68\x7e\xf3\xfa\x43\xa4\x7e\x9b\x11\x52\xab\x0c\x29\xde\xb6\x0f\x45\x76\x0a\x00\x91\x28\x81\xac\x91\x47\x37\x2f\x84\xeb\x6c\x11\xa1\xd3\xdf\xfe\x62\x7f\x68\x28\x0d\xb8\xa6\xdc\x6d\x68\x17\x11\xcb\xb2\x79\x91\xa6\x71\x62\xd3\x72\xd1\xd4\x51\xd2\x63\x57\x99\x5c\x86\xe2\x47\xf9\xc8\x1e\x58\x7a\x40\xa8\x26\x73\x69\xd4\x90\xc0\xcf\x0e\xa9\x83\x05\xb4\x24\xf4\xa7\x52\x72\x41\xe7\x2c\x1e\x80\x30\x1b\x24\x48\x58\xc3\x8f\x75\xd9\xd4\xa1\x4f\x00\x90\x02\x6e\x83\xf3\xbf\x0e\x05\x56\xd1\xc5\x18\x0e\xe0\x3a\xdc\x4d\x0c\xae\xc4\xdf\x7b\x87\xd2\xef\x7b\xe4\xd6\x50\x3a\x57\xc5\xf1\x06\xc9\xa8\x4d\x63\x1b\x8a\x69\x2a\xb3\x85\xd7\xc5\xe5\x18\x8c\x00\xe8\x58\xaa\x71\x28\xc1\x60\x9c\x37\x29\xa2\xb1\x91\xe9\x57\x13\x4e\xc1\x74\xf4\xca\x2c\xa2\xc5\x24\x96\x90\x80\x0c\x77\xf0\xf1\x23\x36\x42\x10\xfd\x40\x41\x1e\x4b\x33\x9c\xdd\x93\x39\xa9\x4e\x99\x02\xed\xd2\x5b\xef\x0a\x21\xcd\xc5\xb0\xf9\xda\x71\xae\xb2\xad\x78\xfb\xa7\xb3\x11\xd6\x47\xe4\xe7\x9d\xdb\xd8\x11\x57\x03\x0e\x6b\xc8\x3e\x95\xd5\xc5\x11\x52\xfb\xf8\x9c\xd2\xda\x5d\x65\xe9\x42\x02\x4f\x4f\x96\x2e\x83\xc0\x26\xbe\x2e\xe4\x22\xc3\xf8\x18\x1e\x86\x4b\xd4\x52\x36\x57\xfa\x23\xd5\xd1\xcc\x28\x30\x79\x02\xe8\x8e\xe2\x86\x72\xae\xfc\xb4\x96\x98\x9a\x19\x9c\x84\xbd\x37\x98\x26\x5b\x58\xe6\x10\x41\xc6\x85\x1b\xc2\x5f\x49\x42\xe6\xa6\xbf\x42\xc9\x80\xc0\xbe\xe2\x3e\xb1\x4f\xa0\x74\xe9\x1a\x2a\x5a\x37\xfe\x76\xb4\x55\xc4\xab\xdd\x79\x44\xd2\x16\xd9\x4c\xa7\x36\x7f\x31\x7f\x91\x58\x09\xa9\x96\xe5\x64\x29\xdf\x48\x8b\xb5\xf6\x61\x28\x10\x90\x5b\x6e\xe6\x74\x61\xc4\x11\x2d\xcd\x2d\x99\x4e\xd9\x01\x79\x34\xbc\x40\x67\xa9\xb9\x47\xb2\x94\xbb\xb3\x0f\xe6\x96\x36\xd4\x01\x96\x8e\x23\x94\x80\x51\xd0\x8c\x68\x00\xd5\x6c\x6b\xaf\x47\x3a\xa3\x3e\xc0\x09\x68\x22\xe1\xe2\xde\x74\x86\x38\x72\xce\x41\x97\x1a\x5e\x2c\x7d\x22\x61\x61\x4f\xd7\x12\xf6\x16\xbb\xdc\x5c\x78\x64\xdd\x49\xe3\x62\x1a\xe4\x8a\xd7\x5b\x9b\xda\x40\xc1\xd5\x7e\xd9\x0e\xce\xae\xf6\x53\x27\xfb\x6c\xf2\xed\x8a\x3c\xc2\xc6\xcf\xd7\x09\xb0\x85\x60\x4e\x1b\x50\x67\xa5\xa7\x30\x8b\xdf\x5a\x02\x00\x8c\x03\xcb\xda\x50\x2b\x4d\xfd\x97\xff\x17\xc2\xf0\xe2\xd2\xfc\x17\x91\xe9\x50\xe0\xef\x07\x1e\xb6\xcf\xbc\x90\xe3\x61\xd0\x39\xcb\x11\x03\xd2\x62\x6e\x31\x64\xb7\xd8\xdc\x50\xc4\x3e\xf1\xa8\x65\x66\x0c\x41\x0d\xa1\x4a\x51\x97\x39\x15\x74\x0a\x48\x2b\x07\x10\x61\x03\xe2\x6a\x6e\xbb\x40\x92\x46\xb4\x70\xe0\x56\x86\x59\xda\xb4\x82\xbc\xe8\x01\xf4\x89\xa2\xac\x05\x7a\xc8\xdd\xb4\xf5\xd4\xef\x2a\xee\x6c\x26\xb1\xdf\xf6\x6f\x7e\x1a\x5d\x0f\x6e\x2e\xef\xae\x4f\x0a\x62\xfb\xc9\xf9\xdd\xcd\xed\xe0\xba\xf6\x19\x56\xcd\x3c\xbb\xbc\x18\xfd\xe5\x6e\x70\xd7\xf0\xc8\x35\x70\xde\xff\x61\x70\x1e\xbe\xf2\x97\xbb\xfe\xf9\xd9\xed\x2f\xa3\xcb\xf7\xa3\x9b\xc1\xf5\xa7\xb3\x93\xc1\xe8\xe6\x6a\x70\x72\xf6\xfe\xec\x04\xab\x88\x07\xef\x5e\x9d\xdf\x7d\x38\xbb\x18\xb9\xf0\xc5\xf0\xd1\xcf\x97\xd7\x3f\xbd\x3f\xbf\xfc\x79\x14\x74\x79\x79\xf1\xfe\x6c\x75\xed\xe2\xfa\xf9\x36\x96\x39\x08\xae\xaa\x40\xc1\x0c\x04\xa1\xf1\xd2\x12\x2f\xff\x07\x98\x39\xaf\x90\xe2\x0e\x0f\xdc\xbf\xb0\x72\xc8\xa1\x61\x72\xce\x82\x9e\xf3\x87\xa1\xf0\x2e\x0e\x7f\x6d\x6a\x3a\x55\xae\xdc\x6f\x61\xb4\xc7\xa4\x0f\xa7\x01\x54\x82\x42\xa7\x90\x29\xe4\x47\xea\x9c\x62\x40\x69\x50\x08\xdc\x16\xb7\x2e\x6f\x69\xb1\x41\x3b\x27\x18\x82\xb5\xf0\xc7\xab\xe8\xdd\x55\xcc\x2e\xd2\xc2\x31\x71\x3c\xd8\x34\x6b\xc6\x05\x60\x1b\x4b\x41\xe7\x95\xa2\xc6\x88\x37\x61\x91\x28\xcc\xb9\x29\xb7\x58\x20\xa1\x62\xcb\x33\x46\x7e\xfa\x73\x3e\x28\xb0\x76\x5a\xeb\x61\x56\x81\xe3\xb6\x0f\xd2\x0c\x57\x75\x1d\x01\x16\x7a\x72\x07\xd9\x9a\xa1\xe0\x64\xda\xc2\x24\x60\x9a\xce\x44\x90\xdb\x5a\xb0\x53\xdb\x8a\x5c\xe4\x90\x94\xa8\xf8\x98\xdc\xb0\x84\x45\x3a\xaf\xaa\x0c\xbb\xb8\x48\xb2\x29\xaf\xd4\x25\x1a\xb3\x19\x7d\xe0\xd2\xe1\xf5\x21\xac\x21\xac\xa3\x15\x9e\xc8\x21\x69\x3c\x0a\xc7\xa4\x1f\xc7\xaa\xc8\xc2\x0a\x94\xe3\x98\xe2\x61\x71\xd8\x61\x3a\xaa\x88\x3d\x63\xac\x35\x1c\xd4\xdc\x7a\x5b\x21\xa4\xa8\xfb\x91\x23\xb1\xd1\x46\xd7\xf0\x2d\x55\xf7\x35\x65\xc8\x6a\x6f\x36\x4b\x3f\x5b\xf6\xd8\x5c\xfb\xac\xb6\x53\xbf\xd6\x23\x38\x00\x9b\xf5\xd9\x08\x4f\xb3\xa6\x4b\x37\xe3\xa4\x84\x21\xdc\xba\xbf\x02\x06\xf1\xd3\x5b\x6c\xeb\xe5\x20\x38\x2a\x23\x4f\x97\x1d\xe6\x71\x05\x9f\x5e\xfa\x2f\x57\x0a\x4b\xa3\x60\xdd\xba\xda\x71\x2b\x89\x78\xd6\x96\xdb\x5e\x44\x02\x74\x36\x1e\x81\x39\x9d\x72\x61\x31\x3b\x99\xb7\xf7\xba\xa2\x26\xe6\x8c\x79\x1c\x69\x3a\x96\x0f\x05\x95\x6b\x8e\x15\xd8\x6b\xcf\x6e\x60\x28\xda\xe6\xd0\xfa\xd3\x63\x3f\x6c\xb9\xd7\xee\xbc\xdc\x9a\xaf\x56\x99\x42\xae\x43\x7d\xd1\x4d\xd4\x88\x71\xb1\x8b\x63\x23\x97\x98\xcd\x62\xce\xfe\x41\xee\xaa\x96\x69\xe0\xc1\x6f\xb0\xe1\xb4\x35\x36\x95\x17\xac\x16\x8a\x35\x34\x91\x77\xf7\x70\x07\xad\x6f\x0c\x9b\xe3\xaa\x31\x17\xd7\xa7\x03\xd5\x15\xfc\x09\x61\x55\x14\x2c\xe0\x85\x25\xd3\x82\x91\x1e\x10\x8a\x49\x44\xb9\x04\xa2\xb2\x68\x86\x80\x9e\x86\x9d\x1f\x0c\xc5\x63\xb0\x21\x85\x30\xbb\x7e\xd8\x12\xc0\x3d\x7c\x36\x0c\x8a\x3f\x14\x82\x17\x41\xcc\xe2\x10\x49\x17\x10\x02\x1a\xdc\x73\x8c\xd9\x35\x04\x1e\xec\xd7\x16\xa4\xbe\x01\xa0\x78\x4d\x89\xb4\x3a\x58\x71\x3f\xb7\x00\xcd\x7b\x57\x50\xe2\x2b\x86\x10\x00\x8a\xd7\x8d\x60\x07\x78\xe2\x2f\x03\x22\x8e\xb9\x73\xf3\xb1\xcd\x64\x35\xd3\x75\xab\xfd\x07\x37\xa3\x3f\xa0\x35\x3e\x6b\x48\x7d\x0e\x5a\xf3\x30\x40\xe4\x10\x0a\x7a\xda\x3c\x4b\xeb\xe8\x54\xe4\x90\x24\xfc\x9e\x91\xaf\x20\x8e\xa9\x7f\x75\xf6\xd5\x01\xf9\x2a\xcc\xe5\xf8\x6a\xa3\x03\x68\xc7\x6d\x31\xc5\x41\x03\x29\x04\xf4\x16\x8f\x1d\xec\x55\xe9\x24\xda\x3d\xb3\x07\x91\x34\x9d\x43\xf3\x65\xe1\x1b\x2e\x34\x4b\x01\x23\x1b\xe3\x3e\x7d\x38\xa1\x75\x8c\xa0\x5c\xc8\x55\xcd\xda\xc5\x43\x31\x5e\x96\x5d\x1f\x07\xde\xf7\xd1\xfa\x94\x6e\x8d\xfb\x6c\xda\xab\x26\xff\xed\x38\xcc\x6d\xf5\x7d\xb0\x26\x9d\xb0\xef\xcb\xf7\xe5\x5c\x4c\x35\x9c\x97\x7d\x7c\x68\xdd\xac\x0a\x56\x24\xb7\x98\xb5\x9b\xb2\x4e\xfe\x79\x6b\xe4\xd6\x22\xa8\xb2\x5f\xb7\x22\x36\x9e\xb6\x41\xf0\xdd\x53\xd9\xd3\x52\xd9\x2e\xe2\x89\x8b\x83\xeb\x7e\x81\x9e\xa0\x1c\x17\x34\xe3\xcc\x90\x46\x99\xf0\x0c\xbe\x00\x0e\xbe\xbe\xaa\x46\x47\x4f\x68\xb0\x26\xeb\x5d\xa1\x37\xe8\x4e\x47\x67\x64\x75\xac\xe5\xa1\xf6\xb5\x45\x2a\x95\x1c\x73\x87\x34\x9f\xb3\x03\x02\xc5\x67\xf3\x10\x00\x7b\x5e\x81\xdc\xe0\x8e\xb3\x15\xe6\xb0\x93\x34\x9a\xf1\x87\x6e\x09\x52\x5d\xa5\xf1\x26\x1a\xd9\x22\xfe\xe2\xa2\xff\x71\x70\x3a\x1a\x5c\xdc\x9e\xdd\xfe\x32\xaa\x86\x62\x14\x1f\x5f\x9f\xfc\x78\xf6\x69\x70\x1a\xbe\x70\xf3\xcb\xcd\xed\xe0\xe3\xe8\xc3\xe0\x62\x70\xdd\xbf\x1d\x9c\xae\x34\xa5\xae\xea\xac\xae\x04\x85\x0d\xdd\xae\x51\xdf\x3c\x88\x1c\xda\x21\x01\xa0\xc0\x88\xfb\x0f\x5c\x71\x9b\xa4\x6b\x45\xd4\xbb\x33\x67\x1a\xad\xe9\xfd\x38\xc8\x9f\x39\x40\x64\xb5\xbc\x13\x6e\xdd\x49\xa1\xf8\x6a\xa3\x2e\x44\x8c\x81\x9a\x24\x28\x23\xdc\xab\xe9\xc4\x2e\xd8\x31\xe9\x5b\xea\xa8\x6b\x5f\x48\x62\x84\x67\x96\xe2\xe8\x31\x24\xc3\x0f\x9d\x1c\x92\xf2\x1a\x1f\x13\x04\x84\x0e\x6a\x62\xf8\x06\x41\xe4\xa3\x29\x13\x5f\x69\xc2\x3e\x2f\x12\x1e\x71\x1d\x24\xde\xc8\xd4\x3a\x1d\xd0\xa9\x06\xd1\x5f\x6b\x88\x6b\x67\x31\x1a\x3b\xd7\xf9\x43\xff\x72\x55\xdb\xf7\x27\x4a\x4b\x9b\xbc\xb8\x16\x65\x74\x07\x8a\x7d\x83\x2b\xb5\x02\x88\xba\xc1\xe8\x9e\xc2\x3c\x50\x8d\x80\xb7\xc9\x33\x36\xd0\x83\xba\x4a\x06\x8f\x78\x23\x6e\x56\x03\x7a\x75\xf4\x48\xe1\x5c\xaf\x0e\x1f\x69\x47\xa9\x2f\x1c\x04\x52\x40\xdf\xdf\x59\xad\xdd\x51\x47\x37\x7e\x05\xd0\x53\xdc\x23\xcc\x21\x49\xd9\x5c\x6a\xa3\x80\xa1\x9f\xfc\xc0\x08\x55\x9c\x26\xfc\x1f\x80\x00\x93\xb2\x5e\x10\x57\x00\x09\x36\x71\x18\x50\x6d\xb3\xb3\x9f\xbe\xe6\x6e\x5e\x07\xaf\x52\x6d\xd7\x29\xef\x17\xcd\x65\x4f\xba\x95\x36\x2d\x6c\xd9\xfa\xb2\xa6\x50\x46\x9d\xaa\x86\x9a\xa6\x80\x77\x1a\xbf\x96\xca\xa6\xd5\xf4\xee\xd2\x86\xbe\x6c\x55\xd3\xd2\x60\x5e\x4f\x69\xd3\xb5\xeb\xf6\x7a\xf3\xf7\x6b\x06\xda\xa2\xa4\xa9\xf7\x60\x40\xd5\x91\x6e\x97\x8d\x0b\xc0\x2a\xb8\x31\xcc\xa1\xf2\xb7\x4e\xbd\xee\x48\xd5\xfd\xd6\xdd\xdd\x52\x75\xdf\xd0\xd5\xba\x7b\xe9\xa4\xe0\x26\x29\x2d\x9b\x0d\x0d\xb3\x00\x59\x61\xfd\xf9\x66\x6e\x3f\x78\x60\x42\xef\x44\x54\x82\x26\x6a\xf2\xf3\xda\x19\x3c\x11\x92\xfc\xec\x34\xe7\x48\xbe\x34\x56\x10\x94\xa0\x53\x0a\x78\x1a\x4c\x3f\x32\x26\x9c\x93\xba\xc9\x1f\x68\xa6\xd6\x6e\x7b\xe0\xd5\xea\xba\xac\x89\x5d\xb5\xab\x9d\x97\x26\xc9\xe3\xce\x64\x04\x51\xf1\x9d\x74\xab\x82\xcc\x81\x0a\x55\x58\xb5\x16\xe5\xe4\xf2\x9e\x63\x9f\x33\xaa\xca\x5d\xae\xdd\xf2\x0d\xd2\xd3\x0b\xcd\x7c\x60\x90\xbd\xb1\x93\x72\x81\x1d\xb2\xf4\x60\x20\x77\x69\xb2\xb6\x26\xff\x0d\x96\x45\xc9\xd2\x24\xb7\xb0\xd0\x16\xe2\x02\x0e\xa6\x37\x14\xa7\x6c\x91\x32\x28\xd4\x75\x4c\xae\x12\x66\xae\xcb\xcc\x5c\x99\x59\x92\x8c\x7c\xcd\x72\xa5\x19\x6d\xe2\x4f\x9d\xe0\x67\x9e\x7c\x5e\x4e\x0c\x5a\x3d\x31\x07\x65\xb3\x7a\x66\xc1\x1a\xec\x3e\xb7\x32\x58\x5f\xb0\x66\x81\x4d\xa3\x28\xd0\x82\x46\xb2\xc4\xc0\x36\xd0\x6a\x69\x28\x79\x2b\xfe\x0f\x73\x55\xa7\x4c\xcd\x64\xb2\x72\x0a\x9d\x01\x82\xba\xcc\xc1\x2d\xe5\x13\x4e\xc2\xc6\x1c\x8d\x9a\x02\x1f\x5b\x5c\x46\xa7\xd8\x44\xed\x15\xb8\x6a\x8a\x1e\xae\xd6\x3b\xa2\x2d\xb0\x9a\x0d\xe2\xb1\x43\x03\xf7\x4a\xae\xf5\x87\x20\x27\xb9\x15\x35\x97\x40\x97\xe8\x06\xf2\x9f\x07\x05\xd7\x7c\xcc\x2e\xd7\x8a\x28\x9d\x66\x11\x40\x00\xce\x58\xda\x09\x76\xd0\x47\x76\xe7\x4d\x98\x01\xd7\xb3\x36\x8b\x54\x0b\x72\x8a\x8d\x50\x50\x05\x78\x16\xbb\xc5\x38\xe5\x5a\x19\xba\x99\x81\x6e\x6b\x8d\x2f\xd6\x5a\x7b\x32\xa3\x7c\x81\x5a\x0a\x13\xd8\x03\x7e\x74\x07\xfc\xb0\xb0\xc5\x9e\xf6\x00\x9e\x47\xa7\x90\x8f\x97\xdb\xdd\xcb\x97\xbc\xb5\x95\xad\x4b\x23\x28\xec\x4e\xab\x9c\x81\xc2\x17\xe6\xdc\x9f\x6e\x69\xb8\x37\x93\x59\x8e\x20\x0b\x6b\x1b\xe7\x7d\x61\xfe\x68\x74\x84\x36\x59\x4c\x30\xa9\x10\xe1\x08\xed\xda\x79\x83\x2b\x56\x21\x1c\x8a\x6b\x33\x0a\xfc\x22\x77\xe0\xe6\x15\xbe\x58\x5e\x8b\x60\x42\xa8\xfd\x0a\x16\xbd\x29\x7e\x46\x8d\x82\x02\x87\x4d\x13\xdb\x41\x21\x8d\x1f\xf0\x1d\x32\x49\xe8\xd4\xa5\xe2\x43\xf1\xcc\x49\xae\x27\x19\x61\x0f\xab\x51\x62\x5a\x28\x5e\x1e\x5c\xdb\x54\x4f\x2f\x2a\x67\xcc\x81\x22\xc2\x67\x9e\x7f\xd5\x31\x57\xa7\x89\x09\x07\x5a\xa7\x86\x22\xe8\x63\x05\x86\x16\x6a\x43\x1b\x8a\xfd\xb0\xcf\x3c\xf6\xf6\x72\xf8\x53\xd4\x57\x2b\xb4\xd3\x9b\xd3\x05\x58\x85\xf0\x0c\xca\x89\xbf\x7f\x6e\x6d\x40\x6f\x0f\x46\xfc\x3f\xff\xfd\xd7\x1e\x5f\x69\xf1\x0b\x0e\x65\xee\xf9\xca\xdd\x1b\x41\x74\x59\x50\x83\x91\xc2\x45\x41\x4a\x2c\xb0\x74\xa4\x02\x54\x98\x6d\xa2\x70\x66\x54\x3d\x9d\xab\xb5\x16\x46\x1f\xed\x48\x21\x57\x5f\xe7\x74\xc5\x41\x62\x4e\x8b\x21\xa1\x4c\xb1\x14\x49\xd0\xc3\x07\xd4\x94\xb5\x81\x98\x9b\x35\xb6\x63\x36\xa7\xbc\x53\xec\xa6\x79\xbf\x1e\x91\xa7\x60\x66\xa3\x53\x96\x8e\xe2\xac\x10\x0c\xb8\xae\xed\x2b\xf3\xd1\x69\xa6\x97\xeb\xdb\x57\x09\x8d\xee\xbb\xa0\x20\x99\xf7\x1b\x9a\x5d\x2f\xca\x04\x2e\xdb\xa2\x38\xd3\x80\x31\xc4\x4a\x18\x43\x36\x86\xa8\xa0\x67\x02\x6b\x14\x50\x97\x28\x10\x47\x2d\xef\x44\x24\x44\x18\x39\x54\xaa\x74\xcc\xc6\x63\xcb\xc6\xbd\xa1\x78\x8f\xe0\xcc\x20\x2a\xe3\x00\x22\xa8\x0c\xc4\x3e\x2f\xa4\x62\x85\x28\xfc\x1a\xbc\x58\x9b\x27\x63\x87\x51\x2f\x45\x95\xea\x42\x6d\x25\x44\xbd\x38\x5a\x54\x75\xc3\xab\x53\xae\xa7\xc0\xad\xee\xe9\x88\x2f\xb8\xa1\x9d\x51\xed\x49\x7b\xba\x8a\x9d\xb9\x8f\x1e\x70\x03\x74\xb2\x3c\x20\x7e\x7a\x25\x82\x48\xd8\x03\x4b\xe9\xd4\xc8\x58\x94\x27\x21\x2a\x70\xd1\x38\xd2\xc0\x4e\xd6\x1d\xa0\x3c\x05\x06\xd8\x02\x89\xcb\x23\x28\x26\x0a\xd4\xd1\x62\x31\xd4\x7a\xeb\xac\x80\x3a\x47\x63\x07\xb9\xa9\x1f\xa2\x23\x2f\x99\x26\xec\xb3\x66\x02\x5d\xb4\xb7\x2e\x9f\xa2\x1a\x4e\x4a\xea\x43\xcf\x9b\x2f\xf5\x27\xaf\xe3\xda\x77\x79\x72\x2e\x61\x24\x56\xf6\x86\xb1\x55\xc6\x66\x54\xc4\x36\x2b\x28\xaf\x55\x8e\xb3\x43\xcb\x85\x8f\xfd\xb4\xb9\x2d\x01\xac\x24\xb6\x89\xf8\x97\x70\x91\x39\x49\xde\xc8\x92\xe0\x2e\x93\xa9\x11\xa9\x32\xa1\x79\x62\x88\xc3\x8e\xc1\xe8\x79\x99\xf0\xc0\x2e\x10\xa9\xd8\x84\x1d\xc2\x95\xe2\x62\x3a\xb2\x2b\xe9\x12\x5c\xda\x5d\x0c\x45\x9a\xfa\x88\x4d\xe1\x8f\x3f\xb8\x86\x56\x5b\x26\x91\xac\xcd\xf4\x7d\x6a\x0d\x88\x82\x42\xba\xc9\x58\x40\x0e\x97\x91\x33\xe2\x71\xa1\xf4\x1d\x4c\xb4\x8b\x5a\x0d\xb2\x59\x35\x5b\x35\xbf\x42\x14\x51\x90\x10\x84\x01\xfd\x10\x79\xa9\x1b\xf2\x81\x54\x63\x1e\xd0\x99\xf0\x22\x9a\x2d\x12\xe0\xf3\x19\x4b\x29\x45\xd4\x75\x67\xc3\x4b\x69\x92\x8c\x69\x74\xef\xc5\x63\xaf\x24\xca\xd4\x81\xac\x1a\xb1\x11\xaa\x48\x20\x71\x99\x81\x46\x20\xdd\x60\xba\x2e\x12\x13\xe2\x15\xd8\x61\xe7\x9d\xdb\x82\x81\x02\x4b\xd8\x81\x3a\x89\xa3\xc7\x58\xd5\x98\x2d\x12\xb9\x9c\x37\xdc\x67\xe5\x74\x8d\x6d\x3c\xaf\x4d\xd9\x22\x3b\xbd\xca\x4a\x4c\xaf\xf3\x65\x56\x89\x2f\xdf\x01\x7a\x46\x07\x2e\xf9\x21\x91\x63\xb0\x4b\x59\xbd\xd0\xc5\x4c\x07\xa1\xbb\xe5\xf3\xdc\x35\x92\xbb\x7c\x22\xb9\x5a\x24\x74\xb9\xaa\x07\x8c\x21\x7e\xda\x7d\xc3\x3c\xcd\xf5\x66\x9b\xf6\xd1\x77\xb5\x9f\x3f\x49\x61\x46\x27\x09\xd8\x0a\x8d\xc0\xbf\xac\xf9\x83\x39\xfb\x07\x66\x6f\xf4\x16\xa9\x34\x92\x82\x1c\x0a\x4d\xa7\x6e\x77\xad\x74\x29\x1f\x05\x4b\xd5\x8c\x2f\x0a\xe5\x65\xb6\x8e\xf7\xb3\x24\x6d\xff\x83\xd1\x6d\x1d\x98\xa7\x5c\x1c\x62\x22\xb6\x21\x10\xb5\xa0\x51\x6e\xaf\x8a\x12\xaa\x14\x9f\x2c\x83\xfc\x69\x1f\x3a\x05\xf1\xf8\xbe\xb4\x42\xb1\x44\x49\xad\xeb\xaf\x90\xaf\xbb\x9b\x64\xc6\xed\x93\x45\xee\x8a\xa7\x90\xc7\x21\x5c\x0d\x14\x16\xad\xa4\xcc\xb7\xac\x7d\xba\x6d\x0e\x89\x1d\x99\xcd\xa4\xd8\xdd\xc0\x5c\x1e\xf4\x66\x59\x91\x2b\x21\x18\x9a\xcd\x1c\xb9\xb0\x6b\x87\x6d\x15\x2d\x9f\x94\x1d\x4e\x03\xe6\x18\xdb\x2f\x7c\xd6\x44\x21\xc7\x96\x16\x90\x07\x70\x8d\x8c\xf2\xe7\x8c\x8e\xe6\x7c\xf9\xa4\x6f\x48\xc4\xcd\x3b\x38\x20\x6a\x2b\x38\x94\xf6\xa4\x7d\xca\x12\xb6\x93\x58\xc0\x0d\xe8\xbc\xec\xdd\x0e\x28\x7c\x25\x11\xe5\xf0\xb2\xeb\xcd\x24\xdd\x69\xbc\x3c\xaa\x9c\xba\x77\x36\xa8\x0d\xe2\x26\x1b\xf0\x1e\xea\x47\xfe\x33\x0e\xd4\x86\x4e\xd6\x11\x98\xe1\x9c\x31\x6c\x7d\x5b\xd5\xb0\x0e\x38\x0a\x5b\xb0\x27\x26\xef\xc6\xed\xa3\x43\xe6\xf0\xc2\xae\x93\xbe\x5e\xef\x31\x78\xe1\x40\xc3\x86\xd1\x7d\x60\x6d\xe2\x11\xd6\x1e\xd1\x8d\xb8\x69\xd3\x95\xd8\x8e\x54\xac\x2f\x51\x4b\x32\x65\x1a\xab\x6c\xfa\x52\xa2\x6f\x90\x4c\x76\x16\x39\xbd\xd3\xad\xa8\x67\x02\xdd\x4e\xf5\x0d\xd3\xca\xdd\x78\x15\xac\x2e\xbb\x53\x87\x2e\x09\x34\x4f\xa9\x7c\xbd\x5b\xf4\x3a\x4e\xf2\xb5\xb5\xaa\x3c\xdd\x05\xbb\x9e\x5e\x76\x42\x1f\x80\x21\x42\x21\x6c\x3c\xb3\xb0\xa3\x70\x78\x03\x9f\x61\x45\x95\x5f\xe3\x8d\xb5\xc3\x6b\xe5\x87\xad\x2c\xe7\x53\x6c\xaf\x8d\xa6\x6c\xbd\xb9\x4f\x49\x6a\x5d\xc7\xb2\x0b\x1d\xe5\x89\x8d\x22\x96\x1a\xd7\x6a\xd7\xfb\xa0\x08\x42\x9a\xfc\xaf\xb9\x63\xd1\x6e\xd9\x2e\x0f\x59\x1d\xea\xf4\xf6\x59\x0e\x89\x44\xef\xc0\x68\x91\xb2\x09\xff\xbc\x91\x28\x7e\x05\x9f\x5a\xf5\xd2\x2c\x73\x09\xc7\x1a\xac\x1d\x80\x7b\x9d\x6b\xfb\x6e\xa5\x1f\x53\xae\x35\x13\x43\x01\xa0\xbd\xea\x8f\xc7\x47\x47\xe3\x2c\xba\x67\xfa\xe8\x9e\x2d\x89\x4c\x0b\x3f\x6d\x8a\x91\xb1\x7b\xcc\x6d\xdc\xd7\x99\xd6\x0b\x75\x7c\x74\x34\xe5\x7a\x96\x8d\x7b\x91\x9c\x63\xbc\x91\x4c\xa7\xf8\x8f\x23\xae\x54\xc6\xd4\xd1\xf7\xdf\x7d\x97\x6f\xf1\x98\x46\xf7\x53\xcc\x3a\xac\x5a\x71\x0a\x5b\x7e\x53\xad\x4b\xd3\x1d\xc7\x34\x95\x62\xc4\x3e\x1b\x22\xad\xab\x7c\xdc\x16\xd0\x41\x91\xfe\xcf\x37\x44\x2d\x85\xa6\x9f\x8f\xc9\x47\x2c\x53\x4d\x7e\x94\x59\xaa\xc8\x29\x5d\x1e\xca\xc9\xe1\x5c\x0a\x3d\x23\x1f\xe1\x7f\xed\x4f\x8f\x8c\xdd\x93\x5f\x18\x4d\xed\xfe\xa2\xc0\xe2\xa1\x90\xc1\x0b\x91\x66\x42\xd9\xfa\xd7\xdf\xfd\x87\x2b\x80\x7d\x4c\xbe\x3d\xfa\xee\x3f\xc8\xef\xe1\xff\xff\x1f\xf2\xfb\x06\x4d\xad\x5b\x46\x6b\x5e\x9c\xbc\xb6\x35\x58\xa9\x0d\x4a\x01\x9d\xa4\x32\xdf\xa9\xda\x96\xef\x79\x74\x2f\x27\x93\x91\xe6\x73\x86\xc1\xa1\x23\x9a\x56\x90\x8a\x36\x84\x07\xe1\xb6\x70\x09\xd6\x7e\xcc\x81\x43\x6d\xa7\x98\xfa\xe1\x8e\x9b\xca\xf2\xc2\x0d\xe0\x53\x29\x14\xc3\xe0\x0a\xbe\x62\xb1\x39\x15\x5d\xfc\x27\xce\x3a\x53\x2d\xaf\x96\x27\x11\x85\xc5\x78\xbc\x1f\x34\x74\xea\xcb\x75\x85\xc1\xab\xd1\x06\x5f\x8c\x0b\x19\xa6\xf6\x52\xee\x63\x55\xe9\x7c\xbd\xe7\xf8\x46\xa6\x5b\xc9\xcb\xf7\xac\x12\xc2\xd2\x12\x24\xd7\x95\x80\x08\xcb\x42\x41\xd6\x81\x4c\x3d\x4c\x0f\xea\xb5\x16\x4a\x7f\xbd\x15\x8a\xa7\xe8\x6b\x6b\x77\xe8\xcd\xd4\x4f\xfd\x27\xeb\x86\x09\x8e\x37\xf7\x76\x0e\x12\x0e\xa3\x35\x57\x9c\x61\x89\x35\x23\xae\xc9\xe5\x5f\xb7\xa1\x37\xb8\x67\x4c\x61\xe3\xe0\x05\x86\xe8\x3b\xe1\x24\x13\x9b\x94\x52\xbb\x9f\x90\xe1\xbc\x0b\xf0\x83\x0a\x90\xdd\x16\x7c\x0e\x4d\x65\x39\x8b\x70\x60\x92\x20\xb2\x05\x45\x67\xa8\xe1\x1e\x1b\xe2\x45\x20\x94\xec\x01\x49\x29\x38\x52\xf5\x8c\x0a\x54\xa2\x26\x34\xe2\x62\x7a\x10\x40\x05\x40\xae\x4c\xc8\xb3\xea\x56\xf2\x96\xaa\xfb\xdd\x3a\x07\xb7\x86\xd6\xe7\x71\x0e\xef\x8c\x14\x69\x7d\x87\xbc\x92\x27\xad\xa9\xba\xdf\x59\xe9\x71\xb3\x14\x6d\x8a\x8e\xbb\xd8\x7b\x16\x0a\x6d\x80\x9b\x67\x94\xab\x00\x5b\xc9\x85\x4f\x62\x59\x4f\x9e\xb0\xb8\x8c\x30\x51\x1e\xff\x3a\x42\x40\xb5\x38\xf0\x42\x01\x00\xc1\xdc\x28\x7e\x31\x9a\x67\xc5\x12\x8f\x92\xb9\xb9\xa8\xba\x57\xbe\xbe\x03\x51\x73\x9a\x24\x07\x24\x65\x99\x32\x57\xef\x01\x51\x2c\x99\x1c\x3a\x2c\xc0\x98\x24\x72\xca\x23\x9a\x90\x71\x22\xa3\x7b\x35\x14\xe6\x2a\x11\x53\xbc\x01\x17\xa9\x8c\x98\x52\xc1\xdd\x9b\xc7\xe5\xdb\x20\x56\x28\xee\xa0\x59\x3a\xe7\x82\x2b\xcd\xa3\x52\xbd\xe6\xde\x50\x60\xb1\x12\xa3\x0d\x45\x12\x4b\x52\xc0\x70\x8d\x2c\xc0\x10\x9d\x20\x13\x16\x69\x15\x18\xba\x4d\x3a\x76\x51\x15\x4d\xd4\xbb\x83\x1c\x6a\xb7\x3d\x23\x5d\x3c\x0d\x6b\xe8\xf9\xc4\x7e\x06\x67\x68\x15\xc5\x5c\x17\xc9\xd9\x53\x83\x27\x73\x0f\xcd\xe5\x88\x22\x8f\x19\x29\xdc\x6d\x3e\x94\xe2\x95\x25\xbf\xc2\x90\x1b\x52\x5e\xd7\xd1\xf4\x09\x16\x80\xb6\xe0\xbe\x65\xbf\x98\x2b\xec\x6c\x01\xdc\xcd\x25\xf1\x60\x88\xc4\x2d\x8f\x59\x7b\x73\x95\x1c\xf8\xaa\xcc\x54\xd9\x90\x91\x43\x8f\x1c\x67\xf8\x21\xa2\xfb\x41\x27\xa5\x12\xbf\x55\x8a\x7a\x4d\x95\x98\xfd\x25\xdd\x95\x2d\xae\x15\x24\x3a\x56\x65\x76\x2b\xdd\x88\xb2\x51\x18\x5b\x91\x6c\x21\xd1\xb4\x79\x50\x2d\xed\x15\x69\x5d\x46\x07\x52\x1c\x3c\x7d\xe0\x79\x8d\x1d\xdb\xdb\x4a\x7b\x86\x99\x51\x2b\x63\x46\x48\x14\x1b\x1b\xe8\x4a\x53\xa9\x64\x46\x71\x2c\x3f\x65\xab\xd7\x1b\xa9\x36\x8b\x22\xc6\xe2\xda\xe0\x02\x33\xa2\x57\x87\x22\x71\x45\xf5\x0c\x93\x6c\xe6\x52\x63\x89\x07\x44\x91\x70\x86\x16\x2c\xe2\x30\x4e\xe4\x18\x2e\x24\x00\x98\x70\xe9\x16\x41\xb8\x34\xce\x9b\xc5\xe4\xeb\xe0\x7e\xf1\x09\x60\x4d\x25\xc4\x76\x08\x2e\x51\xb6\xce\x34\x42\x4c\x14\xf1\xc7\x7b\xe4\xaa\x94\x71\x18\xcc\x6a\x42\x0d\xcb\x6f\x0a\x02\xed\x06\x48\x51\xd8\xfd\x1d\x00\x52\x94\xa6\xd1\x10\x69\x24\xa7\x4f\x9a\x21\x61\x26\x75\x2e\xdb\x87\xad\x62\x4e\x38\x0a\x2e\x85\xcd\x71\x64\xb6\xac\xdb\xa2\xd7\x05\xb6\x51\xc2\xaf\x7f\x59\xb0\x8d\xd2\x60\x5e\x33\xd8\x46\x69\xa8\xaf\x17\x6c\xa3\x66\xa0\x2d\xc0\x36\xd0\x77\x3a\x32\x44\xdd\x8e\x29\x40\x14\xde\x38\x9b\xdc\xc0\x6d\xb2\x72\x8c\xb6\x48\x2a\x32\x67\x27\x20\x59\x44\x25\x18\xad\x8d\xd8\x6e\x8a\x36\xa1\x6a\x2b\xda\xf3\xce\x0d\xae\x50\x37\x5d\x24\x54\x14\x99\x2a\x14\xa1\x4b\x59\x64\xc8\x0f\x19\x55\x5e\x9d\xfb\xc0\xda\x4c\xcc\x28\xd0\x4c\x18\xd1\x85\xcd\x80\x69\x02\x3a\x7d\x3d\xb1\xfe\xdd\x70\x4c\x00\x6e\xa2\xc0\xea\x5b\x25\x8b\x7f\x2c\x61\x05\xce\xe4\xa3\x95\x87\x80\xfc\x6c\x5d\xe1\x8e\x22\x7a\x88\x84\x52\xa2\xe9\x96\x48\x28\x85\x89\xec\x91\x50\xea\x37\xf8\xd5\x22\xa1\x94\xf6\xbc\x1d\x12\x4a\xdd\x96\x6f\x80\x84\x52\x68\xe6\x8b\x41\x42\x29\xad\xe8\x17\x83\x84\x52\x9a\xd7\x1e\x09\xe5\x0b\x41\x42\x59\xcf\x47\x6a\xb1\x3e\xea\x0f\x6f\x37\xac\x8f\x5a\x11\xbe\x99\x45\x6c\x9b\xa6\x0a\x02\xc3\x33\x63\x7d\x14\x26\xb0\x0f\x6b\xe9\x1e\xd6\x52\x4b\x7c\xb6\x6f\xa8\xd9\x6c\x63\x5d\xca\x17\x59\x4b\xb4\x8f\xc2\xfe\xb4\xb6\x19\xed\x82\x12\x9f\x36\x90\x0a\x4c\xd7\x6d\x35\xee\x7e\x61\x15\x95\xc5\x08\x32\x92\x91\xcb\x79\x47\xe1\x3c\x74\xdb\xed\x29\x77\x83\x80\xac\xd2\xf2\x7a\x63\x37\xd2\xe2\x2e\xad\x9a\x35\x25\xc6\xb6\xa0\x57\x97\xb3\xd2\xd1\xaa\xec\x06\x01\xd6\xe5\x7a\xdb\x13\x54\x1d\xdc\x4d\xb3\xeb\x2e\x32\x9f\xd1\x5b\x28\x82\xe8\xd3\x71\xf2\x22\x88\x28\x1b\x97\xb2\x90\x8c\xfa\x6f\xbf\x9c\x72\xa5\xd3\xc6\x90\x84\xca\x08\xb7\xf1\x5f\x2d\xb2\x4d\x72\x07\xa7\x9b\x7d\x36\x67\x73\x99\xae\x8b\x87\xa8\xfd\x52\x69\x99\xd2\xe9\x3a\x45\xbc\xfb\x56\xf9\x34\x2b\x1b\xed\x5f\x53\xc4\x32\x70\x2c\x99\x77\x63\x5b\x98\xb2\xed\x4e\x6d\xbb\x43\xae\x02\x66\x37\x1b\xaf\x83\xd9\x59\x6d\x74\xb2\x2f\x15\xdc\x87\x40\x9a\xb5\x0e\x6a\x1f\x1f\xb0\xa1\x0b\xba\x01\x08\xa5\xda\x21\x78\xa8\x14\x4b\x0f\x43\xf1\xb2\xe0\x15\xaa\x8e\xa0\xb0\xee\x4e\x2d\xd9\x62\xd9\xb3\xb4\x31\x52\xaa\x8d\xd5\x07\xab\x4a\x1b\x9d\x27\x04\x18\x2f\x53\xf5\x78\x59\x93\x7a\xd1\xce\xac\xc8\x85\xfe\xd3\xbf\x77\x71\x1d\x83\x7c\x6e\xd7\x6d\xc2\x13\x46\x68\x14\x31\x85\x86\x28\x1b\x49\x87\x05\xfb\xb2\x34\xd9\x66\x57\xcd\xe1\x30\xf3\x36\xdc\xce\xa3\x0b\xc5\x39\xf1\xe0\xdd\x39\x4b\x65\x36\x9d\x39\x43\x84\xa1\x42\x33\xb5\xba\xbd\xfc\x84\x71\x0f\xdb\xec\xe5\x0f\x19\x4f\x36\x33\xf3\xe4\xa1\x46\x66\x98\x1f\xce\x6e\x89\x9a\x79\xfa\x1f\x43\xb3\xb5\x1b\x5b\x1d\x74\xfb\x3e\xed\xb7\xde\xa8\x09\xdd\x1c\x38\x44\x8d\x89\x4c\x12\x30\xcb\x29\x36\x7f\x68\x2a\xf8\x07\x13\xbe\xe5\x1b\x96\x35\x83\xaf\xc1\xb8\xaf\x34\x9d\x2f\x5a\x09\x23\x57\x28\x27\x29\xe2\x46\x5f\xf6\x79\x61\x24\x8b\x14\x4c\xd4\x19\x6a\x7e\xae\x22\x63\xbe\xb1\x78\x22\x17\xdf\xb2\xb3\x98\x22\xb7\x24\xcf\x1c\x57\x54\x37\x8f\x0e\x2c\xa0\x10\x66\x9b\xf3\x78\xe7\xb0\x45\x11\xbc\x6f\xe6\x37\x14\xfd\x42\x40\xae\xab\x24\x32\x5e\xe6\x11\x7d\x28\xcd\x86\x9c\x04\x00\x05\xad\x8a\xaf\xa5\x55\xfc\x41\xe6\x46\x30\x18\x8c\x38\x72\x51\x45\x10\x8e\xc8\xe2\x43\x1a\x2d\xa3\x84\x47\x81\xf6\x36\x4d\xe9\x62\x56\xc7\x6e\xaa\x95\xb1\xf7\x69\xf7\x2b\x47\xb6\xf3\xb4\xfb\x26\x94\xdc\x2e\xe1\x94\x61\x81\xfd\x3d\x1c\x40\x1d\x1c\xc0\x81\x4f\x78\x15\x39\xde\xef\x0b\xe6\x51\x56\xcf\xdd\x1e\x13\xe0\x05\x30\x01\x36\x39\x7c\x79\xc2\x7f\xe1\xd8\xed\x71\x0a\xde\xb5\xc2\x29\xf0\x97\xe0\xab\x4a\x3d\x6f\x3e\x8f\x2f\x9c\xd2\x5c\x1d\xd8\x4b\xe2\x12\xd4\x88\x0b\x5d\xe4\xa6\x55\xc0\x04\xab\xe8\xa2\xd5\xba\xbc\x2c\x4c\x40\xb7\x95\xe9\x84\x00\x50\x7b\x77\xbd\x12\x3c\x80\xe6\x6d\x78\x25\xe7\x66\x97\x41\xef\xdd\x0a\x1a\x84\x81\xef\x5d\xb4\x9b\x6e\x31\xf0\x9e\x1e\xde\x56\x1c\x7c\x0e\xf2\xbd\x59\x2c\x7c\xdf\x79\x43\x59\x4a\x66\x32\x01\xe4\xf5\xc2\x6a\xf9\x0e\x7c\x54\xac\x5f\x20\xb7\x19\x37\x0b\x16\xa1\xb6\x55\xad\x1f\xba\x92\xa4\xde\x7a\xd4\x7b\x20\xff\xee\x36\xf2\x3d\x5c\xd9\x4d\xa3\xdf\xd7\x0c\x6e\x95\xe8\xb1\x61\x04\x7c\xd0\xe3\x4a\x7f\x91\x9b\x5d\x2b\x9f\x51\x99\x58\x36\x08\xe7\xa9\x20\xa1\x6f\x8f\x0e\x30\xa7\x9f\x47\x0b\x9a\xd2\x24\x61\x09\x57\xf3\xa6\x33\xcf\x85\x66\xd3\x32\xa5\x15\x8c\xb1\x7f\xfc\x7e\x75\xec\x64\xd1\x71\xe8\x4a\xcb\x82\xeb\x30\x9b\x8f\x91\x14\xdd\x40\x6c\xc5\x00\x2d\x49\x9a\x89\x10\xdb\xc4\x6f\x0c\x01\x20\x57\xac\x55\x3b\xc9\x20\xb0\x86\x46\x33\x28\x4f\x31\xa1\x3c\x15\x4c\xa9\x8e\xf5\x82\x55\x51\x4f\xc4\x1b\x98\xff\xa3\x20\xa1\x1e\x16\x42\x7c\xa3\x20\x85\x17\x22\x2f\x1c\xa8\xe9\x2a\x56\xb1\x8f\xe3\xab\xc6\xf1\xd5\xaf\xcd\x6b\x8c\xe5\xcb\x4b\x56\x77\x8c\xe7\x6b\xda\xfe\x5d\x30\x81\x1d\xc6\xf5\xbd\x70\x00\xdc\xd3\xc4\xbe\xbd\x6c\xb0\xe2\x53\xc4\x29\xee\xa3\xf9\xde\x5e\x34\x5f\xf3\xb1\xed\x14\xd1\xb7\x26\x27\xdd\xf5\xb2\x6d\xf8\x94\xcf\x93\x7e\xd2\x10\x2a\xef\xf5\x0a\xbe\x68\x19\x46\x95\x27\x72\xef\x43\xa9\x9e\x28\x94\xaa\x66\x89\xbb\x85\x53\x6d\x24\x1e\x3f\x7f\xb8\x48\xb9\x32\xd3\x53\x86\x8c\xac\xf1\x92\xaa\x6c\x3c\x7a\xf2\xa3\x57\x3b\xe7\xb6\x27\xf0\x67\x4f\x14\x28\x12\xa5\x86\xce\xc6\x2c\x8e\xc1\x04\xa3\xa5\xad\x52\x90\xd3\x8e\x60\x48\xdf\x86\xf9\x52\x65\x88\x9d\x26\x52\x4c\x15\x8f\x59\x50\x0b\x2d\x97\xac\x30\x9f\x6a\x28\x60\x7f\x93\x84\xa5\x4e\x83\x4f\xc9\xd7\x8a\x8b\x88\x85\x5a\x7d\x4a\x62\xc9\x94\xf8\xca\x08\x60\x0f\x8c\x50\xb1\x24\xf7\x42\x3e\x26\x2c\x9e\xc2\x0e\x95\x07\x73\x48\x38\x3b\x20\x5c\xfb\xcf\x52\x46\xa3\x99\xe1\xb0\x43\x33\x76\xf0\xcb\xa2\x08\xc8\xec\xb7\x41\x3d\x0e\xdf\xcc\x37\x3d\x42\xce\x04\x99\xd0\x48\x1f\x10\x95\x8d\xf3\xf6\x63\x89\x05\x16\x1e\x98\x08\x27\x9e\x37\xf2\x64\xe1\x42\xb5\xe1\x41\x25\x6a\x73\xe7\xcd\x10\x40\x3f\xe1\x74\x2b\xcf\xee\x03\xdd\x06\xef\xe5\x63\xa6\xac\x0b\x80\x48\xe1\x0f\x93\x4d\x3f\xf5\x10\x57\x00\x33\x8f\x70\x51\x2b\xaa\xde\xd1\xd2\x54\xba\x8e\x25\x77\xc3\x5b\x74\x7b\x6b\x26\x81\x76\x71\xb9\x63\xf9\x28\x94\x4e\x19\x9d\x5b\xd5\xd4\x30\x6f\x70\xe1\xa0\x13\xde\x8c\x9e\xa7\x78\x69\x77\xd9\xe2\x73\x2e\xee\xcd\xee\xe6\xa0\x5e\x50\x2d\x04\x7a\xae\xd9\xb4\x1f\xb8\xa0\x85\xf0\xc1\x0d\x76\x2d\xc9\x3a\x05\xc5\x04\x75\x01\x97\x4d\x78\x6a\x9a\xae\x83\x38\xeb\x62\xc6\x53\x50\x22\x85\x8c\xa1\x82\x97\x61\x75\x58\x11\x81\x12\x4d\x01\xc7\x6f\xc6\x92\x45\x50\x65\x60\x41\x53\xed\x0b\x2b\x22\xc4\x8f\xe1\x0e\xf3\x4c\x00\x2e\x93\xd5\x10\x1f\x2d\x92\x8b\xb5\x23\xe4\x8d\xf7\x86\xe2\x4c\x7f\x05\x95\x5a\xa5\x98\x26\x4b\x42\xe3\x07\xae\x72\x80\xb5\x48\x0a\x95\xcd\x59\x5a\xaa\xde\x83\x4e\x66\x42\x1d\xad\x98\xb1\x19\x59\xed\x81\x26\x3c\x76\xd5\xe4\xcc\x8f\x63\x36\x31\xf7\xde\x82\xa6\xca\x59\x24\x6b\xac\x89\x76\x73\x63\xb3\x56\x2f\x76\x26\x3f\x85\xc7\x8e\xcc\xf3\x13\x4a\xad\xee\x72\x54\x3e\x9f\x41\x3d\xc4\xa6\x00\xbf\xca\xa4\xc8\xea\x8b\xc9\xae\xc2\xe9\xba\x54\x4d\xf3\x82\xa1\x86\x0c\xbd\x47\xa6\x1f\x27\x03\xe1\xe0\x3a\x99\x7f\x4a\x13\xb4\xa3\x46\x63\x60\x78\x36\x19\x87\x4b\x41\x69\xaa\x79\xe4\x6a\x3b\xfa\x9a\xba\xf8\x75\xf3\xd6\x6e\x5b\xb4\x54\x45\x34\xa9\xee\x70\xf3\x5a\xde\xe0\xfb\xab\x79\x9f\x3d\x6e\xd8\xf6\xca\x60\xcd\x48\x26\x49\x17\xf8\xb4\xd2\xcc\x4f\xf2\xcf\x57\x8f\x28\xef\xc7\x6c\x80\xdb\x0b\x38\x35\x68\xf6\xa3\x89\x95\x2c\x94\xb6\xbb\x14\xbe\x84\x3c\x74\x69\xcd\x8a\x43\x21\x27\x00\xb0\x97\x34\x55\x07\x5d\xa4\x72\xce\xbb\x40\x48\x20\x38\xeb\xb5\x73\xe0\xaf\x71\xdd\x38\x37\x3f\x54\x81\x42\xf2\xb2\x3d\x42\xa8\x17\x15\x28\x67\xac\x38\x43\x73\x5a\xa9\x51\xdb\x6a\xc1\xd7\x69\xc9\x7d\x32\x47\x13\x85\x5d\x3d\x85\xa5\xc6\xee\xd9\x12\x32\xcc\x93\x47\xba\xcc\x43\x5a\xbb\x1c\xa7\x3c\x68\xd4\x9e\x17\xea\xa8\x2c\x38\x31\x3e\x00\x02\xf7\x0b\x57\xa1\xcd\x09\x3a\xa9\x23\xc3\xce\x67\xc9\xcd\xf9\x29\x85\xec\xf0\xd8\x87\xf2\x75\x97\xdb\xb0\x78\x18\x82\x16\x09\x0c\x67\xf5\x52\x7d\x2c\x50\xce\xce\xd7\xa8\xd4\x0e\x41\x5d\xce\x79\xce\xae\xea\x5b\x7d\x86\x35\xb3\x64\xdd\x6a\xb1\xb6\x8c\x92\xef\x06\x4b\xe0\x7a\xf4\x60\x04\xb5\xe7\x7d\x3d\x92\x50\x17\x1d\x62\x62\x64\x17\x5b\x84\xce\x23\x20\xdb\x78\xa4\x09\x4f\x98\xea\x91\xb3\x1a\x7d\xc2\x45\x03\x81\x54\x05\x40\x44\xe0\x17\x75\xf2\x4e\x96\xf2\x00\x06\xda\x49\x35\x84\xdb\x52\xad\xb9\x95\x22\x65\x66\xcc\x11\x7a\x49\xa4\x00\x48\x05\x70\x45\xa6\x1c\x2b\x15\x1a\xf1\x52\x83\xc1\xcd\xf0\x02\x6e\xb3\x82\xb0\x7a\xb6\xff\xc0\xc8\xd8\x9a\xa5\xd4\x22\xdd\xe7\xa3\x6a\xd8\xd2\x5d\xc0\x5b\xb6\x0f\xb6\x72\xbd\xde\x9a\x2f\xaa\x7b\x53\x3b\xc2\xdb\x62\xeb\x9d\x47\xe7\xe5\xf2\xee\x2e\x9f\xf7\xf0\xa9\xb3\x3f\x51\x32\x49\x19\x98\x28\xe7\x3e\x7b\x41\xc4\x2c\x55\x5a\x4a\xb8\xa1\x6e\x4e\x7f\x3a\xba\x3b\x23\x4c\x47\x50\xc8\x6b\x28\x22\xf5\x70\x60\x04\xda\xbf\x67\x4c\x9b\x9f\x1b\xa2\xfb\xf8\x9c\x09\x05\x9c\x80\xb7\xad\x62\xec\x16\xc6\xfc\xf7\xb4\xf8\xfd\x0a\x92\xaf\xc4\x8a\x02\xed\xfa\x8a\x92\x86\x4c\x01\x37\x0b\x97\x56\xd5\x50\x0c\x56\x33\x1f\xd4\x61\x67\x6f\x10\x1b\x22\xfe\x96\x89\x8e\x62\xd2\x49\xfe\x51\x30\x8a\x06\x29\x6c\xbe\xa0\x29\xaf\x81\x92\x59\x1d\x74\x82\xdf\xd4\xb6\xbe\x8e\x89\xe4\x31\xb8\xb6\x36\x3c\xc9\x61\xc6\x89\x4e\x19\x03\x16\xe2\xe9\xc9\xde\xf5\x36\xe7\xc1\x4f\x2c\xf8\xa8\x37\x14\x1f\x9d\xc9\x34\xff\xd5\x17\xbd\xc4\x40\x26\x16\x93\x0c\x74\xa6\x62\x2b\xd0\x6c\xcc\x95\xff\x01\x50\xd3\x54\x96\x68\xc4\xbf\x9d\x40\x35\x76\x37\x50\x7c\x52\xc7\x25\x52\x2a\xa2\xd9\x85\xdc\xae\x18\x2e\x9f\x8c\x58\xd2\x45\x76\x3c\x9b\x0c\x12\x65\xe8\x3b\xba\x6f\x38\x9d\x9b\x20\x3c\xe7\x93\x01\xc9\xcd\x61\x80\xa2\x56\x82\x76\xba\x04\xd1\x74\x19\x01\x23\x5b\x39\x54\x08\xb3\x01\xcc\x2e\x5a\xd9\x1a\x6d\x6c\xe8\xa3\x77\x66\xb9\x31\xf4\x42\xa8\x1e\x8a\x34\x13\x80\x7d\xe5\x4d\xee\x94\x28\x96\x72\xb4\x7d\x47\x52\xa0\x0c\x60\x8d\x27\x53\xc3\x26\x8c\xe4\x07\x7e\x17\x29\x40\xa3\x92\x99\x02\x77\xff\x9c\x69\x73\x41\x7d\x0d\xa8\xf1\xe8\xf4\x38\x20\x8b\x94\xcf\xb9\xe6\x0f\xcc\x23\xd6\x85\x5b\x77\x42\x35\x4d\xe4\xb4\x9f\x6a\x3e\xa1\x91\xbe\xa5\x5b\xe9\xcc\xd4\x36\xb3\xa9\x03\xdd\x0d\x83\x9c\x9d\x9a\xc5\x9f\x32\xc1\x52\x98\x28\xd4\xe2\xac\x3d\xc2\x5d\xab\x74\xe6\x9c\x1b\x30\x6c\x23\x44\xfd\x54\xde\xc6\x40\x33\x2d\xe7\x46\x23\xa5\x49\xb2\x04\x34\x4f\xf3\x64\x46\xd5\xcc\x6d\x34\x42\x80\xb6\xb9\x9b\xec\xe2\x9e\xd0\x68\xc6\x6e\xa0\xf8\x7a\xdd\xe2\x96\x46\xf9\x8e\x89\x6c\xfe\xee\x98\xfc\x4f\x3e\xc7\x93\xfe\xc9\x8f\x83\xd1\xe9\xd9\x4d\xff\x87\xf3\xc1\x69\x30\x1f\xfb\xe4\xe3\xd9\xcd\x4d\xf5\xd7\x1f\xcf\x6e\xab\x3f\x5e\x5d\x5e\xdd\x9d\xf7\x6f\xeb\x5a\x39\xbf\xbc\xfc\xe9\xee\x6a\xf4\xbe\x7f\x76\x7e\x77\x3d\xa8\xf9\xf4\xee\xd6\x3f\xb4\xcf\xfe\x1a\x1c\x22\x88\xf7\x80\xe8\x94\xfa\xd1\x96\xcf\xd9\x21\x29\xbe\x78\x4c\xee\xac\xf7\x86\x5b\x18\x70\x17\x34\x81\xb9\x09\x8f\x54\x19\x56\x05\xd5\x76\x87\x82\xb8\xcf\xcd\xdc\x9b\x3e\x45\xb7\x52\x34\x63\x24\x91\xf2\x3e\x5b\x58\x0e\x86\x01\x8e\x42\xa2\x45\x86\xa9\xa0\xb5\x1f\xcf\x6e\x8f\xbd\x17\xa9\xda\x58\x90\x82\xe8\x48\x1d\xc6\x45\x1d\xd7\x04\x23\xc7\x22\x65\x0f\x70\x26\xbd\x77\x31\xe8\xc1\x6f\xc0\xaa\x7e\xb0\x35\x2a\x74\xa9\x9b\x38\xb6\x95\x00\xdc\xc4\x82\x86\x8b\xdb\xb7\x6a\x35\xfd\x72\x20\x16\x24\x19\xb3\x88\x66\xe8\x7c\x33\xd7\x51\x9a\xca\x34\x1c\x70\xbe\xed\x5b\x36\xfa\xae\x2a\x65\x14\x11\xdf\x15\x9c\x11\xf3\x49\x70\x72\x8c\xbe\x0c\xba\xb4\x43\x5b\x9b\x2d\xd1\x38\xe5\x0a\x30\xe7\x1e\x13\x40\x79\x31\x9c\xdb\x63\x8f\x71\xf0\xe6\x51\x4d\x1e\x19\x44\xb9\x66\x16\x6e\x12\x35\x64\x73\x02\xa1\x3b\xb4\x43\x3b\xe4\xde\x42\xf4\x6b\x23\xcb\xdc\x85\x58\x6c\xbe\x57\xac\x8e\x5d\x6e\x11\xaa\x78\x8a\x8d\x02\x0f\x75\xae\x55\x18\x71\x83\xc5\xdf\xf1\xec\x1a\xcb\xf3\x0a\x29\xa8\x7a\x6f\xac\x61\xe9\x86\xb9\xb6\x19\x8f\x4b\xcf\x28\xa0\xdf\x74\xcb\x57\xf7\x61\x01\x6b\xd7\xea\x56\xc6\x74\x69\x88\x03\x62\x1a\x54\xb6\x58\xc8\x54\x93\x86\x36\x08\x9c\x74\x1c\x1f\xdc\x0c\x76\x1e\x9e\x45\x41\x23\x46\x0e\x50\x35\x00\x75\xed\x22\xd6\xed\xba\xe6\xe7\x3e\x4c\x7d\x05\x75\xcd\x83\x25\xce\x0b\x8a\x6f\x81\x42\xeb\x44\xd4\x6d\x22\x99\x16\xe6\x1a\x6e\x8b\x6a\x5b\xd7\xfb\xa5\x6b\xa1\x76\xcb\x13\x36\xd1\xa3\x5a\x6f\xca\x0a\xc3\xa1\x69\x51\x34\x25\xf9\xf0\xe9\x6c\x07\x2d\xb6\x97\xe5\xbf\xb7\xde\x2e\x23\xc0\x07\x7a\x7c\x2a\xa5\x46\x29\x32\xd7\x34\x88\x5b\x4d\x30\x02\xd8\x4e\x11\x42\x3f\x17\xd5\x8c\x64\x7e\x2f\xe4\xa3\xf0\x16\x73\xd5\x1b\x8a\x01\x85\xba\x0e\x5e\x5d\xb0\x01\x0b\x28\xab\xaf\x95\xd2\x0b\x30\xf1\xaf\x04\x43\x22\xa7\x7b\x5b\x03\x27\x59\x92\xbc\x14\x40\xe1\xbb\x36\xa7\x07\xad\xc9\x4e\x50\xc3\x09\x5b\x10\x6b\xcd\x16\xd6\xe2\x8d\xf3\xcc\xc3\xb9\xc1\x69\x6a\xba\xea\x91\x9f\x9d\x7d\x06\xe2\x2b\xf2\x12\x16\x1a\x6f\x9c\x84\x2e\x5d\x92\x7c\xdd\xc2\xee\x22\xef\x7c\xd7\x11\x17\xab\x17\xd8\xe7\xd8\xd5\xac\x72\x41\x4d\x16\x02\xed\xa6\x1d\xc2\xcb\x4e\xfc\x47\x37\x6c\x75\xfc\xe9\x7b\x40\xb5\xd6\x2c\x35\xca\x26\xc8\x0c\x22\x59\xfe\x2f\xdc\x2c\xc8\x37\xb7\xb1\xc9\xb1\xc3\x52\xb6\x9e\x49\x73\x7e\xc0\xb3\x66\xc4\x80\x31\x00\x51\x24\x20\x07\xf4\x48\x1f\x0a\x3a\x00\x54\xbf\xb9\x0a\x5d\x14\x0f\x9f\x0a\xb9\x2e\x70\xa0\x81\x98\xa2\x80\x98\x6e\x9a\x89\x49\x01\x35\xe5\xa1\xd5\xbb\xa1\xa8\x1d\xa4\xd9\x18\xde\x42\xab\x70\x39\xed\x93\x6b\x3a\xa8\xd8\x2f\x11\x84\x53\x19\x6e\xf0\xe1\xbf\xea\x87\xfe\x21\xa3\x29\x15\x1a\x42\x4b\xac\xe4\x9d\xb2\x20\xc4\x91\x7d\x86\xe0\x2d\x81\xe6\x5a\xf8\x29\xdc\x5c\xe7\x4a\x9f\xf2\x07\x26\x08\x8f\x0f\x08\xef\xb1\xde\x81\xad\xca\xa6\xb2\x71\xfe\xe6\xcc\x48\x0e\x43\x51\x49\x19\xe9\x91\x7e\xa2\xa4\xfd\x82\x89\x28\x81\x02\x2a\x41\x14\x8c\xa7\x7c\xeb\xfc\x19\x2f\x41\xbf\x80\xad\xcc\x9b\x97\xf6\x41\xf0\xe1\x50\x50\x85\xbe\xe6\x04\x4e\x7a\xfe\x7b\x5d\x91\xa4\x42\xfc\xc1\x13\x62\xbd\x55\xae\xa1\x27\xdb\x24\xc4\x19\x5e\xb5\x41\xf0\x06\x6c\x4c\x9e\xca\x13\x24\xc5\x90\xaf\xa9\x26\x09\xa3\x4a\x93\xef\xbe\xe9\x14\x73\xe1\x26\x98\x73\x57\x7b\x7c\xf3\x80\x54\x17\xd1\xd6\x54\xe9\x0d\x70\xe0\x6d\x69\x5a\x2f\x40\x1e\x98\x7d\xd6\x92\x3c\x70\x95\x41\x4d\x9a\x20\x86\x1e\xab\x8a\x70\xad\x5c\x50\x20\xaa\x4c\x0d\x7c\xc4\xc1\xbf\x58\xb7\xa4\x1d\x56\x0d\x65\x59\xe5\x89\xa3\x7a\x06\x59\x92\x79\x6c\xd9\x8c\xea\xa1\xb0\x9c\xd5\x85\x63\x04\x35\x08\xfa\x49\x52\x8c\xe7\xa2\x10\xb2\x28\xcc\x84\xa1\xa2\x4e\xcf\x2f\xd0\x05\xa8\x5f\x3e\x04\xa8\x58\x5d\xcf\x1f\x16\xa3\xa9\x0d\x85\x4f\x41\x0b\xdb\xae\x95\x76\xea\xac\xc0\xcf\x28\x04\xd7\x74\x7f\x8e\xa5\x8d\x5a\x08\xc3\xcd\xa5\x27\x57\x78\x4d\x2a\x96\xf7\x15\xb2\xf1\xae\x3b\x68\x2f\x2a\xd7\x5b\xb1\xe1\x9a\x7d\x94\x35\x46\xf1\x86\xcd\x0d\x64\x8b\x6d\x14\x70\x1f\x8b\xf6\x5c\x7e\xd9\xc2\xd0\xcf\x62\x88\x2d\x5f\xcf\x05\xf3\x58\x6d\xc7\x3a\xc0\x1c\xcd\xe3\x20\x74\x34\x88\xab\x83\xd0\x62\xc7\xf8\xec\x9b\x0d\xfe\xd1\xc5\xdb\x9e\xfe\x41\x3e\x7f\x37\x15\x1f\x5c\x56\x9d\x78\xb3\xb0\xd7\x8f\xff\x46\x23\x26\xa2\x25\xf6\xe4\xe0\xb2\xaa\x39\x72\x0e\x59\x88\x82\xc9\xbd\x56\x3c\xb4\x55\xca\x7a\x64\x00\x17\x8d\x2b\x5a\x46\x27\xce\x6d\x10\xbc\x3c\x14\x46\x33\x31\x77\xbc\xc2\x41\xbb\xf6\x8b\x24\x5e\x77\x02\x30\x3f\x77\x2b\x8f\xcb\x7c\x3d\x0a\x62\x93\x36\xe1\xd2\x83\xa1\x0d\x80\x79\x23\x83\xe9\x31\x89\x65\x74\xcf\xd2\xa3\x94\xc5\x5c\x1d\x83\x07\x5c\x37\xba\xde\xe6\x46\xdb\xde\x5a\xd2\x68\x5b\x40\xb4\x5a\xee\x6b\x0e\x95\xb8\x20\xa8\xd8\x55\x23\x38\x20\x7c\x02\xea\x84\xcb\x2f\xc0\xa4\x03\x6b\xdd\x26\x4c\xe8\x74\xb9\x90\x5c\x68\x6f\xca\x2a\x2d\x84\xd3\x34\x8c\xd0\xd6\x14\x62\x9b\xee\x22\x52\x66\xc3\x69\xdf\xce\x98\x62\x2e\x2c\x00\x27\xa5\xa5\x2d\x73\x8f\xec\x62\x41\xf5\x4c\x41\x86\x44\x71\x0d\xac\xd2\x05\x9f\x9a\x15\xa2\x0b\x88\x2a\x40\x2b\x45\xfe\x91\x8f\xe3\x57\x9a\x27\xc9\x50\x08\xc6\x62\x45\x20\x99\xe1\xab\xda\x4c\x1c\xf3\xe9\x01\xa1\x71\x4c\xfe\xf7\xd7\xef\xcf\x7f\xb9\x1d\x8c\xce\x2e\xc0\xe6\x7c\x76\x3e\xf8\xe6\xc0\xff\x78\x79\x77\xeb\x7f\x45\x0b\xcb\x03\x4b\xc9\x9c\xde\x83\x8a\x27\x14\xca\x7f\x10\xed\x1e\x8e\xd4\xe5\x28\x99\x27\x8a\xb9\x08\x52\x2b\xa6\xf8\xac\x76\xbb\x87\x8d\xc5\x46\xd0\xe6\xd7\x41\xf9\xbd\xf6\x9f\xac\xa6\x41\x47\x3c\xbe\x0b\x27\x06\xce\x99\xd0\x86\xc7\x58\x6b\x5f\xae\xfb\xe6\x04\xc7\xc4\x94\x8b\xa6\x38\x37\x26\x1e\x9e\x52\x88\xff\x89\x2d\x3f\x19\xf5\xfa\x8a\xf2\xb4\x35\xed\x0d\xc4\x03\x4f\xa5\x80\xa9\x79\xb3\x56\x5e\x64\x99\x69\xe7\x6d\x0b\x0e\x95\x42\x59\x18\x22\x29\x16\x8d\xb1\x94\xa5\xc4\xed\xd7\x31\xdd\x3e\x7a\x7f\xd9\x67\x9d\xba\x6c\x38\x65\xd9\x0d\x7d\xa0\x3c\x81\x38\x58\x77\xd1\xe4\x34\x38\x14\xb7\x97\xa7\x97\xc7\x84\x25\x74\x2c\x53\xc8\x8e\xc1\xc0\x1d\xd7\x84\x5d\x30\x28\x5e\xe9\x1b\x2a\x64\x42\x1e\x90\x45\x9e\x09\x19\x1a\xd1\x7a\xd8\xc6\x9a\x8c\xc8\x85\x4c\xab\x79\x84\xbb\x55\x01\xed\x64\xaf\x64\xda\xe6\xfa\x37\xaf\xc1\xd2\xc9\x85\x51\xe4\x4a\x9c\xd7\xde\xcd\x13\x46\xb1\x00\x0f\xba\x85\xac\x2d\xdf\x06\x86\x26\x49\x01\x6c\xdd\x1c\x1c\xd5\xb3\x8e\xf2\xfc\x4d\x29\xc8\x4f\x7f\x56\x64\x9c\xe9\xa1\x28\xb6\x21\x05\x54\x72\xff\x81\xea\x68\xf6\xcd\x50\x5c\x1a\x35\xf3\xa7\x3f\x37\xa4\x6c\xc7\x54\xd3\x51\x3d\x51\x36\xaf\xc9\x29\xd5\xf4\x5c\xd2\x98\x8b\xa9\x05\x22\xa8\x5f\x8b\x1f\x06\xb7\xfd\x63\x72\x69\x75\x78\x9f\x65\x99\x23\x3c\x04\x0d\x01\x43\x86\x89\x38\x2e\x02\xac\x5c\x78\xd6\x6f\x4d\x64\x20\x3d\x99\x0b\x6b\x28\x60\x29\x91\xab\x72\x4d\x16\xd2\x62\xba\x1a\xad\x0c\x01\x04\xa8\x2f\x57\x9e\x2c\x89\x59\x1d\x20\x63\xbf\x19\x56\x1e\x03\x79\xa6\xca\xec\x87\x02\x14\x74\x9f\xf9\x96\xc8\x88\x26\x10\x39\x77\x18\xd8\xf4\x8c\xda\x2e\x33\x48\x43\x82\x90\x15\xb1\x2c\x06\xb8\xfa\xcc\x38\x2f\x94\x85\x1b\x05\x06\x00\xd8\x47\xeb\x4c\x9d\x4b\xc3\x71\x7a\x43\x71\x36\xc1\xc0\xba\x04\x57\xc7\x7c\xc8\x04\xf8\x93\xdd\xb2\x98\xa7\x8e\x1f\x41\x61\x32\x74\x2b\xd2\x08\xcc\xf7\x62\x09\x61\xd1\x80\x03\x29\x21\x40\x23\xe7\xce\x96\x28\x2b\xbb\xe8\xef\xc4\xe0\xb3\xa1\xc0\x78\xbe\xc2\xbe\x84\x59\xc2\x41\xef\x52\x40\xb8\x61\x7e\x5d\x7a\x01\x63\x61\xc3\x0f\xad\xac\xbf\x48\xd9\xa1\x2b\x7c\x6b\x7e\x0d\xd6\xd4\xdc\xb0\x3d\x72\x1d\xaa\xd7\xb1\x8c\xb2\xb9\x03\xbb\x81\x74\x2d\x1b\xa7\x66\x2f\x51\x4f\x21\x78\xb1\xd7\x52\xfc\xbf\x85\xff\xad\x95\x4d\xaf\xb6\x2c\x77\xee\xa9\x6a\xb4\x28\xb6\x54\x68\x6d\x3d\x9c\xc6\x1a\x6c\xe3\x8b\x1c\x33\x03\xaa\xa1\x4b\xa3\x7d\x4a\xb0\x43\x63\x56\x9d\x8c\xbf\x52\xe4\xec\xca\x08\x29\x46\x29\xf5\xc7\x24\x53\x1a\xa3\xb4\x20\x53\x05\xbf\xc6\x48\xf9\x03\xf2\x2d\x19\x66\xdf\x7e\xfb\xc7\x88\x7c\x76\xff\xf8\xd3\x7f\xfc\xc7\x1f\xff\xd4\x25\xf4\xdb\xe9\xcc\xd0\x6e\xbe\x46\x1e\x01\xb7\x28\xb5\x84\x3b\x50\x65\x26\x5b\xec\x82\x3d\x23\x4d\xcb\x6f\x35\xf6\xc6\x4c\xa7\xba\xc7\x41\x10\x0e\x9d\xda\x43\xa8\xc2\xc3\x43\x0a\xa7\x27\x77\xf6\x2b\xa6\x0f\x8a\x87\xd8\xcb\xa3\x56\xe8\xfe\x5f\x2b\x70\x0b\x46\x86\x9a\x37\x0b\x16\xe2\x89\x97\x80\x4d\x23\xe4\x6b\x6b\xa2\xd3\xe0\xe3\xfb\xc6\xdd\x41\x32\x89\x59\x6a\x0b\xc2\x39\xab\x9a\xb7\xf5\xc1\xf9\x65\x9f\x17\x89\xb4\x61\x1c\x94\x28\xb6\xa0\x70\xc7\x9b\xf3\xda\x1b\x8a\xc1\x67\x6a\x98\xeb\x81\xab\xdb\x09\x1f\xa1\x73\x64\x42\x23\x46\x50\x9a\xfe\xfa\xf3\xb1\xf9\xed\x80\x2c\x8f\x21\x1a\xf3\x80\xfc\xe3\xd8\xe6\x4d\xd3\x54\x8f\xcc\x4f\xdf\x38\x71\xd8\x36\x01\x83\xe6\x8a\x0c\xdf\x1d\x3d\xd0\x14\x8b\xbe\x1c\x59\xc0\xdb\x77\x96\xfd\x79\x30\xef\x50\x80\x4e\xa4\xbc\xb7\xb1\xaa\x95\x2f\x8f\x1c\x0a\x03\x10\xb8\x77\x6e\xe0\xe6\xdb\xb0\x63\x23\xec\x1d\xc2\x0b\x8c\xf4\x16\x63\xd2\xfb\x9b\x92\x82\xf4\x96\x74\x9e\xd8\x5f\xdd\x53\x1b\x4a\x4b\x15\x71\x15\xee\x5c\x20\x4d\xb2\x44\x73\xe6\x0f\x89\x1c\xc3\xbc\x3e\xba\xb9\x62\x30\x2a\x0c\x34\xbf\x22\xf2\x5b\xc5\x4e\xc4\x8a\x3b\x98\x4b\x0e\x35\x61\xcd\x2b\x70\xf7\xd6\xcd\xea\xb3\x1f\xd2\x7f\xa3\xf3\x16\x16\xc5\x65\xb0\xa1\x05\xd7\x07\x82\x99\x46\x3f\x93\xaf\x2d\x13\xfa\xc6\x5c\x04\x36\xf2\x17\x97\xa1\xae\x83\xa5\xef\xe0\x97\xa0\x03\x2e\x08\xe6\x24\xae\xf8\xf2\x1f\x47\xbd\x5e\xcf\x7f\x7d\x61\xa6\xf2\xff\x11\xae\x15\x4b\x26\xd8\x92\xbb\x66\x96\x43\xf1\xd1\x01\xd6\x39\x0b\x73\x8e\xef\x02\x75\x1a\x23\x99\x90\xc3\xdc\xea\x1a\xcb\x48\x91\xdf\x19\xd9\x33\x58\x4a\xf8\xd1\x28\x5b\xf5\xa7\xca\x96\xeb\x7d\xa6\x63\x65\xad\xd6\xe5\x83\x15\x42\x3a\x78\xed\x93\xaa\x10\xfd\x10\x68\xc1\x50\xce\x91\x85\x7d\x80\x4a\xba\x9a\x7d\xd6\xf0\xa8\x01\x55\xa3\x36\x2a\xbc\x5e\x82\xab\x30\xdc\x1c\x5c\x03\xc9\xba\x61\x01\x2c\xf6\x81\xe5\x0d\x38\xcf\x83\xd0\xc7\x61\xae\x17\x11\x42\xa8\xa9\x6c\x3e\xa7\xe9\xf2\x28\x3f\x6d\x55\xe2\xcc\xf1\x50\x81\xcb\x24\x6e\x01\xc0\xcf\x9a\xd8\xa3\x65\x43\x0d\xac\x0c\xe8\xee\x34\x7f\x76\x23\x00\x60\x87\xa0\x37\x2c\x3f\xc0\x44\x24\x63\x4b\xd7\x79\xea\x65\x51\xac\xf0\xef\x54\x05\x0a\x17\xb6\xa2\x72\x8b\x99\xd0\x98\x8f\x6d\xdf\x70\x1f\x37\x30\x70\x39\x82\xe2\x18\x6c\xda\xc1\x87\x79\x76\x79\xe3\xbe\x69\x7f\xed\xc2\x3a\x14\xe5\x6a\xea\x54\x39\x67\x36\x48\xe9\x63\x7e\x01\x43\x00\x06\x9a\x50\x32\x9f\x98\x8a\x7f\x9f\xc8\x2b\x9e\x98\x7b\x0b\x68\xbc\x37\x14\x85\x9f\x0f\x08\x4b\xf8\x9c\x0b\x1f\x00\x87\xec\x5d\x4e\x50\xc4\xbd\xe7\xda\x6c\x99\x8a\xef\x0d\x07\x73\x39\xfe\x81\xde\xd3\x17\x4b\x47\x3a\xde\x7b\x64\xcd\x04\x99\x32\xe3\xca\x15\x69\x23\x71\x9a\x26\x0e\xad\xd4\xc8\x03\xc2\x83\xf3\x3b\x14\xa6\x35\x77\x96\xf2\xc8\xdb\xa0\xbd\xa0\xb9\x43\x07\x24\x16\x70\x00\xe8\xa3\x10\x3e\xeb\x85\xd4\x1a\x11\x65\x20\xb2\xf9\xb6\x79\x1b\x36\x12\xf7\xa5\x6c\x69\x57\x79\x2d\x56\x9b\x03\xc4\x44\x36\x77\x07\xaa\x03\xc5\x0d\xac\x00\x14\xb3\x28\xa1\x70\x77\x40\x43\x10\x9e\x78\x80\x5e\xcc\xa0\xee\xab\xbd\x5e\xb0\x1b\xc4\x26\x4d\x98\xf8\x1a\xff\xfe\x86\xd8\xbb\xe1\xdb\x03\x7b\x9f\xa7\xca\xea\x79\x6e\xcf\x01\xdb\x9e\xc5\x68\xe8\x06\x88\xb2\x29\x85\x6a\xdc\xd6\xfa\x52\x50\x0e\x41\x02\x5b\xca\x8c\x3c\x72\x35\x1b\x8a\x5b\xe9\xac\x82\x44\x48\x0f\xf2\x76\x00\x1a\x63\xa5\x3f\xaa\x80\x09\xc0\xa8\xeb\x28\xa0\x54\x28\xbd\x7b\xda\x0e\x44\x9a\x8e\x84\x8c\x59\xc7\x80\xf3\x9a\x42\xd4\xd6\x59\xe0\x9c\xcc\x29\xc3\xd4\x2a\xb8\x29\x1a\xcb\xe8\x2a\xd5\xd1\x80\x5e\x5b\xd1\xdd\xb6\x03\x75\x4c\x1e\xc5\xa6\xa8\x16\xfe\x56\x83\x56\x9c\x5a\x18\xa4\xc2\x16\xd6\xbe\x58\x75\x7e\x2b\x1d\x2d\xde\xcc\x85\x80\x73\x8f\x60\xd9\x7d\x14\x30\x25\xd3\x54\x66\x0b\x9f\x2f\xee\x32\xe7\x70\x1b\xac\x4c\x73\x26\x26\xf2\xd8\x6a\x55\xe7\x5c\xdc\x23\xc5\x3f\xd5\x1e\xf9\xfa\xee\xc1\xef\xee\x0e\xc3\x15\x3f\x24\x5c\x44\x49\x06\x17\x9f\xd2\x34\xba\x47\x84\xbf\x26\xcb\xac\xf9\x66\xb4\x3e\x2f\xb1\x41\x62\xca\x92\xc4\x76\x9b\x5f\xa0\x79\xed\x9d\x07\x4e\x09\x25\x77\xd7\x67\xf5\x7d\xdf\xf3\xaa\xc7\xa5\xfe\xf6\x2c\x12\x08\xfc\xcf\x4f\xbc\x53\x70\x64\x09\x8a\x94\x15\x48\xdd\x5b\x80\x9a\x00\xb8\x4a\xb7\xf7\x96\x2e\x5e\x73\x0b\x8d\xe6\x35\x94\x5a\x3f\xf9\xbc\xe3\x53\xfb\xf1\x47\xf3\x6d\xfd\x8e\x7c\x84\xbc\x20\x0f\x9e\x30\xa7\xc2\x4c\xd0\xf5\xda\x60\x22\xc4\x8b\x71\xa3\x21\xdd\x2d\x36\x1a\x10\xf6\xd8\x12\x36\xdb\x76\xe5\x5a\x79\x44\x9b\x21\x4d\x50\xe1\xd6\x33\xd0\xc4\x0e\xc8\x4d\x34\x63\x73\x0a\x71\x29\xf3\xa2\x46\x06\x92\xe9\xd7\x09\x4d\xa7\x28\x27\x2a\xa6\xd5\x37\x35\x3b\x9c\xc7\x67\x6f\xb1\xc3\x1b\x40\xfa\x87\x3e\x1a\x90\x42\x56\x71\x00\x3f\xca\x22\x3a\x90\x67\x4e\xbe\x38\x86\xbd\x3b\xb8\x0a\x51\x81\x23\x99\xa6\x80\x62\x17\x1b\x69\xbc\x19\x37\x61\xcb\xd2\x2e\x17\x74\xee\x73\x8c\x5d\x81\x09\x9b\x4a\x82\x83\x1b\x33\x80\x8a\x6a\x1e\xc3\xd6\x35\x5c\xc2\x21\x58\x4c\xf5\xa6\x11\x0c\x45\xdf\xbd\xe2\xf3\x14\x41\xc4\x4d\x51\x0e\x81\x58\x36\x8c\xdc\x04\x31\x93\xe6\xab\x6e\x27\xd7\x30\x89\xae\xe9\x60\xe5\x32\x34\x46\xcc\xf5\xd8\x72\x28\xc6\x38\x7d\xc7\xcd\xa3\xa1\xe7\x87\xee\x55\xba\xea\xa1\x1e\xa2\x72\x15\xa5\xba\x8e\xd7\x8b\x94\x2e\x07\xdd\x36\x14\x16\x6e\xc2\x78\xb7\x64\x99\x93\xa9\x59\x71\x54\x4d\x4a\x9d\x55\x4f\xab\xde\x8a\x1b\x73\x3a\x1f\xa5\x32\xd9\x66\x8f\x5c\x13\x05\x35\x77\x86\x90\x9f\x4b\xf2\xf7\x8c\x26\x68\x92\x17\x96\x1c\xdd\xb0\x41\x62\xf8\xfe\x4f\xa4\x0f\xd7\x25\xf9\x08\x7c\x11\x9c\x91\xd0\x9a\x96\x84\xcf\x17\x2c\x55\xd2\xe8\x63\x0d\x9b\x7c\xff\x67\x35\xb2\x78\xbd\x23\x1a\x45\x32\xab\x62\xf3\x76\x98\x49\x4d\x6b\xe1\xa4\x28\xb9\xcf\xc6\x2c\x15\x0c\xab\x45\xc2\x7b\xc4\xbd\xd7\x6a\xb8\x92\x66\x7a\xf6\xfd\x28\x4a\x78\x6b\x10\x61\xc8\x84\xe8\x9b\xcf\x4e\xf0\xab\x55\x13\x28\xb4\x5f\x18\xba\x20\xf8\x8c\xe0\xb3\x1e\xf9\x81\x46\xf7\x4c\xc4\x64\x91\x64\x53\x6e\xd3\x93\xe1\x86\x02\x76\x19\x58\xa9\x8a\x13\x43\x95\x17\xdb\x37\xd7\xd0\x50\xcc\xe9\x3d\x68\x48\x9f\x6d\xc0\xb8\xd1\x34\x3b\x69\x5b\x9e\x1e\x2a\x38\x0d\x2e\x97\x56\xb1\x28\x4b\xcd\x1b\x78\x3e\x34\x9e\x0f\xb0\x2b\x01\x56\x59\x26\x08\x05\xa8\x87\xaf\x14\xc9\x16\xce\xf8\x01\x06\x8f\x04\x7c\x44\x38\x49\xa8\x1f\xc6\x8d\x38\x38\x63\x43\x01\x71\x77\xae\xc5\xa5\xe7\x2a\xa1\x5b\xd2\xbb\xc7\xeb\x0e\xdf\x04\x13\x9d\xb7\x73\xa7\xa0\x19\x69\xe7\x31\x85\x7a\xc6\x04\xe8\x61\xed\x5b\x86\x6c\xf1\xf6\x9b\x56\x88\x1f\xc4\x59\xe4\x86\x23\xbf\x84\x99\xe0\x16\xb6\xda\xda\x0a\x83\xd0\x1e\x67\x52\xcf\xbf\xe7\x8a\x28\xaa\xb9\x9a\xf0\x5a\xfd\x34\x4c\x2f\xdf\x66\xd5\x69\xb7\x9c\xf6\x9a\x7c\xf6\xd2\x5a\xf8\x18\xe5\x1e\x79\x0f\xea\x76\x3e\x25\x2d\x7d\x76\x78\x13\x4b\xd0\x33\xd6\x08\x6c\xb6\x0b\xe7\xbe\x9b\x41\x5b\x2b\x8a\x8f\x47\xef\x91\x7e\x6e\xe6\xc4\xfc\x78\x34\x60\xae\x99\x11\x4b\x14\xdb\x84\xf8\x5a\x59\x04\xc0\x19\x08\x04\x44\x40\x56\x51\xe6\xf7\x1c\x64\xd1\x0f\xf3\x11\x52\xbe\xe8\x3d\x13\xab\xd4\xbe\xf6\x23\x1c\x14\x12\x66\xeb\x86\xd8\xf7\x0a\xbf\x44\x9d\x7f\x93\x01\xb6\x3f\x76\x39\x24\x01\x9f\x1c\x99\x25\x37\x82\x7e\x74\x6f\x03\xcd\xd1\xec\x63\x41\x0d\x1e\x67\x52\x85\xe7\xcc\xed\x1f\x6c\xa6\x4e\x33\xe6\x02\xca\x21\x50\xdf\x2f\x30\x7a\xe8\x85\x0c\x31\x0f\x60\xd4\xfe\x90\xa2\x49\xcb\xef\x37\x71\x2c\x14\x96\x01\xcc\xe5\xae\xa9\xea\x69\xfe\xe9\xcf\xea\x12\x4e\xec\x2e\xf2\x76\x13\x3a\x66\xc9\x13\x40\x39\x6d\x68\x88\xf4\xd1\x20\x38\x2e\x30\xfa\xc7\x3e\x51\x7c\x21\x63\x92\x93\x57\x53\x50\xa2\x10\x12\xa3\x01\x5e\xe1\xb4\x82\xc1\xb5\x9e\xdb\x3a\xca\xfe\x18\x78\x2b\xb1\x2a\x2e\xc2\xa3\x04\x22\x97\xcd\xed\x02\xed\xd7\x5e\xff\x5c\xf9\xfb\xa4\x9e\xc6\xae\x64\xbc\x0d\x61\x75\x87\xc0\xaa\xd2\x75\x8b\x88\x43\x55\x57\x94\x67\xc5\x4a\x2c\x64\x73\xac\x58\x3c\x6a\x5f\xc6\x06\xfc\x8e\xe3\x6c\x72\x03\x00\xbc\x4d\xf9\xeb\x0e\x79\x68\xc6\x7c\x42\x8a\xd9\x67\xd3\x8d\x0f\x8f\x6e\xda\x14\xeb\xc6\xca\xaf\x7f\x4a\xfe\xef\xcd\xe5\xc5\xe1\x9c\xa6\x6a\x46\x21\x3f\xd0\xb5\x75\xe0\x60\xe2\x51\x01\x75\xe6\x75\x2e\xc8\x50\x1c\x92\xa9\x3c\x40\x6f\xce\x31\x99\x69\xbd\x50\xc7\x47\x47\x53\xae\x67\xd9\xb8\x17\xc9\xf9\x51\xbe\x36\x47\x74\xc1\x8f\xc6\x89\x1c\x1f\xa5\x0c\x82\xee\x0e\xbf\xeb\x7d\xff\x1d\x6c\xcd\xd1\xc3\x77\x47\x60\xc3\xef\x4d\xe5\xef\xce\xbf\xff\xcf\x3f\xfe\xc9\x34\xbc\x58\xea\x99\x14\xc7\xd6\x55\xb4\xb2\xed\x43\x14\x7c\x8f\xf0\x93\x52\x2f\xff\xd9\xfb\x36\x1c\x86\x7d\x75\x2e\x63\x96\xa8\xa3\x87\xef\x46\x6e\x67\x7a\x8b\x2e\xce\xaf\x9c\xe1\xfb\x25\x2f\xd5\x70\x32\xbf\x7b\x92\x71\xe9\x41\xeb\xb6\xa5\xe6\xac\x84\x21\x95\x5b\x9c\x98\x7b\x56\xf1\x07\x76\xd0\xc0\xbc\x24\xd5\xa0\xd3\x77\x45\xf8\x6d\x94\x6d\x3a\x65\x90\x81\xf7\x8d\x47\x80\x1e\x89\x36\x88\x05\xe5\x75\x71\x3e\xd6\xcb\xbc\xcd\xfa\x3d\x25\x0e\xea\xae\x01\x50\xed\x74\x37\x04\x3f\x4d\xf0\x6b\xe7\x13\x97\x8f\x0e\xf4\x74\x17\x50\xa1\x2d\x8b\x69\x78\x3c\x45\x24\x1e\x18\x8b\x1b\x57\x37\x1a\x29\x2c\x31\x86\x49\xd8\x28\x48\x05\x11\x93\x88\x47\x20\x27\x1e\xd9\x15\x83\x5d\x11\x04\x5a\x4e\x6a\xfe\xf1\x43\x22\xc7\xea\x1b\x8f\x82\x42\x95\xeb\x23\x87\x25\x68\x26\xc1\xdd\x00\x89\xba\xa5\x78\x4a\xfd\xc4\x9d\x99\x50\x0a\xe9\xb2\xf0\xf5\x44\x95\xc7\xa2\x62\x52\x26\x4d\x65\x26\x1c\x10\xa3\x14\x4c\x4e\x20\x4a\x00\x2e\x40\xe7\x05\x01\x23\x88\x90\x3a\x48\xc0\x4c\xd9\x02\x19\x29\x98\xeb\x9a\x97\x7b\x4b\x30\xd2\x75\xeb\xfc\x14\x60\xa4\xdb\xae\xbb\x3d\x38\x2f\xb4\xe0\xdb\x86\x2a\xe0\x51\xea\xc0\x66\xe1\xfd\xb5\xae\x09\xcf\x07\xc0\x17\x11\x16\x19\x43\xc0\x11\x88\x20\x66\x87\x5a\x1e\x42\xe6\x3a\xe4\x43\x23\x3c\x70\x53\xd1\x0c\x70\xe9\x74\xb9\x0e\xcc\xfb\x2d\xc6\x89\x51\xe3\x9f\x83\x81\xda\xbb\x57\xe5\xe5\xc7\x8d\x72\x29\x04\x4b\xad\xb1\x7a\xed\xcd\xd1\xd1\xe1\x13\x6e\xe5\x6a\x8f\x6f\x2e\x80\x86\xd0\xad\x3e\xde\x8f\x06\x4c\xa0\x47\x20\x34\x7a\x26\xe7\xd2\x5c\xdb\x32\x53\xc1\x43\x0c\xad\x87\xcb\x66\x45\x25\xf8\x05\x22\xd5\xbc\xdc\x6c\xcc\xd1\x32\x8f\x50\x97\x0f\x5f\x5a\x8f\x5f\x1d\xcc\x64\x5c\xc4\xff\x5d\x33\x7e\x0f\xdc\xba\x9a\x6e\xc0\x9d\x38\x07\xdb\x29\x94\x25\xb1\x70\x8c\xfc\x1f\x46\x54\x37\x24\xe5\xc3\xd8\x5d\xea\xbb\x0d\x3c\x45\x40\xa6\x10\xb2\xad\x54\x7d\xb4\x3c\x7c\x26\xb2\x79\xc7\x3d\xf0\x41\x4c\x6d\x36\x80\x0a\x0c\xeb\x71\xf1\x3c\x87\xb5\x01\x3d\x8d\xb1\x26\x5d\x14\xc3\x55\x7a\x56\x5d\xb4\x1b\xa2\xac\xe4\xc1\xad\x86\x02\x2a\x32\xbe\xff\xf0\x21\x2f\xd8\xb3\x5c\xb0\x03\x32\xce\xe0\xf9\xc5\xe5\x6d\xe8\xc5\xe3\x02\x1e\x1f\x46\x33\x16\xdd\x43\x32\x0a\x72\x6c\xdc\x4b\x57\xac\x69\xbc\x1c\x8a\xbc\x2c\x84\x96\xce\x25\xb5\xf4\xb8\x9b\x1e\x7b\x56\xa6\x24\xe6\x6a\x91\xd0\x25\x18\xff\x05\x86\xb1\xe5\x8e\x03\x1f\xff\x69\x28\x79\x33\x1b\x17\xd4\xad\xb0\x2c\xca\x09\x89\xf0\x97\x9b\x84\x2f\xda\xe8\x43\xb2\xeb\x64\xa2\xad\x91\x50\xb7\x09\x66\x6a\xaa\xc0\x12\xb8\xa4\x71\x47\x43\xaf\xb6\xcf\x96\x2e\x97\x06\x1d\xbe\x73\x41\xe2\xa0\x07\x0e\x5d\x55\x43\xf3\x37\x96\xcc\x62\xe9\x03\x8b\x87\xa2\x98\x8f\x6e\xef\xd9\x7c\x97\x49\x8e\xcc\xbf\x1b\x12\x77\xeb\xdc\xca\xec\x31\x80\x1c\xbc\x1c\x7d\xc7\x07\x42\xaf\xa8\x14\x50\x5f\x12\xf0\x09\x20\xed\x5b\xdb\xc3\xf2\x52\x00\x16\xc7\xdb\x16\xea\x28\xb8\x9e\x3c\x61\xfa\x6c\x5b\x84\xe2\xf0\x01\xa2\x36\x60\xb4\x92\xba\x54\xd7\xc6\x50\xb8\x1c\x97\x49\x96\x20\xbc\x52\xc3\x6a\xb9\xe4\x7b\x17\x8d\xf7\x72\x51\x99\x5e\xe7\x26\x41\xe9\x04\xef\x21\x72\x49\x09\xd1\x32\xaf\xd1\x0a\xa4\xcb\x84\xca\x80\x0d\x3b\xd4\x74\xc8\x24\x9b\x32\x4d\x8c\x48\x14\x67\x09\xa6\x6c\x80\xef\x0f\x12\xf9\x69\x92\x10\xae\xd5\x50\x78\xdc\x01\x44\x91\x84\x5b\xca\xe5\xc8\xc5\x56\x4c\x85\x2e\xa0\x59\x5b\x5b\x0b\xee\x2e\x1e\x71\x1d\x8e\x08\x7c\x5a\xcb\x10\x69\x78\xb1\x60\x14\xe3\x8b\xed\x31\x14\xa1\x9c\x5a\xde\x04\x1b\x8c\x0b\x15\x8f\x76\x11\x17\xdb\x4c\xba\x58\xf1\xaa\xf3\x96\xf4\x48\x1f\x67\x67\x84\x54\x57\xf6\x07\x47\x6b\xb3\x9a\x6c\xd8\x87\x91\x04\xb5\xf2\x95\x4b\xbd\xac\xbf\xa0\xa9\xe6\x51\x96\xd0\x34\x59\xba\x72\xc5\x7c\x12\x54\x30\x82\x3d\xc0\xac\x73\x5b\x1a\x19\xc0\xd8\xad\xb9\x58\xd1\x39\x0b\xb2\x69\xac\x4a\x9c\x04\xee\x26\x84\xd2\x43\x3f\x86\x69\xeb\x9b\x1e\x39\x2d\xd7\xab\x82\x33\x11\xa0\xd5\x70\x85\xec\xcf\x8f\x37\x08\x03\xc7\xba\x57\x7c\x62\xc4\xf0\xaf\x82\x53\xd7\x54\x4b\x91\xaa\xfb\x8e\xbe\x2c\x87\x79\xba\x3a\x84\xa9\x36\x0d\xe4\x16\xea\xed\x15\x3c\x5c\xfe\x40\x34\x0c\xd0\xdd\x0c\x1d\x07\x19\x22\xfd\x6c\x30\xd0\x9f\x83\x82\x76\xe5\xc1\xce\x57\x14\x4c\x82\x7d\xec\x38\xd4\x00\xcc\xbc\xfb\x40\x03\xca\x09\x3d\x97\x8d\x2b\xbb\x5e\xed\xfd\xb9\x00\x2b\x4e\xcc\xb8\x8c\xca\xc1\xd0\xd7\x5d\xaa\x89\x0b\x63\xb0\xf8\xe3\x00\x16\xe9\x0f\xdb\x98\x91\x84\x8b\x7b\x97\x77\x66\x76\xfe\x80\xd0\xbc\x75\x38\x7c\x38\x7a\x24\xe6\x06\xb1\xa6\x0e\x5a\x75\x0b\x49\xa7\x5d\xec\x76\xbd\xb8\xee\x46\xd2\x09\x3d\xb7\x52\x39\x36\x98\x47\xfb\x6d\x59\x19\x5d\xe5\x25\x58\x17\x52\x85\xf7\x4b\x10\xe7\xa1\xb9\xaf\x25\xda\xb8\xbe\x57\x33\x5a\x5f\x7e\x7a\x3d\x5c\xf8\xdd\xc5\xe9\xe0\xfd\xd9\x45\x11\xe3\xfb\x2f\x77\x83\xbb\xe2\x2f\xd7\x77\x17\x17\x67\x17\x1f\xc2\x9f\x6e\xee\x4e\x4e\x06\x83\xd3\xe2\x7b\xef\xfb\x67\xe7\xa5\xf7\xcc\x4f\xc5\x97\xfa\x3f\x5c\x5e\x97\x50\xc5\x6f\x7e\x3a\xbb\xba\x2a\xfe\x74\x7b\xf6\x71\x70\x3a\xba\xbc\x2b\x00\x93\x9f\xfe\x72\xd1\xff\x78\x76\x32\xaa\x19\xcf\xf5\xe0\xe4\xf2\xd3\xe0\x7a\x70\xba\x12\x70\x3c\x9f\x6f\xed\x92\xee\xc2\xe1\xbb\x31\xca\x7c\x9f\x4c\x52\xce\x44\x9c\x2c\x31\x1e\xcd\x29\x29\xa5\xf0\x97\xf0\x0a\xe0\x73\x26\xb3\x6d\xc2\xca\x8c\x12\x2f\x1f\x58\x0a\x09\x72\xd8\x9a\x8d\xa6\xa7\xea\xbe\x11\xe3\x44\xa7\x55\x83\xde\xca\xe8\x59\x9d\x2e\x7d\x7c\xf6\xca\xb0\x50\x9f\x5e\x6d\x3b\x21\x0b\x96\xae\x1a\x0b\x5c\xd0\x69\xb6\xd0\x7c\xdc\x1c\x28\xd8\x32\xed\xb8\xbb\x1a\x88\x78\x1d\xf5\x79\x93\x17\xf5\x8c\xb1\x10\x2f\xb7\x4d\xa8\x10\xb4\xb0\x69\xf1\x04\xff\xb5\x0b\xaf\x58\x64\xe3\x84\x47\x84\xc7\x39\xca\x08\x06\xd2\x61\x58\x37\x5a\x7b\xca\xb0\x3e\x0b\x96\x82\xc4\x64\x04\xd1\x45\xca\x0e\x69\xa6\x67\xae\x12\xa3\x2f\xde\x8f\x30\x3b\x2c\x4a\x99\x76\xc5\xa1\x59\xec\xe0\xf4\x83\x9e\x60\x30\x36\xb9\x23\x86\x3c\xd2\x5e\x00\xb1\xd8\x60\xde\xc3\x2f\xb1\xf5\x0e\x86\x48\x7c\x7f\xe5\xd2\xd8\x11\x73\x55\x2e\x99\x06\xb2\x21\x3e\x74\xa0\xfc\x66\xde\x86\x53\x47\x2e\x08\x11\x37\xd9\xc5\x33\xd6\x4f\x63\x1d\x8d\x85\x84\x52\x0c\x3f\xb4\xad\xdb\x47\x27\x29\x83\x4b\xc4\x7a\xab\x9c\x1a\x0d\xde\x55\x1b\xff\x08\x61\x8f\x46\x63\x18\xb3\x19\x4d\x26\x68\x91\x31\x5b\x93\x9f\xab\x2a\x89\xde\xca\x7b\x26\x6c\x91\xf4\x17\x61\x87\x02\x05\xf0\x3c\xdd\xc7\x1b\x27\x72\xf3\x0d\x14\xf4\x4e\x5d\x25\x77\x8c\xff\xc6\x62\xa1\x28\xae\x06\x8f\x31\x08\x33\x47\xdc\x72\xa1\xe3\x93\x09\xff\x6c\x1a\x1c\x0a\x56\x8b\x39\x04\x2e\x6d\x97\x78\xed\xf9\x32\x60\x6e\x60\xf6\xea\x3d\x13\x50\x0f\x00\x8b\x7a\xad\xa5\xd9\x6e\x56\xc3\xea\x5e\x54\x6d\x88\x7e\xc5\xc0\xfc\xc4\x0b\x65\x12\x42\x03\xad\x5b\x27\x48\xf4\xb8\x67\x3d\x72\x6a\x73\xf2\xcc\x2f\x27\xe7\x67\x83\x8b\xdb\xd1\xc9\xf5\xe0\x74\x70\x71\x7b\xd6\x3f\xbf\x69\x7b\xfc\x76\x11\x2b\x5c\x3a\x7d\xe5\x70\x6d\xcf\x21\x8e\xec\xc9\xcb\x53\x56\xfc\xa4\xf2\x63\x07\x5b\xb2\x7e\xf4\x3c\x5e\x8c\x62\xae\x22\x73\xfd\x2d\x47\x4c\xc4\x00\xd6\xb6\x11\xa9\xd6\x37\x55\x9e\x85\x7f\x83\xf8\x37\x1c\x07\xc1\xdb\xee\xc1\x51\xb4\x7f\x0e\x68\x2e\xb6\x1e\xb6\x39\xfc\xf1\x50\x04\xb7\x4d\x6f\x3d\x42\xaf\x69\x6e\xbb\xb9\x15\x9b\x28\xcf\x09\xc7\xcb\x95\xca\xa8\xe1\x8f\xee\x35\x48\x05\x6d\x58\x15\x0b\xcf\x11\x22\xc6\xf1\xa0\x26\x11\x31\x2a\xf2\x9c\x8a\x98\x6a\x99\x2e\x1b\xa6\xd8\x8e\x79\x86\xc7\xa6\xc8\x42\xc3\x2b\xdb\xe8\xff\x6e\x17\xf0\x55\x2a\xca\xa4\x84\xb8\x72\xb7\x97\x3f\x0d\x2e\x6e\x46\x83\x8b\x4f\xa3\xab\xeb\xc1\xfb\xb3\xff\xf6\x79\xf7\xb6\xc2\x7a\xb1\xda\x09\x33\x97\xa2\xe1\x2e\x2e\x03\xb0\x96\xbf\x60\xc9\x11\xd7\x8e\x85\x99\xe7\x93\xa1\x70\x9c\x25\xcd\x9b\x9f\xa5\x32\x9b\xce\xea\x1b\x2a\x8f\xf2\xaa\x7f\xfb\xe3\x46\xc3\x84\xfc\x6c\xac\x4b\x80\xa7\xad\x8a\x34\xc4\x27\x96\xef\x21\x3c\x51\x69\x78\x80\x32\x00\xaf\xd6\x19\xbc\x1b\x38\xda\x46\xda\x4b\x95\x69\xad\x14\xfe\x6b\x5e\x6f\x22\xa0\xdb\x80\x6f\x16\xae\x11\x88\x1b\xc3\x92\x37\x95\xd6\x8e\x6b\x7e\x2b\xdc\x60\xdf\x1f\x26\x6c\x3a\x65\x31\x92\x57\xb9\x61\x6b\x0a\xb2\x2c\x30\xca\xef\xf5\xba\x55\xb4\x05\x28\xb6\xb8\x98\x7d\xa8\x46\x7b\x06\x7e\xe5\x3f\xa9\xe7\x15\x27\xae\x14\x5d\x24\x85\xd2\x54\x34\xe0\x79\x76\x2c\x97\x9d\xa3\xec\xa7\x79\xd1\x7a\x6b\x20\x71\x96\xeb\xfc\x1c\x6c\xe2\xcd\xb1\x85\x36\x84\xb5\x78\x04\x05\x38\x82\xda\x79\x35\x9b\x50\x2a\x48\xfc\xe4\xc6\x8d\x95\xaa\x93\x4d\x4a\x07\x8b\x23\x22\x9d\x5b\x50\x33\xb4\x06\x41\xf9\x80\xc6\xd8\xb5\x1d\xd7\x2f\xf7\x16\xcf\xbc\xf8\xb2\x2f\xe7\xed\x84\xb7\xee\xf6\xad\x52\xe9\xe2\xa0\xac\x73\x9c\x45\x16\xbd\x0f\x9b\xcd\x9d\xd3\xd6\xa0\xe5\x2e\xd8\x98\x1c\x86\xe5\xe2\xe3\x43\x48\x2f\x1e\x8a\x26\xaf\x46\x4d\xa9\xf5\x90\x02\xae\xdc\xad\xb5\x1d\x34\x45\x87\x98\x3a\xb7\xd8\xed\xb2\x3e\x88\x7b\x1d\x84\xbd\x06\xdf\xbe\xdd\x97\x31\x45\xb7\x65\xf1\x3a\x6e\x4a\x00\xf5\x5c\xb5\x5b\x08\x42\x3b\xef\x77\x11\x57\x02\xaf\xc8\x19\x55\x28\xb9\xea\x68\x56\x1c\x38\xcc\xa6\x88\x1d\x51\x1e\xae\x97\x04\xb7\xb3\x10\xb4\x72\x5c\x1c\xa0\x4e\x0d\x25\xf1\xcd\xe8\x43\xb0\x7e\x5f\x79\xa4\x1b\xe1\x87\xc2\x91\x57\x5e\x90\xef\x01\xc3\x4a\x68\x26\xa2\x19\x59\x24\x14\x33\x9d\x66\x54\x21\x49\x3b\xc7\x38\x1d\xf3\x84\x6b\x48\xd2\x46\xa7\x52\x69\x85\x8d\x46\x43\xd3\x7b\x07\x0f\x45\x73\x90\x98\x55\x44\xbf\x65\x64\x59\x5e\x86\xf2\x39\x63\xcb\xf2\x23\x1b\x7c\xb1\xd2\x25\x95\x93\xa5\x8d\x2b\xcb\xb7\xc3\x70\x3c\x20\xcb\x7c\x2e\xdd\x76\xd6\xb6\x78\x55\xfe\xbc\xb0\xde\x35\x17\x75\xf7\x38\x01\x8b\x7c\xd8\x81\xcd\x97\x71\x11\x6b\x4f\xd6\x24\x91\xb4\xa1\x7c\x96\x6b\x1b\x61\x0e\x9b\xda\x8e\x65\x36\x6e\x82\xd5\xc2\x51\xad\x6e\x7d\x95\xdd\xdf\x9d\xdb\x5d\xd9\x05\x43\x06\x48\x35\xd3\xbc\x9b\x69\x23\x98\x34\xd5\xec\x10\x3e\xaf\x6f\xdc\x82\x49\xb5\x9e\x73\x85\xd0\x72\x3c\x5c\x0f\xde\x65\x44\xda\x9a\x22\xcc\x7f\xc9\xa0\xd0\xf3\xe5\xe4\x06\xb3\x86\xb7\x21\x32\xcd\xab\x14\x56\x7f\x12\xcb\xbd\xde\x16\x9d\x2a\x21\x0d\xb4\xce\x18\xa9\x9b\xcd\x8d\xf9\xba\xfd\x81\x2c\xd6\x98\x5c\xa4\x5c\x42\x6e\xaf\x2d\x4c\xb9\x02\x7f\xa4\xb6\xdf\x2d\x56\xf2\xef\x19\xcb\x98\xa1\xfd\x71\x16\x4f\xab\xb6\xcd\x0e\xd2\x59\x3e\xa5\x99\x7c\x24\xf3\x2c\x9a\x11\xd7\x38\x89\x59\x42\x97\x85\xa9\x81\xbc\xa4\x65\x02\x88\x5e\x1b\xc2\x0b\x45\x99\xd2\x72\x0e\x51\x77\x79\xbb\x69\x26\x80\xe0\x09\xd5\x3a\xe5\xe3\x4c\xd7\x46\x43\x15\x70\x36\x36\x74\x68\xdd\x5c\x0d\x4e\xce\xde\x9f\x95\xbc\x49\xfd\x9b\x9f\xc2\xbf\x7f\xbe\xbc\xfe\xe9\xfd\xf9\xe5\xcf\xe1\x6f\xe7\xfd\xbb\x8b\x93\x1f\x47\x57\xe7\xfd\x8b\x82\xcf\xa9\x7f\xdb\xbf\x19\xdc\xae\x71\x2b\x55\x7b\x6d\xde\x08\x1a\xc0\x80\x18\xd9\xc5\x1a\x2e\xc1\x03\xe8\xb4\x4b\xdb\xeb\x31\xe9\x3b\x50\x94\xb0\x70\x18\x75\xae\x41\x70\x69\x63\x25\x33\xeb\x41\x3c\xa5\x9a\xda\xca\x90\x3d\xd2\x27\xae\xc2\x27\x44\x66\x2a\x23\x2c\x58\xc4\x08\xb3\x3b\xd8\x84\x91\x18\xa2\x5c\x73\xcb\x8b\x53\xc8\x89\xc5\x6a\x49\x58\x88\x90\x68\xeb\xb9\xf7\x86\x62\xf0\xc0\x84\xce\x00\xbe\x8d\x26\x89\xab\xc4\xea\x5e\x08\x32\xab\xdc\x28\x15\x9f\xf3\x84\xa6\x79\x1d\x81\x4b\xdb\x16\x08\xec\x6e\xac\x3e\x91\xbe\x0a\x2e\xed\x94\x87\xbb\x33\x02\xe3\x3e\x39\x3f\x03\x11\x28\xd2\x0e\x81\xd7\x75\x3e\x14\x88\x05\x62\x7b\x9c\x53\x88\x16\xd6\xd2\xda\xd3\xb0\xfb\xc6\xd2\xf4\xd7\x35\x38\xfe\x1b\x80\xcd\xa0\xe5\xf9\xa9\xa2\x6b\xfc\x20\xdd\x3f\x06\x42\xa7\xcb\xd6\x72\xcd\x2d\x00\xb8\x29\x90\x4d\x6d\x20\x4d\xb1\xb6\x00\x9a\x3b\x88\x6b\xfd\x02\x84\x1d\x17\xe5\x65\xad\xf1\xde\xe8\xce\x00\x24\xae\x41\xfe\x4e\xcc\x25\xf4\x5a\xd7\x21\x4c\x5c\x86\x55\x18\xcb\x4c\xc4\xae\x36\xfa\x9c\x8b\xa3\x39\xfd\xfc\x8d\x9b\x29\x26\x02\x7a\xf0\x50\x00\x79\x60\x89\xd1\x44\x96\x86\xc9\xad\x5e\xae\xa1\x58\xb1\x5e\xeb\xa5\x45\xc7\x59\x41\xed\xc9\x75\x54\x0c\x5e\x7a\x60\xcb\xba\xfd\xab\x40\x40\x63\x80\x94\x3d\xf0\xd0\xc8\x22\x65\xe6\x45\x1f\x19\x95\x60\xc0\x9b\xff\x1b\xc2\x6e\x0b\x95\x24\xea\x79\x77\xe8\xe5\xdd\xea\xd8\xd4\xfa\x97\x9f\x00\xc3\xdb\xf6\x64\xf6\x0c\xbd\xcd\xce\xd0\x69\xc3\x8c\xad\x1b\xcd\x6c\xd6\xdf\xe4\x18\xca\x55\x2b\x57\x29\x2e\x65\x60\xd8\x86\xad\x70\x90\x73\x00\x05\x50\x71\x61\x3b\x12\x48\x98\x02\x73\xaf\x30\xea\x16\xfb\x7b\x66\x3d\x76\xdf\x7d\xdb\xed\x9e\xd5\xe9\x92\x38\x78\xd3\x30\x64\xdd\x66\x6c\xd8\x3b\x17\xc6\x95\x09\x5e\x87\x0f\x72\x9d\x09\x73\x15\xef\x22\xd8\xa1\xbd\x37\xab\xd4\xa9\xfd\x73\x6d\x44\xbc\x33\xc4\xa6\xf8\xfe\x93\x01\x2a\x7d\x2a\xe1\x28\xd9\xee\x20\x1e\xd6\xb6\x1e\x5e\x68\x63\x1a\xdd\x3f\xd2\x34\x46\x5b\x21\x44\x1f\xf4\xc8\x8f\xf2\x91\x3d\xb0\xf4\x80\x44\x2c\xd5\xd4\x42\x2c\x28\x70\xbf\xc2\x81\xb2\xed\x0c\x05\x84\x88\x23\x5e\x85\x80\x22\x7b\x9a\x4f\x67\x46\x9f\x0c\x9c\xe7\x32\x35\xec\x48\x23\x7e\xcd\x82\x45\x36\xa9\xbd\x61\x01\x26\x09\x7d\xa8\x62\x46\x6c\x92\x7e\x4a\xce\x7c\x5e\x90\xf3\x4e\x39\x18\xcf\x55\xe1\x0e\x76\xc1\x2c\xd3\xc4\x2c\xe4\x03\x32\x95\x09\x15\xd3\x5e\xaf\x47\x98\x8e\x7a\xdf\x74\x22\x74\xdb\x60\xe8\xef\xf2\xb1\x9d\x89\x94\x8a\x25\x4b\x9f\x88\xed\x23\xf0\xcd\x32\x43\xc4\xbf\xe2\x68\xf2\xa8\x21\xff\x9b\x72\x1a\xeb\xf3\x9a\xce\xeb\x35\xd5\xce\xf9\x30\x0d\xed\x00\x2a\x78\x87\x96\xf0\xfd\x7a\xcd\xab\x43\x7e\x97\xab\xb3\x91\xe7\x79\x35\x60\xae\x49\xd1\x35\x79\xe9\x93\x6c\x2a\x48\xb7\x11\x4e\x4a\x6d\x4b\x36\x8b\x7a\xa3\x8c\x99\x2a\x49\xd7\x50\x9c\xcf\x7c\xdb\x26\xe4\x47\x26\xd9\xbc\x19\x73\x63\x5b\x29\x2a\x1f\x24\xfe\xeb\x04\xba\x6b\x2d\x45\xe5\x75\xf7\x1c\x68\xb0\x1d\x2f\xda\x42\x91\x98\x80\x5d\xa6\x5c\x01\x3a\xcc\x26\x89\x37\xbe\x19\x6c\x1a\x5c\x36\xcb\x05\xda\xe0\x30\x25\x27\x59\x62\x2e\x91\x33\xf1\xdb\x4f\x14\x8a\x3a\xe0\xe7\x69\xe6\x0c\xe5\x40\xa2\xce\x7b\x04\x90\xb4\x1b\x39\xb7\x40\x76\x08\x50\x11\x6d\xa4\x03\x34\xe8\xca\xc4\x4b\x32\x71\x69\x1c\xf7\x2c\xa8\x74\x13\x03\x5e\xe2\x63\x8f\xbc\x97\x29\x94\xb3\xb1\x8e\x5b\xeb\x5b\xcf\xaf\x2d\x9d\x77\x82\x06\xe2\x87\xef\x5c\x48\x05\xce\x10\x9b\x00\x5c\xfa\x98\x0a\x5d\xdb\x40\x1e\x71\x04\x6d\xe1\x27\x9f\x8c\x2a\x5c\xfb\xba\x6d\x1f\x5e\x45\x08\xea\xfe\xcf\x37\x04\x97\xda\x22\xeb\xa5\xab\x06\x1a\x34\xb2\x3e\xa8\x03\x96\xeb\xff\x67\xef\xda\x7a\xdb\x46\xb2\xf4\x7b\xff\x0a\xa2\x5f\x92\x00\x8a\x83\x99\xc1\x00\x8b\xbc\xb9\x1d\x67\x46\x0d\xc7\xce\xda\x4e\x67\x77\x87\x03\xa5\x44\x96\x24\x6e\xa8\x2a\x75\x91\xb4\xa3\x06\xf6\xbf\x2f\xea\x9c\x53\x37\xde\x29\xc9\xe9\x4c\x4f\x1e\x1a\x0d\xc4\x62\xdd\xeb\xd4\xb9\x7e\xdf\xe2\x00\x75\x20\xd8\x07\x5c\x74\x03\xad\xa8\x97\x9d\x97\xc9\xc6\x3d\x3f\x21\xe1\x13\xf1\x0b\xd0\x3c\xb7\x0e\x2b\x10\xf3\xe5\xfc\xc4\x23\x22\x15\xb7\x66\xac\x14\x1c\x3c\xf5\xac\x8c\x52\xe9\x37\x1b\x65\xe5\x70\x76\xc7\x44\x3c\x8b\xa1\xa3\x56\x4a\x8c\xda\xd3\x3c\x83\x80\x0b\xe8\x95\x19\xa2\x03\x98\xd4\x38\x54\x8c\x09\xae\xbe\x8e\x70\x17\xd6\x5b\xc6\x22\xec\xaa\xb1\x48\x26\xfd\x22\x53\x1c\x81\xa9\x0a\xfd\x84\x97\xd9\x83\xbe\xa8\xcd\x63\x6d\x0f\x28\x48\x80\xe6\xd9\x8b\x05\x0e\xdb\x43\xb7\xfa\xcc\xf7\x85\x8f\x8d\x4f\x27\x2a\xea\x3a\x90\x99\x9e\x8f\x21\x81\x1f\xdc\x0a\x58\xb8\x85\x47\xc8\x37\xee\x29\xc1\x4e\xdf\xe9\x8f\x7b\xf2\xba\x1a\x8d\xeb\x33\xe8\xea\x64\x9c\x63\x89\xc4\x84\x5b\x67\xda\x43\x97\xba\xd1\x42\xd6\xe8\x7c\x74\x60\xfd\x68\x23\x27\x16\x04\x80\xe7\x85\x44\xb5\xc0\x69\x6e\x1b\x15\xef\x21\xec\xd6\x3e\x28\xd6\x06\x70\x42\xc3\x2a\xd6\xce\x91\x69\xa8\x55\x88\x1b\x1a\xcb\x9b\x8c\x23\xa7\xb5\xc3\x03\xf3\x81\x68\x73\x3b\x73\x80\x9c\x1e\x4b\x0b\x47\xb8\x34\x48\xb2\x80\x2a\x70\xc2\xf5\xf2\x9d\x8b\xd6\xf4\x1b\x93\x7c\x73\x77\x79\x71\x7b\x79\xff\xd5\x72\x84\x4c\x82\xce\xe4\x24\x21\x33\xce\x37\x97\x6f\xcf\x3f\x5c\xdd\x2f\xde\xcc\x6f\x9f\x22\x4b\x88\xfe\x74\x40\x9a\xd0\x1d\xe1\x6a\x5e\x48\x51\xf2\x2f\x47\xbd\xc9\xaa\x12\x0b\x36\x21\x5d\xdd\x62\xd7\xf6\xa9\x3b\xd8\x68\x13\x17\xd4\x82\x76\x12\x2a\x12\xbe\x68\x16\x06\xd4\x23\x3d\x5d\x65\x79\x0e\x45\x64\xd6\xc7\x4a\x95\x21\x7a\x51\x41\xfe\x18\xf6\x36\x92\xa9\xb1\x58\x06\xc0\xa8\xe0\xf7\xd9\x68\x4b\x08\xcb\xc7\x76\x7a\x01\x54\x06\x35\x44\x7d\xd0\xa1\xeb\x4c\x70\x37\x0c\x24\x44\xaa\x44\xd4\x89\xf7\x46\x9b\xf8\x94\x35\x82\xa4\x78\x8d\xd5\x35\xcd\x89\x0b\xce\xa7\x51\x3f\xcd\x1f\xed\x0c\xf1\x12\x67\x02\x15\xd3\xe0\x36\xdf\xb5\x1f\xdd\x57\xee\x0a\xc0\xba\xeb\x9d\x64\xe0\x88\x06\xce\x21\xb7\x91\xb4\x11\x08\xda\xed\x3c\xd4\x9f\x33\x4c\xa5\x90\xab\xda\x3a\x6b\x51\xa8\xd7\x3a\x03\x77\x35\x43\xee\x96\x28\xc9\xab\x42\x5b\xff\x68\x3b\x9f\x7f\xbc\x8b\x05\xb2\x47\xd2\x2b\x44\xc0\xce\xd8\x05\x06\xf2\x65\xd0\xbf\xd1\x50\x7c\x09\xf6\x1c\x1d\x95\x5b\xce\x44\x81\x8c\x70\x79\xce\x95\x3b\x19\x38\x1e\xce\x53\xe2\x04\x00\x66\x3f\xf7\x3d\x91\x82\x49\xb8\xb5\x7a\xbc\xf4\x57\x22\xc5\xaa\x9f\xa7\xae\x1a\x45\xc8\x12\x7c\xca\x93\xd3\x92\xac\x3e\xf6\x14\x51\x82\x65\xeb\x21\x0a\x53\xc7\x47\x9d\xa5\x7b\x6c\xee\xfb\x51\x3a\xe1\x51\x1a\xf1\xae\xfb\xaf\x44\xb4\x91\x5a\x80\x5a\x4c\x66\x17\x6b\xb4\x35\xd2\x39\x24\xc1\xe8\x65\x6c\x7d\x75\x1c\x94\xce\x41\xd1\xc7\xeb\x9b\xeb\x4b\x3f\x76\x38\xbf\xbe\xbf\xfc\xdb\xe5\x6d\x50\x0f\x77\x75\x73\x1e\xd4\xb4\xdd\xdd\xdf\xd6\x4a\xd9\x7e\xba\xb9\xb9\xba\x6c\x04\x21\x2f\xef\xe7\xef\x82\xc6\xdf\x7c\xb8\x3d\xbf\x9f\xdf\x04\xbf\xfb\x69\x7e\x7d\x7e\xfb\xdf\xfe\xbf\x5c\xde\xde\xde\xdc\xd6\xfa\xfb\x70\xd1\x1f\xce\x0c\xa6\xd1\x6e\x8a\xbb\x68\x89\x87\x2a\xd4\xb6\xa4\xf7\xac\xf8\x7c\xe2\x4a\x50\xa8\x7c\x9e\x52\xc9\xd9\x5a\xb8\x19\x78\xa5\x52\xbe\x38\xac\x48\xb4\xab\xd0\xb5\xb5\x1f\xc5\x4b\xb5\x5f\xb0\xb2\xe4\xdb\xdd\x71\x1c\xa5\xe3\xaf\xc8\xb4\xfa\x53\x90\x2f\x23\xea\x4f\x83\x5d\xfd\x76\xea\x4f\x5b\x4a\x4b\x9b\xf5\xa7\xf3\xeb\xf9\xfd\xfc\xfc\x6a\xfe\x3f\xb5\x16\x3f\x9e\xcf\xef\xe7\xd7\x7f\x5b\xbc\xbd\xb9\x5d\xdc\x5e\xde\xdd\x7c\xb8\xbd\xb8\xec\x4f\x28\x6f\x8e\xde\x19\x6d\x2f\x23\xbf\x9f\xd7\xd1\xbd\xa7\x4e\x63\x5c\x80\xac\x35\xc2\xbf\x84\x53\xc5\xf2\xec\xb7\x4c\xac\x67\xc0\xa2\xf9\x3a\xba\x54\x6a\xbe\x65\x6b\xfe\xbe\xca\x73\x30\x7a\x31\x08\x77\xa1\x38\x2b\xe1\x67\xef\x65\x3a\xf7\xbe\x83\xcc\x81\xd6\x69\x40\xff\xc4\x49\x8b\xdd\xcf\xa8\x7f\xcf\xc4\xb3\x59\x09\xe4\xe2\xb0\x8c\xe1\xaf\x01\x92\x5f\xae\x88\x5c\x69\x66\x63\x9c\xd1\xaf\x95\x2c\x59\xc4\xbf\x24\x50\x44\xd1\x7e\x4e\xae\xe4\x51\x9c\xb2\xc3\xf4\x47\xed\x77\x7a\xb8\xee\xac\xdd\x92\x47\xfc\xb7\xc5\x14\x4a\x47\x9a\xe5\x3b\xfc\x94\x58\x1c\xdb\x15\xa2\x32\x3f\x41\x52\xd7\x95\x5c\xb7\xc3\x19\x41\xd5\x1b\x61\x30\x39\xee\x19\x48\x11\x95\xeb\xa8\xc8\xc4\xe7\x58\x7c\xdc\x70\x11\xc9\x4a\xe1\x3f\x95\x52\x01\x6c\xd7\x2a\xaf\x8a\x0d\x07\xee\xe8\x59\xf4\xc8\xa3\x2d\xdb\x63\xaa\xe8\x56\x2a\x0f\xe0\x09\x8e\x8c\x3e\x9c\xf0\x75\x9e\x09\x2d\x2d\x76\x99\x09\x21\xd4\xb7\xfe\x14\x21\x46\x53\x42\xc4\x8e\xaf\xf0\x1d\x97\x27\xf5\xb8\xe1\x90\x22\xe2\xbc\x5b\xc6\x8c\x23\xc9\x0d\x48\x9c\x52\x7e\xd6\x96\x99\x29\x36\x7c\x66\x10\x3d\x60\xb9\x1f\x64\x96\x46\x69\xb5\xcb\xb3\xc4\xca\xdd\x47\xa9\x3a\x2b\xaa\x31\xd6\x35\xa1\xa2\xba\x16\xc1\xed\x9b\x58\x4b\x20\xcd\xf3\x77\xf4\xd4\x56\x3f\x71\x75\xb9\xc7\x84\x56\x15\x5c\xbd\x2c\x55\xb6\x5e\x43\xe0\xc0\x84\xe5\xbf\xfd\xf2\x73\x57\xde\x76\x7c\x04\xda\xcf\x0f\xcb\xe5\x3a\x4b\x58\xee\xbb\xa0\x9d\xee\x6a\xeb\x5b\xcd\xb5\xdf\x55\x0a\x39\xc8\x57\xae\xc6\xb0\x33\x6f\x7f\xa7\x38\x94\x58\x2f\x90\x5c\xee\x78\xd2\xbb\xf9\x0a\xa9\xb6\x89\x9d\xc5\x25\x50\x1a\x82\x2b\xf3\xc2\xb9\xbe\x0d\xbe\x1b\xe2\xf0\x03\xa3\x65\x24\x1f\x81\x1e\x55\x5b\x23\x5a\x39\xd7\x33\x15\x12\x74\x13\x8b\xf9\x66\xbd\xc8\x06\xb2\x6f\x65\xdd\xe5\x98\xe4\xb2\xce\x1e\xb8\xf8\x06\xe0\x02\x9c\xa7\x5d\x4f\xdd\xde\xd2\x56\x11\x79\x2c\x00\x9c\x0d\x02\x1d\xaa\x11\xf7\x07\xf5\xd6\xb9\x5c\x22\x3f\x6b\x03\x1a\xce\x7f\x75\xba\x50\xa6\x1e\xb8\x52\x59\x3a\xe5\xb6\x9a\x35\xb9\xb1\x9f\xf6\x0d\xd0\xe2\xfe\xdb\x9e\xe0\xa2\x64\xda\x16\x2d\xeb\xda\x6c\x3d\x81\x64\x48\x75\x86\xca\xae\xc2\x98\xab\xee\x71\x35\xf0\x0e\x50\xe8\x21\x7b\x88\x24\x9a\x73\x39\x6a\xa3\x9b\x29\x89\x03\x6b\xe9\xb2\x18\xfb\x37\xf9\x88\xbc\x32\x4c\x82\xb3\xc9\x65\x53\x6a\x74\xcd\xd6\xa1\x63\x05\x48\x3a\xec\x26\x06\x1e\xef\x51\x3b\x5a\x5f\xf7\x7b\xbe\xdd\xe5\xac\x3c\x31\xb8\xe2\xf1\x37\xaa\x2a\xa5\x47\x99\xac\xe7\x33\xb7\xcc\xc9\x26\x96\x06\x62\x63\x9e\xb6\x92\xaf\x39\x91\x6a\xae\x66\xd7\xf3\xdd\x92\x65\x31\x09\x1b\xd2\xe3\x11\xde\xf3\xd2\xa6\xd5\xe4\x06\x0c\x0c\xd0\x06\xec\xac\xc3\xbc\x42\x93\x3a\x64\x73\xc1\x01\x24\xc4\xd2\x79\x6f\x77\x52\x70\x41\xde\x2f\x21\x63\x41\x8d\x1b\x18\x5c\x4b\xab\x17\x04\x19\x67\x64\xa4\x12\x87\x7f\x21\xf3\x07\x72\x64\x7b\x90\x0f\x00\x06\xa7\x07\x78\xa1\xdf\x7b\xad\xdd\x32\x91\xda\x88\x13\xf8\xe0\x6a\x58\xb0\x8a\xaf\xb3\xa2\xe4\x7e\x5c\xd6\xff\xfe\x64\x10\x94\x81\x42\xdc\xb7\xf4\x9d\x10\x94\x43\x2f\x9b\xbe\xb5\x13\xc6\xb3\xdf\xf1\x74\x6e\xbf\xeb\x3f\x0c\x41\x72\x45\xea\x09\x89\xe0\x15\xc0\x33\xc0\x89\xa3\x1a\x32\xad\x0b\x0b\xd6\x60\x37\xc9\x12\x35\x1a\x84\x38\xd8\xa2\x75\xc5\x14\x13\x25\xe7\x45\x2c\x30\x0b\x1d\x4b\x64\x82\xa4\xb8\x55\x80\x39\xea\x74\xed\x44\x16\x25\x26\xe0\xc2\x27\x2b\x96\xe5\x95\xea\x54\x21\xf1\x54\x1e\x94\xed\xd3\xb7\x4a\x17\xd0\x6c\xd4\xb6\x69\x36\x75\xc0\xbb\x45\x36\x69\xcd\x70\xc9\x19\xbe\xbb\x30\xb2\xde\x31\x05\x23\x72\xc7\xef\xb7\xf5\x1f\x74\x64\x13\xfc\x47\xb1\xd8\xc9\x09\x12\x8f\x28\x6c\xda\x85\x0f\x2b\x3e\x43\x9e\xd7\x90\x62\x3c\xec\xed\xfa\xcb\x9f\x07\x6c\x8c\x3e\xa9\x03\xe7\x6d\xc3\x44\x0a\x7c\xb4\xac\xac\xbd\x1d\xf6\xf4\x02\xda\x63\x69\xc4\x5a\x77\x20\x0c\xfc\xca\x8b\xa4\x11\x94\x1c\x58\xaa\x7a\x34\x73\x20\xb8\x15\xf4\x12\xc6\x18\xdb\x7c\xdb\xee\x4d\x26\xd4\x51\x7b\xd5\xba\x0f\xcf\x2a\x5b\x9f\xbe\xea\x72\x2c\x0c\xab\xe3\x1f\x6e\xca\xb8\x84\x2e\x11\xbd\x3c\x16\x79\xf5\xc8\x6b\x04\x31\x09\x2d\x86\xfc\xda\xd6\x58\x10\x28\x31\xfc\x10\x91\xad\x31\x7f\xbb\x88\xfe\x64\x03\xd5\x7f\xfa\xab\xc9\xde\xdd\x47\x2b\x58\x6b\x48\x91\x97\x49\x52\x29\x80\x81\x35\x4c\xd5\x1c\x5f\x95\x29\x10\x04\xe7\xf8\x96\x16\x20\x5c\x20\x13\xb8\x9b\x74\x95\x8c\xe6\x60\x52\xf7\x60\x2b\x21\xbc\xb2\x7d\xc5\x08\xae\x48\x15\x65\x54\x94\x7c\xd7\x2a\x4f\x02\x75\x29\x7c\x08\x8e\xaa\x32\x6d\x03\x42\x1e\xae\x66\x7f\xc7\x76\x7d\x30\xb5\x47\xb7\x38\xb4\x0d\x36\xbd\xb0\xfe\xca\x01\x44\x2b\xa0\xf0\x10\xbc\x6c\x73\xf5\x6c\x45\xfe\x57\x49\xa3\x9f\x02\xe7\x6f\x81\x19\x88\x08\xa3\x4f\xb6\x85\x9f\x4e\xcf\x29\x73\xf9\xe3\x04\x51\x8f\x0d\x2e\x11\x4d\xc1\x07\x80\x38\x04\xa0\xa3\xbe\x31\xa6\xad\x9e\xed\x38\xb2\x38\xdd\xe1\x89\x7c\xc5\xda\xf4\x5f\x1a\x4b\x34\xb5\x34\xfd\xc1\xc7\xe2\x00\xd5\xcb\xe5\xfe\x8c\xf2\x58\xd8\x92\xf4\x5f\x42\x40\x95\x60\x89\x65\x36\x0a\x79\xa6\x49\x98\x0d\x2f\x54\xca\x85\x2c\x79\xc4\x22\x91\xe5\xaf\x44\x95\xe7\xaf\xae\xa5\xd0\x82\xb9\xc8\xd6\x98\xaf\x04\x1e\x6b\x64\x9b\x72\xac\x45\x41\xa8\xc2\xbb\x02\x20\x9c\xf5\x90\x30\x8a\x52\x6a\x89\xa9\xb7\x20\xdf\xc7\x42\x7f\x41\xc4\x09\x40\xf6\x92\xd9\xda\x06\xec\xcd\x60\xdc\x52\x5f\x50\xe7\xbb\xf7\x1b\x6f\x39\x60\x7d\xb0\xb0\x47\xd5\x14\x7c\xa7\x75\xff\x66\x68\xdd\xa5\x32\x9e\xff\x09\x04\xef\xdd\x97\xea\x60\x86\x75\x6b\xe8\x58\xb5\x75\xc4\x79\xfc\x3d\xc3\xb1\x4f\x09\x12\xec\x10\x81\xe9\xdf\xa6\x22\xfc\x9a\x95\x3a\x45\x54\xea\x57\x2c\xf8\x5f\xc8\x95\xa1\x65\x3f\x1c\xa4\x60\x64\x58\xc0\x2f\xb3\xf2\xa1\x09\x9a\x87\xa4\xcb\xee\x95\x62\x41\x96\xf1\xb8\xc1\xd6\x17\xec\x46\xbc\xc5\xcf\xdf\xcb\x3c\x4b\xfa\x63\x29\xe6\x69\x02\xfe\x89\x46\x24\x0d\x98\x5a\xb8\xe1\x80\xa4\x41\x61\x90\xa0\xe4\x49\xe9\x3c\x3f\xcd\xc9\x4d\xf1\x31\x1a\x73\xc1\xb6\x02\x28\x58\x8e\xdd\x47\x3f\x2b\x90\x6c\x0e\x85\x76\xa8\x48\x03\x99\x03\xb8\x1c\x13\x46\xf6\x45\x30\x10\x90\x4d\x8f\x1b\x99\xf3\x19\xba\x96\x20\x50\x11\x8b\x1d\x57\x89\xd4\x46\x5a\x94\xca\x47\x4a\xce\xcc\xf2\xd4\x55\xb3\x3f\x87\xb8\x29\x44\x37\x5e\x10\x64\x0f\xb7\xae\x3f\x4b\xa3\x32\x7c\x6c\x0d\x6c\xe7\xb1\x70\x30\xa7\x0a\x84\xf4\x9d\x82\x8f\x14\x4b\xc5\xa5\x20\xe6\x83\x9a\x13\x47\x2f\x7a\x30\x9e\x69\x3b\xcc\x6d\xa1\x32\x3c\x30\xc8\xb9\x53\xd6\xf6\x95\xaa\x66\xea\x4b\x09\x05\x18\x88\xd7\x84\x7e\x7d\x6d\x20\x42\xbc\x9b\xa1\x1a\xe2\xd2\xa1\x69\x53\x63\xe1\xdc\x56\xcf\x0a\x5f\x25\x69\xdd\x67\xac\x2f\xc8\x00\x0d\x2f\xe1\xb3\xe8\x59\x30\xd1\x67\x90\xa0\x2f\x24\xf4\x47\x0e\x8a\x60\x69\xe0\xb8\xce\xa2\xac\x8c\x45\x56\xe0\xc9\x54\x3c\xe7\x0f\x7a\x74\x3e\x7f\x2a\x85\x20\x08\x47\xc1\x4e\x1b\xa2\xf5\x8c\x4a\x02\x52\x8b\xf6\x0a\xa9\x70\xca\x4f\xf4\x66\x90\x50\x08\x74\x18\x95\x80\x3a\x65\xfe\x05\x39\x47\xb4\xa1\x8b\x5e\xf9\x54\x77\xe7\xa8\x70\x08\x50\x0e\x88\xb8\xf7\xb2\x42\xf6\xb2\x94\xf8\x80\x4d\xe5\xaa\xcd\xba\xcb\x50\x19\x5d\xca\x72\x13\x6c\x04\x21\x4e\xe1\x4d\xe2\xda\xc4\x2e\x81\xde\x0d\xd6\x55\x70\x56\x6e\xa2\xac\x9c\x41\xba\xa4\x11\x1c\xb1\x60\x29\x01\x76\x52\x73\x99\xe5\x5f\xee\xde\x67\xfa\xfb\x52\x3e\xf4\xe9\x74\xc7\x06\xe3\xf0\x56\xef\x72\x26\x16\x28\x50\x7f\x87\x70\x9c\x07\x06\xd6\xe5\xc7\xaa\x96\x0b\x4b\xce\x71\x92\x71\x5a\x4d\xe7\x36\x80\xe8\xd3\x2a\x9c\xe9\x68\x86\x87\xc1\x95\x78\x19\xcd\x1c\xea\xd6\x4d\x58\x20\xcb\xb5\xb0\x20\x2f\xd9\x78\x29\xe0\x22\x75\xac\xe6\x20\x36\xa7\x75\x28\x54\x67\x4e\xc0\xb7\x1a\x36\x1a\xb3\xf3\xb5\x37\xa4\xbe\xed\xd3\x23\x16\x0d\x85\xe9\xa0\xa8\xc5\xc0\xb0\x9e\x36\x72\xd1\xe9\x42\x68\x46\x30\x3e\x5a\x26\x33\xeb\x53\xc6\x14\x15\x1e\x15\x52\xdb\x35\xc6\xc3\xd1\x0e\xf6\xe6\x9b\x20\xb2\x25\xe4\x7d\xca\xac\xf7\x90\x12\x62\x74\x65\x2e\x52\xaa\x45\x73\x61\x49\xba\x67\x51\xfc\x23\x9e\xac\x22\xfe\x11\xd1\xee\x0d\x66\xa0\xe1\x6b\xa3\xfb\x93\x06\x94\xa1\xd6\xd3\x8e\xb9\x19\xee\xc2\x11\x8f\xd8\x24\x6f\xde\xef\x49\x94\xe6\x95\x2d\x63\xfa\xd6\x12\x1b\xa0\x67\x12\x6d\xce\xbd\x61\x51\x03\x5c\x5b\x55\x25\xa5\x9b\xb0\xe5\x9d\xfa\xc9\x7c\xa8\x97\x68\x57\xd1\x8b\x6a\x79\x9e\xa4\x8a\x85\x69\xcd\x11\xd3\x9e\xe7\x79\xa3\xa9\x26\xdf\x9a\x77\x56\xc1\x47\x6d\x10\x45\x00\xa8\xc6\x55\x23\xd4\xe5\x00\xf8\xbc\x97\xdc\xa1\x9d\x9e\x45\x8e\xf1\x0f\x54\x8f\x1e\x72\xb1\x3c\x37\xcc\x5a\xa8\xb5\x79\x74\x4a\x45\x05\x69\xfe\xab\x4a\x8b\x23\xaf\x16\x22\x16\xc0\x32\xb7\xca\x20\x21\x83\xd6\x25\x16\xef\x24\xd5\x54\x80\x7a\x65\x26\x69\x82\xfb\xb4\x6c\xcf\x2c\xb0\x0a\xfd\xc3\x1b\x78\xb6\x57\x18\x66\xae\x21\xed\x42\xfe\x10\x64\x39\xce\xb4\xee\xa1\xdc\xa4\x12\x26\x62\xf1\xbf\x7a\x79\x0c\x79\x1a\x6d\xab\x5c\xe1\x25\x36\xc8\xc4\xd1\xf3\x4f\xd8\xe8\xf3\xbf\xbe\xf8\xf4\x02\x89\x29\xab\x02\xb0\xac\x66\xe1\x13\x62\xcb\xe2\xaa\x3c\x87\x1c\x5b\x33\x83\x95\x92\x5b\xac\xe2\xb5\x5d\xf4\xf2\xa6\x90\x95\x33\x91\x63\x6a\x90\x5d\xca\x79\x5e\xcf\xa3\x84\x95\xc9\xe6\xa5\xd1\xe6\x7c\x42\x39\x8f\x61\x1f\x34\x47\xad\x6b\xb5\x57\x86\x69\x0b\x4c\x6d\x2d\x56\x6c\x70\x5e\xf4\x14\x20\x6e\x72\x1f\x9c\x4a\x1f\x91\x19\x0f\xa7\x83\x69\x75\x9a\x9e\xfd\xb9\x41\xaa\x71\xee\x52\x72\x11\x0b\xb6\xe5\x69\x14\x23\xb0\x43\xfc\xa3\xd9\xfe\x58\xec\x96\x67\xf9\x7e\x55\x9e\x41\x91\xcb\x99\x5e\x96\x33\x40\x73\x18\x78\xe9\x16\x69\xd3\x54\x1a\x58\xee\x4e\x63\xab\x5d\xdf\xb1\xab\x63\x7b\x1a\xaf\xb4\xa0\x8b\xc7\xae\xcf\x5d\x18\x03\x0a\x2b\x0b\x81\x83\x8b\x18\xc3\xb4\x92\xeb\x29\x56\xee\x7e\x22\x19\x4b\x54\x94\xac\xcc\x12\x44\x65\x13\x2c\xdf\x43\x5a\xcf\x2c\x16\x69\xa6\xd0\xb4\x66\xc9\x3e\xc9\xb3\x84\xd8\xbf\x42\x5d\x88\x3f\x70\x51\x5e\x7e\x29\xb9\x12\x2c\x37\xf9\x43\x73\xb1\x92\xc7\x28\x44\x9c\xda\x3b\x0e\xe1\x7a\x1e\x6a\x3c\x50\x92\x8e\xed\x3a\x07\x63\xa2\x90\xa2\x1b\xac\x6a\x93\x6f\x60\x8f\xf8\x8c\xf0\x61\x18\x54\xac\xfc\x67\xb5\x94\x39\x8f\x7e\xad\xb8\xda\x47\xf3\x37\x91\x54\x50\x5b\x5b\x4a\xfa\xa7\x2c\x9d\x04\xe6\x8a\x8c\xb5\x14\x0a\xb4\xfc\xb8\x35\x7d\xa8\x31\xe2\xc2\xc1\x57\x4b\x65\x19\x50\x3d\x67\x67\x38\x83\xb6\xdd\x0a\x4a\x50\x00\x92\xef\x6b\x29\xaf\x5d\xc5\x2f\xed\x77\xe5\x43\x87\xe2\x6a\x69\x35\x43\x1f\x67\xfd\x52\xd3\x3a\xa9\x43\x39\x8f\xb0\x3a\xd7\x78\x1f\xa4\xca\xd6\x99\x60\xa5\x54\xd1\xf3\xf7\xa6\xa4\xed\x85\x2d\xc3\x86\x55\x6c\x1f\x46\xcd\xbb\x3a\x65\x89\xd0\x33\xdb\xae\x1a\x41\x34\x99\xa7\x8b\x66\xcd\xc1\x54\x48\xd9\xc1\x6c\x09\xfd\xab\xa2\x64\xdb\x9d\x0f\x29\x69\x91\xce\x68\x65\x72\x5c\x84\xc8\x0c\x0c\x8c\xf0\xac\x70\xb9\x6b\xb1\x20\xd7\x15\xee\x9b\x54\x2d\x58\xe9\xf5\x59\x82\x98\x5f\x1c\x58\xd1\x41\x94\xa5\xc3\x5f\xf7\xba\xf7\x6f\xaf\x8c\x47\xcf\x3d\xdb\xc1\x3b\x08\x13\xe5\x22\x01\xa9\x0a\x99\xeb\x9b\x20\x79\x3e\x16\x2e\x71\xfd\x22\x97\x55\x1a\x91\xec\xa1\x50\x81\x3a\x8b\x32\x7e\x36\x8b\x8a\xbf\xbc\x7e\xf5\xea\xec\xac\x8b\x41\x7c\x22\x76\x91\xbd\xdf\xf0\x5d\xfb\x09\x87\xbf\xb5\x16\x86\x0c\x5c\xad\x80\xa9\x73\x31\xcd\x4e\x34\xc8\x4f\x70\x5a\x7c\x3f\x4a\x98\xf6\x5c\xef\xd2\xb2\x97\x1e\xd3\x9d\xc9\xaf\xed\xef\x6a\xc7\x14\x17\xe5\x02\x7a\x9c\xd6\x19\x74\xf2\x1e\x3e\x0f\x0a\xde\x46\xd9\xc3\xff\xb8\x97\xe8\xe6\x30\x59\xef\xff\xf4\x58\x86\x09\x45\x52\xcb\xf6\xe7\x19\x44\x1d\x3d\x97\xf0\x10\xb1\x2a\x4d\xe8\x80\xd5\xf3\x26\x14\x08\xa6\x51\x13\x72\xa3\x47\x00\x08\x4b\xa2\x6b\xf3\x3a\xb5\xa0\x30\xff\xe6\x9e\x2c\xcc\x95\x76\xc1\x89\x88\x95\x11\xd2\x8d\xff\xc6\x95\x74\xd5\xcc\x84\x4c\xef\x35\xdc\x53\x01\xb2\x5f\x1c\x0e\xb5\x84\x18\x8a\x08\xf2\xe3\xa3\x5c\xc0\xbf\x50\x61\x01\x2a\x55\xcb\xbd\xa9\x04\xe9\x06\xa7\x5e\x1c\xc0\xdd\x61\x87\xe2\xe9\x34\x9e\xf4\x34\x76\x9f\x15\xc5\xe6\x82\xbe\x02\x95\x4d\xab\xdf\x5a\xd7\x60\x3b\x8a\xf0\x03\x84\xff\x2a\xaa\xfb\xb0\xce\x60\x12\xff\xf8\xaf\x7f\x9e\x75\x21\xa8\xc1\xd0\x0f\x66\x68\x7b\x6b\xe8\x2a\x15\x67\xa9\x63\x00\xf1\x09\x3e\x86\xd0\xd1\x06\x0f\xe4\x11\x9a\xcc\x31\xfb\xd2\xd4\x55\x2c\xee\x89\x3b\xe2\x59\xea\xc3\xdf\xda\x03\x4e\xdb\x63\x09\x20\xe4\x2a\x02\x8b\xa5\x43\x5b\x3a\xa3\x71\xb6\xf4\x30\x61\xf5\xda\xe5\xd3\x57\xd2\x03\xbb\x6a\xbc\xc7\x0c\xdf\xd8\x18\xef\xa5\xcc\x8f\xb5\x33\x58\x6e\x10\x85\x16\x00\xe0\x70\x8c\x9e\x80\x07\xc0\x1a\x16\xf3\x37\xd6\xe7\x65\x8b\xa6\x41\x4e\x7b\xf0\x49\x10\x90\xa1\x21\x40\x18\x04\xe9\xc3\xba\xd3\x14\x8a\x5d\x8b\xdb\x73\x62\xba\x05\xb4\x81\xf1\x12\x8b\x4d\xdc\x30\x7c\xbc\x14\x51\xe6\xc6\x08\x85\x65\xb5\x11\x4e\xb2\x72\x10\x6e\xa1\xd6\x95\xb5\x78\xfc\x02\x54\xbb\x8e\x5e\xdf\x66\x3d\x11\xe4\x49\x9b\x4c\xf4\x80\xc4\xc2\x7b\x2c\xb0\xcc\xc4\xe4\xb3\xd8\x55\x6b\x33\x84\x82\x63\x78\xb4\x21\x74\x0c\xca\x40\xaf\x19\xfb\xc6\x07\xf3\x00\x6f\x6c\x22\xb7\x4b\x6d\x8c\x20\x08\x17\x85\x43\xe0\x95\x3b\x37\x15\xa7\xb6\x5c\xce\xbc\x56\x88\xdf\x57\x5b\x7b\x9b\x4b\xe2\xd7\xc3\xf9\x22\xab\x35\x8a\xde\xa1\x5a\x9c\x16\x10\xa1\x5d\xce\x9e\xd7\x67\x00\x38\xf5\x8f\x6c\x5f\x00\xf2\x89\xb6\x8a\x57\x2b\x47\xec\xe4\x6b\xe9\xd6\x4e\xb3\x05\x82\x04\x23\x56\x11\x20\x12\xcd\x25\x23\x6e\xbf\xdc\x60\xbc\xb8\x42\x91\x67\x45\xfb\xe2\x3c\x35\x7a\x43\xfb\x5a\x40\xfb\xb6\xc6\x98\x70\xa4\x83\xfc\xe7\x19\x5a\x16\x7f\x76\x69\xeb\x3c\x91\xc2\xd6\x25\x9f\xc4\x60\x6d\x41\x76\x68\x1f\x2e\xfc\xad\x01\x40\x3d\x64\x3d\x1f\x69\xc4\x7b\xcf\xa4\x92\x09\x01\x6a\x97\x11\x00\xa2\xa1\x38\xd6\x7d\xcf\xa2\x2d\xcb\x04\x5d\x83\x52\x69\x01\x99\xf2\x65\xb5\x5e\x77\xda\x96\xb9\x5c\x3f\x69\x58\xc2\xe0\x20\x78\xbf\xef\x48\x89\xcf\xfb\x6a\xfb\x07\x4e\xe8\x1f\xc8\x89\xd0\x5b\xea\x74\x0a\x37\xc0\xdc\xf4\x84\xae\xe7\x55\x96\xf3\xaf\x63\xf9\x9f\xc8\x8d\x31\x1f\xe3\xc6\x30\xb1\x0b\xc8\x9f\xc4\x79\x58\xef\xf2\xbf\x91\x7f\x03\x6b\x4a\x16\x59\xa8\x5e\xf6\x0c\xe9\xc0\xa2\x2f\x5b\x1d\x0c\x97\x95\x10\xb5\x0a\x2e\xd2\x02\x00\xe3\x4f\x5f\x05\x06\xb2\xfd\xf8\x12\xab\x01\xc2\x84\x3b\xb9\xe5\x11\x74\x55\x20\x32\x4d\x44\x09\xa0\x33\x88\x75\xea\x09\x3a\x10\x43\xb8\xf0\x14\xcc\x4b\x36\x4c\xac\x79\xea\x54\xc2\xe7\x82\x3f\x46\x5a\xd6\xce\xfc\xe0\x8f\xb7\x3d\xb3\x88\x97\xc9\x0b\x82\xc4\x75\xb9\x22\x8a\x27\x52\xa5\x00\x0d\xb1\x66\x2a\x85\x0c\x25\x3a\xf0\x39\x4b\x3e\x03\x29\x1b\x3c\x47\xd8\x23\x05\xa8\x0c\x7a\x02\x06\x4d\x5d\x6b\x99\x48\x10\x9e\xd4\xf2\xa4\x9b\xf1\xe1\xe7\x45\xc4\x12\x25\x0b\x62\x6d\x26\x2e\x2e\x22\x81\xf2\x78\x70\xa0\xc7\x4e\x17\x05\x2b\x8e\x42\x83\x38\x17\x2e\xdf\x80\x7f\xd9\xe5\x4c\x84\x27\x1e\xa7\x5b\x2a\x06\x30\xb9\x9d\xfa\x9c\xad\xc3\xfb\xaa\x95\xc0\x3e\xcc\xa5\xbb\x56\xa8\xdb\x29\xce\xd2\xbd\x5f\xad\x94\x09\xc2\xae\x63\xe9\x36\x13\x7a\xeb\xf5\xeb\x82\xbc\x48\x24\xbd\x52\x64\xd7\xcf\x31\x4c\x0b\xd0\x44\x79\x5e\x7b\x11\x8b\x48\x70\xad\x10\x30\x95\xe5\x7b\xd0\x01\x77\x8a\xbf\xf4\xfa\xf1\xee\x37\xe5\x89\x65\x45\x2c\x70\xec\xc0\xaa\xb8\xaa\x72\xd4\x14\xc1\x96\xb2\x13\xa0\x7b\xf8\x61\x3e\xd3\x8f\x44\x49\x80\x20\x5e\xc7\x70\x66\x4f\x92\x73\xd3\xb4\x62\x46\x39\xe6\x5c\x15\x9d\x82\x84\x80\x8d\x7c\x34\x89\x81\x8f\xcc\xc5\x7d\xa7\x98\x79\xef\x49\x76\x19\x13\xce\x8b\x12\xc3\x83\x1e\xb0\x32\xbc\x95\x8a\x40\x3b\x40\x38\xbc\x27\xf2\x87\xbf\x67\x0f\x7c\x16\xdd\xed\x98\xfa\x3c\x8b\xde\xec\x05\xdb\x66\xc9\xcf\x72\x39\x68\xb9\x9d\xc2\x7b\x61\x15\x8c\xc9\xde\xad\x56\x3f\xc0\xcc\x2b\xd9\xf7\x7c\x5c\x4d\x3b\xdb\x04\xf0\xf4\x89\x21\xb4\xd6\xae\x07\xd2\xc4\x44\x3b\x71\x1d\x4e\xa5\x7f\x76\x87\x74\x3b\xb5\xd1\xba\x04\x70\xb2\x9a\xb2\x66\xdb\x02\x99\x5a\x46\x42\xb2\xaf\x9e\xf8\x4b\x78\xf5\xa4\x8a\x76\x39\x2b\xf5\x59\x31\x7c\x4a\x78\x2a\x30\xf6\x8a\xd2\xbe\x96\x0b\xdd\x58\xd4\x4e\x11\x8b\x1d\x2f\x76\x52\xe6\xad\x6f\xfb\x49\x17\xb0\xe1\xa7\x1a\xbb\x78\x73\xcc\x21\x2b\xfc\x17\xcf\xac\xa2\xf3\x79\x38\x0f\x89\x87\x79\x0d\xa7\x29\xad\x14\x92\xc0\x98\xe5\x38\x73\x0e\x46\xa6\x95\x6f\x8c\x78\xe3\x23\xb7\xe4\x09\x83\x2a\x57\xa3\x7d\x20\x3f\x15\xf2\xda\xdb\x37\xba\xc5\x1b\x53\x34\xfb\xe9\x50\x39\xa0\xdd\x45\xd6\x56\xf4\x34\xf5\x72\xdd\x6f\x5a\x5d\xac\x38\x72\xe3\x1e\x32\x59\x47\x43\x45\xcd\x26\xc9\x7a\x91\xe4\xac\x18\x99\xf1\xd1\x2a\x77\xe6\xd4\xd0\x05\xb4\x33\x5e\x66\xfe\x1d\xbc\x61\xdb\x91\xc2\x38\x16\xe7\xb6\xa8\xd7\x3d\xe3\x56\xf5\x40\x31\x8b\x4a\x57\x63\x6b\x30\x95\xc9\x55\x80\xcf\xa2\xa2\x4a\x36\x90\xac\x15\xca\x29\x5f\x6e\x35\x6f\xec\x2c\x16\xfa\x21\x44\x84\x37\x06\x11\x91\x47\xfd\xdc\x15\xd9\x6f\xdc\xbe\xb4\xa8\x12\x05\x8f\xeb\x92\xe9\xad\x21\x98\xf6\xba\x22\x62\xf2\xe6\x98\xfa\xcc\x53\xcf\x49\x53\xed\xb4\x71\x79\x16\xdb\x65\xc6\xf3\xeb\x98\xc5\x48\xb3\x29\xfc\x89\xf9\x8a\x58\x4d\xd2\xe6\xd9\x8a\x27\xfb\xa4\x51\x03\x1a\xc4\x21\x4f\xe7\x0d\x3c\xcc\x19\xd6\x57\x2b\xd8\x6e\xe3\x7c\x6c\xd4\xbb\x44\x5d\xc1\x9b\x7f\xcd\x84\x88\x8e\x72\xb5\x3f\xba\x3f\x63\x20\x09\xfa\x7b\x6e\xc3\x49\x6d\xff\x1f\xfc\xff\x1b\xc9\x60\x52\x07\xc0\xce\x20\x7d\xb4\x35\x61\xe1\xdb\x4a\xfd\xcf\x52\xff\x44\x96\x1b\xde\x52\x01\x30\xee\x90\x51\x81\x45\x6a\x8b\x3f\xa6\x60\xc7\xe0\xa7\x66\xbd\x2e\x72\x59\x54\xaa\xff\x5a\xdd\x86\xa3\x36\xbd\xbb\xd9\x04\x98\x3e\x7c\xbb\xe4\x50\xd7\x93\xe2\xce\xb4\x4e\x66\xe8\x09\xd6\x96\x48\xfd\x7b\x0a\xe5\x3f\xf2\x28\x61\x3b\xc8\xaf\x6c\x47\xc2\x6c\x7c\xe7\x59\xae\xf0\xa6\xad\xb9\xff\xbe\xd6\x9e\x9d\xe0\x70\x05\x31\x90\x6f\x2a\x19\xaf\xd5\xba\xa9\xd5\x1e\x07\x4e\x8e\x51\x51\xa3\x53\x78\x64\xdf\xb3\x72\x83\xe6\x37\xa0\xc2\x63\x04\xb1\xd4\xaa\x09\xe2\x14\xa3\x9b\x76\x99\xcb\x25\x80\xdb\x96\xc0\xcb\xd3\x71\xce\xe9\x70\x8e\x5a\xba\xe6\x86\x8d\x39\xdb\xfa\x3e\x40\x2e\xb5\xe2\x05\x14\xd5\x35\xe3\x20\x8d\xb4\xc6\x93\xb8\x08\x9a\xc3\xd5\x62\xeb\x4d\xc3\x45\xd0\x84\xd8\xd1\xf2\x12\x32\x71\x2e\x7b\x04\x66\xd7\xc5\xba\xf4\xb3\x91\x19\x70\xf5\x94\xc0\x86\x8a\x81\xc6\x22\x13\xeb\x9c\xd7\xe6\x6b\xd0\xc3\x63\x71\x8e\x7f\xf1\x09\xac\x1d\x08\x9c\x4d\x76\x21\xa0\x58\x7b\xff\x30\x3d\x39\x3a\x37\xe5\x86\x50\xd6\xc6\x28\x10\x66\x6d\x19\x70\x3c\xcc\x0c\x23\xb6\xd2\x9a\x6a\x01\x0f\x71\x51\x2d\x5f\xba\xe2\x33\xa9\xe0\xe9\x86\xda\xc4\x1d\x53\x80\xc2\xbd\xc9\xf2\xf4\x65\x4b\x81\x31\x7a\x0f\x1d\x24\x94\xc1\x27\x60\x39\x89\x2f\xb0\xb8\xb0\xf6\xc1\xce\xdd\xb6\xa3\x15\x67\xce\x92\x8d\xcd\xbb\x47\x71\xdd\x27\x2f\x02\x33\xe4\xf7\x4e\xda\x18\x91\x15\xd1\x01\x02\xfa\xc7\x97\x13\xc1\x9a\x8d\x91\x13\xf7\xa1\xd1\x62\x6e\x8d\x36\xbb\x48\x72\x74\x2d\x55\xb1\xc0\xd0\xf4\x57\x28\xce\x76\x3e\x97\x62\xc7\x1e\x05\x95\x7c\x4d\x4a\x7e\x1f\x27\x1f\xda\xd9\x05\xb4\x7c\x68\xa4\xab\xf8\x54\xf7\x68\xd9\x97\x99\x45\xcc\x9c\x79\xd8\xd1\x2c\xcf\x7d\x9c\x26\xe7\x64\x89\x85\x33\xc5\xf5\xf3\x9f\xe7\xfa\xff\x49\x5d\x70\x53\x89\x5f\x0a\x65\x13\x7c\x66\xea\x93\xa8\xb6\x9f\x9c\xff\x2f\xd1\xe4\x75\x86\xe9\xd0\x6d\x3e\x95\x3e\x99\xb0\x64\xc3\x17\x7a\x68\xd5\x84\x22\x16\x22\xe2\xbf\xd0\x1f\xdf\xe1\xb7\xbd\x8f\x19\xea\x45\xa8\xa6\x61\x5f\x90\xb4\xc6\x12\xa8\xc5\xb6\xbe\xce\xa1\xeb\x9d\x60\xb7\x8b\x16\x5e\xc2\xc1\xb1\xb6\x3b\xba\x3d\xca\x42\xb8\xcc\xa6\x42\x26\x61\x4a\x99\x44\x54\xea\x35\x62\xaa\xcc\x56\x2c\x09\x7c\xd3\xa3\xd0\x59\x82\x17\x12\x5b\x2c\x20\x64\xea\xa8\xde\x8d\x28\x67\x91\x85\x6c\xee\xde\xff\x53\xdb\x14\xdc\x09\xe9\x27\xf0\x3c\xf4\xbb\xe4\xf0\xfa\x36\xdf\xc8\xc0\x67\xcb\x1a\xc9\xba\x23\x17\x9b\x45\x41\xe1\x7d\xeb\x92\x7a\x8c\xc2\x47\xac\xe1\x81\x25\x07\xd3\x70\xd9\x3c\x9a\xdf\xf1\x92\xb3\x01\xad\x4a\x14\xb7\x48\x0a\x4a\xd5\xcb\x65\xbd\xdc\x0e\x96\x10\x53\x93\x1f\x78\xea\x4a\x11\x3d\x3c\x0a\xfd\xf4\xb1\x35\x8f\xb6\x3c\xcd\xaa\x3a\xec\x5f\x90\x46\xff\xdd\x16\xfe\xf7\xb3\x85\x21\x68\xff\x94\x86\x70\x7b\x81\xc6\xf7\xa7\xf0\x1b\x78\x0a\xbd\x71\xd2\x5e\x4f\xbc\x05\xa3\xa5\x47\x7f\x5c\xcc\x3d\xb6\x4e\x03\xb5\xef\x0a\x6b\x9e\x43\xdf\x85\x53\xfa\x6b\xa0\x15\xff\xb6\xab\xd1\x7d\x30\x9f\xec\x8d\x3e\x59\x78\x60\xcc\x63\xaa\xaf\xb8\x0d\x18\x5c\x9b\xab\x0d\x4c\x7c\xa5\xec\xbb\xe2\x1e\x3e\x0a\x2b\x9f\x15\x76\xd5\xc3\xab\x6c\xb2\xa0\xae\xb2\xa2\xfc\x85\xe5\xd5\x51\xa0\x28\x50\x0b\xf1\x64\x31\x6e\x33\x54\x1c\xa6\xf7\x45\x6f\x68\xf6\x36\x0c\x9e\xea\x77\x15\xcf\x1c\x14\x4f\x1b\xa8\x51\x3d\xee\x29\x82\xf7\x93\x5d\xaf\x4f\xa8\x33\x3e\x2a\xb6\xdb\x71\x65\x22\x82\x8d\xa0\x2d\xe0\x76\x42\x2f\xb1\x40\xdf\xc3\xcf\x77\x37\xd7\xf5\xb7\x41\xcb\x9e\x5a\xd3\xf0\x33\x58\xba\xb3\xf6\x9d\xbb\xae\xf2\xbc\x73\xe7\x46\xd0\x19\x7e\xb8\xba\x5a\xfc\x72\x7e\xf5\xe1\xb2\x17\x72\xcf\xfb\x59\xe7\x9a\xd8\x91\xd0\x9a\xa0\x45\x58\x82\x15\x58\x6d\xb9\x32\xe5\x08\x6e\xd6\xa8\x78\x57\x79\x1e\x42\x2f\xc6\xe2\x13\xb5\x03\xa9\x3b\x95\x40\x8f\x4d\x2c\xa2\xde\x85\x0b\xfb\x87\x9f\x7d\xd2\x8d\x7f\xc2\x6f\x5f\x46\x6e\x12\xaf\xa3\x6b\xdb\x6b\xc7\xba\x52\x5e\xe0\x11\xd7\x01\x11\x20\xbb\xae\xc3\xa9\xc1\x65\x0f\xbb\x1e\x1f\x04\x20\x7b\xf0\xd4\x60\xc2\x9e\xe4\x76\xe0\xda\x7d\x0a\xbd\x81\x56\x96\xa7\xa8\xda\x42\xbb\x33\x84\x04\x45\xd6\x79\x8b\x9a\x19\x0b\xa2\x23\x65\x50\xbd\xd7\x39\xa6\x68\x4e\x71\xf2\x9c\x89\x75\xc5\xd6\xbc\x98\x45\xa6\xf3\x58\x6c\xb3\xf5\x06\x30\x54\x1c\x8f\x3f\x5a\x32\xac\xcc\x1e\x78\xed\x08\x61\x8a\x13\xe1\x06\xcc\xa2\x4c\xc4\x82\xe6\x24\xd6\xae\x79\xcc\x7e\xfa\xf9\xce\x4e\x47\x9f\x34\xdb\x10\xa1\x9a\x8a\x58\xe0\xe6\x22\x54\x9b\x71\x93\x80\xe2\x07\xdc\xe9\xc1\xd1\x65\x8a\x1b\x20\x65\x90\xe9\x6b\x70\xd8\xc4\xc2\xa6\xda\xc3\xc6\x06\x2c\x48\x98\x13\x89\x43\x1a\x96\x27\x66\x33\xcc\x9d\xa0\xb1\xb5\x9f\xfa\xa3\xdf\x00\x7d\xe1\x16\x0f\xb5\x56\x46\x1c\x5b\x27\xc6\x46\xea\xd8\xcc\x13\x1c\x5d\xf5\x57\x50\x5f\xd1\x3e\x1a\x33\x2f\xfc\x4d\x67\x70\x59\x56\xcb\x7c\xc2\x90\xf0\xf7\xbd\x83\x42\x91\xdc\x3f\xa8\x11\x3e\xd2\xdb\xda\xd5\xd2\xc7\xb4\xaf\xdb\xa5\x94\x1d\xfb\x72\x42\x6f\x63\x30\x28\xfa\x60\x68\x31\xaa\xa4\x3c\xe4\xbc\x8c\x48\xdb\xae\x2f\x91\x91\x3e\x7d\x03\xca\xb3\xe2\xa0\xe1\x38\xfd\x69\xf4\x88\xac\x86\x40\x8f\xdd\x24\x09\x4b\xef\x5c\x20\x60\x3b\xc4\x24\xf9\xb8\x28\xc2\xc1\x33\x14\x2f\x02\xf8\x46\x19\xd5\x20\xcd\xec\x21\x9a\xb9\x9d\x9b\xc1\x20\x93\x4a\x15\x5a\x5c\x92\xbc\x23\xa9\x2d\x55\xc4\x62\x61\x70\xb5\x8c\x38\x3e\x37\x48\x27\xca\xfe\x2b\xa6\xc2\xef\x10\x95\x06\x34\xd6\x32\x92\x82\x1b\x69\x18\x0b\x00\x2f\x17\xe0\x8d\x5d\x16\x00\x2b\x48\x10\xdd\xf4\x07\x8f\x6f\x8e\x09\x24\x27\x1d\x96\x79\x35\x35\x20\x78\xe7\x7f\xd0\xff\xfd\xdf\x0f\xff\x1f\x00\x00\xff\xff\x3c\xc0\x58\x14\x3f\xe1\x03\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: 251571, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} + info := bindataFileInfo{name: "admin.swagger.json", size: 254271, mode: os.FileMode(420), modTime: time.Unix(1562572800, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java index 828307715..2a1182376 100644 --- a/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java +++ b/gen/pb-java/flyteidl/admin/ExecutionOuterClass.java @@ -2431,6 +2431,1125 @@ public flyteidl.admin.ExecutionOuterClass.ExecutionRelaunchRequest getDefaultIns } + public interface ExecutionRecoverRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:flyteidl.admin.ExecutionRecoverRequest) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * Identifier of the workflow execution to recover.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + boolean hasId(); + /** + *
+     * Identifier of the workflow execution to recover.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getId(); + /** + *
+     * Identifier of the workflow execution to recover.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getIdOrBuilder(); + + /** + *
+     * User provided value for the recovered execution.
+     * If none is provided the system will generate a unique string.
+     * +optional
+     * 
+ * + * string name = 2; + */ + java.lang.String getName(); + /** + *
+     * User provided value for the recovered execution.
+     * If none is provided the system will generate a unique string.
+     * +optional
+     * 
+ * + * string name = 2; + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + *
+     * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+     * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + boolean hasMetadata(); + /** + *
+     * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+     * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata getMetadata(); + /** + *
+     * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+     * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + flyteidl.admin.ExecutionOuterClass.ExecutionMetadataOrBuilder getMetadataOrBuilder(); + } + /** + *
+   * Request to recover the referenced execution.
+   * 
+ * + * Protobuf type {@code flyteidl.admin.ExecutionRecoverRequest} + */ + public static final class ExecutionRecoverRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:flyteidl.admin.ExecutionRecoverRequest) + ExecutionRecoverRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use ExecutionRecoverRequest.newBuilder() to construct. + private ExecutionRecoverRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ExecutionRecoverRequest() { + name_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ExecutionRecoverRequest( + 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: { + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder subBuilder = null; + if (id_ != null) { + subBuilder = id_.toBuilder(); + } + id_ = input.readMessage(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(id_); + id_ = subBuilder.buildPartial(); + } + + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + case 26: { + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.Builder subBuilder = null; + if (metadata_ != null) { + subBuilder = metadata_.toBuilder(); + } + metadata_ = input.readMessage(flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(metadata_); + metadata_ = subBuilder.buildPartial(); + } + + 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 flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_ExecutionRecoverRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.class, flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.Builder.class); + } + + public static final int ID_FIELD_NUMBER = 1; + private flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier id_; + /** + *
+     * Identifier of the workflow execution to recover.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public boolean hasId() { + return id_ != null; + } + /** + *
+     * Identifier of the workflow execution to recover.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getId() { + return id_ == null ? flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance() : id_; + } + /** + *
+     * Identifier of the workflow execution to recover.
+     * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getIdOrBuilder() { + return getId(); + } + + public static final int NAME_FIELD_NUMBER = 2; + private volatile java.lang.Object name_; + /** + *
+     * User provided value for the recovered execution.
+     * If none is provided the system will generate a unique string.
+     * +optional
+     * 
+ * + * string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + 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(); + name_ = s; + return s; + } + } + /** + *
+     * User provided value for the recovered execution.
+     * If none is provided the system will generate a unique string.
+     * +optional
+     * 
+ * + * string name = 2; + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int METADATA_FIELD_NUMBER = 3; + private flyteidl.admin.ExecutionOuterClass.ExecutionMetadata metadata_; + /** + *
+     * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+     * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public boolean hasMetadata() { + return metadata_ != null; + } + /** + *
+     * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+     * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public flyteidl.admin.ExecutionOuterClass.ExecutionMetadata getMetadata() { + return metadata_ == null ? flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.getDefaultInstance() : metadata_; + } + /** + *
+     * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+     * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public flyteidl.admin.ExecutionOuterClass.ExecutionMetadataOrBuilder getMetadataOrBuilder() { + return getMetadata(); + } + + 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 (id_ != null) { + output.writeMessage(1, getId()); + } + if (!getNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); + } + if (metadata_ != null) { + output.writeMessage(3, getMetadata()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (id_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getId()); + } + if (!getNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); + } + if (metadata_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, getMetadata()); + } + 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 flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest)) { + return super.equals(obj); + } + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest other = (flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest) obj; + + if (hasId() != other.hasId()) return false; + if (hasId()) { + if (!getId() + .equals(other.getId())) return false; + } + if (!getName() + .equals(other.getName())) return false; + if (hasMetadata() != other.hasMetadata()) return false; + if (hasMetadata()) { + if (!getMetadata() + .equals(other.getMetadata())) 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(); + if (hasId()) { + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + } + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + if (hasMetadata()) { + hash = (37 * hash) + METADATA_FIELD_NUMBER; + hash = (53 * hash) + getMetadata().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest 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 flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest 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 flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest 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(flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest 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 to recover the referenced execution.
+     * 
+ * + * Protobuf type {@code flyteidl.admin.ExecutionRecoverRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:flyteidl.admin.ExecutionRecoverRequest) + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_ExecutionRecoverRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.class, flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.Builder.class); + } + + // Construct using flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.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(); + if (idBuilder_ == null) { + id_ = null; + } else { + id_ = null; + idBuilder_ = null; + } + name_ = ""; + + if (metadataBuilder_ == null) { + metadata_ = null; + } else { + metadata_ = null; + metadataBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return flyteidl.admin.ExecutionOuterClass.internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest getDefaultInstanceForType() { + return flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.getDefaultInstance(); + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest build() { + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest buildPartial() { + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest result = new flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest(this); + if (idBuilder_ == null) { + result.id_ = id_; + } else { + result.id_ = idBuilder_.build(); + } + result.name_ = name_; + if (metadataBuilder_ == null) { + result.metadata_ = metadata_; + } else { + result.metadata_ = metadataBuilder_.build(); + } + 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 flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest) { + return mergeFrom((flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest other) { + if (other == flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest.getDefaultInstance()) return this; + if (other.hasId()) { + mergeId(other.getId()); + } + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + if (other.hasMetadata()) { + mergeMetadata(other.getMetadata()); + } + 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 { + flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier id_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder> idBuilder_; + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public boolean hasId() { + return idBuilder_ != null || id_ != null; + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier getId() { + if (idBuilder_ == null) { + return id_ == null ? flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance() : id_; + } else { + return idBuilder_.getMessage(); + } + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder setId(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier value) { + if (idBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + id_ = value; + onChanged(); + } else { + idBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder setId( + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder builderForValue) { + if (idBuilder_ == null) { + id_ = builderForValue.build(); + onChanged(); + } else { + idBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder mergeId(flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier value) { + if (idBuilder_ == null) { + if (id_ != null) { + id_ = + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.newBuilder(id_).mergeFrom(value).buildPartial(); + } else { + id_ = value; + } + onChanged(); + } else { + idBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public Builder clearId() { + if (idBuilder_ == null) { + id_ = null; + onChanged(); + } else { + id_ = null; + idBuilder_ = null; + } + + return this; + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder getIdBuilder() { + + onChanged(); + return getIdFieldBuilder().getBuilder(); + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + public flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder getIdOrBuilder() { + if (idBuilder_ != null) { + return idBuilder_.getMessageOrBuilder(); + } else { + return id_ == null ? + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.getDefaultInstance() : id_; + } + } + /** + *
+       * Identifier of the workflow execution to recover.
+       * 
+ * + * .flyteidl.core.WorkflowExecutionIdentifier id = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder> + getIdFieldBuilder() { + if (idBuilder_ == null) { + idBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifier.Builder, flyteidl.core.IdentifierOuterClass.WorkflowExecutionIdentifierOrBuilder>( + getId(), + getParentForChildren(), + isClean()); + id_ = null; + } + return idBuilder_; + } + + private java.lang.Object name_ = ""; + /** + *
+       * User provided value for the recovered execution.
+       * If none is provided the system will generate a unique string.
+       * +optional
+       * 
+ * + * string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * User provided value for the recovered execution.
+       * If none is provided the system will generate a unique string.
+       * +optional
+       * 
+ * + * string name = 2; + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * User provided value for the recovered execution.
+       * If none is provided the system will generate a unique string.
+       * +optional
+       * 
+ * + * string name = 2; + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + *
+       * User provided value for the recovered execution.
+       * If none is provided the system will generate a unique string.
+       * +optional
+       * 
+ * + * string name = 2; + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + *
+       * User provided value for the recovered execution.
+       * If none is provided the system will generate a unique string.
+       * +optional
+       * 
+ * + * string name = 2; + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + private flyteidl.admin.ExecutionOuterClass.ExecutionMetadata metadata_; + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata, flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.Builder, flyteidl.admin.ExecutionOuterClass.ExecutionMetadataOrBuilder> metadataBuilder_; + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public boolean hasMetadata() { + return metadataBuilder_ != null || metadata_ != null; + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public flyteidl.admin.ExecutionOuterClass.ExecutionMetadata getMetadata() { + if (metadataBuilder_ == null) { + return metadata_ == null ? flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.getDefaultInstance() : metadata_; + } else { + return metadataBuilder_.getMessage(); + } + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public Builder setMetadata(flyteidl.admin.ExecutionOuterClass.ExecutionMetadata value) { + if (metadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + metadata_ = value; + onChanged(); + } else { + metadataBuilder_.setMessage(value); + } + + return this; + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public Builder setMetadata( + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.Builder builderForValue) { + if (metadataBuilder_ == null) { + metadata_ = builderForValue.build(); + onChanged(); + } else { + metadataBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public Builder mergeMetadata(flyteidl.admin.ExecutionOuterClass.ExecutionMetadata value) { + if (metadataBuilder_ == null) { + if (metadata_ != null) { + metadata_ = + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial(); + } else { + metadata_ = value; + } + onChanged(); + } else { + metadataBuilder_.mergeFrom(value); + } + + return this; + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public Builder clearMetadata() { + if (metadataBuilder_ == null) { + metadata_ = null; + onChanged(); + } else { + metadata_ = null; + metadataBuilder_ = null; + } + + return this; + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.Builder getMetadataBuilder() { + + onChanged(); + return getMetadataFieldBuilder().getBuilder(); + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + public flyteidl.admin.ExecutionOuterClass.ExecutionMetadataOrBuilder getMetadataOrBuilder() { + if (metadataBuilder_ != null) { + return metadataBuilder_.getMessageOrBuilder(); + } else { + return metadata_ == null ? + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.getDefaultInstance() : metadata_; + } + } + /** + *
+       * Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution.
+       * 
+ * + * .flyteidl.admin.ExecutionMetadata metadata = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata, flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.Builder, flyteidl.admin.ExecutionOuterClass.ExecutionMetadataOrBuilder> + getMetadataFieldBuilder() { + if (metadataBuilder_ == null) { + metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + flyteidl.admin.ExecutionOuterClass.ExecutionMetadata, flyteidl.admin.ExecutionOuterClass.ExecutionMetadata.Builder, flyteidl.admin.ExecutionOuterClass.ExecutionMetadataOrBuilder>( + getMetadata(), + getParentForChildren(), + isClean()); + metadata_ = null; + } + return metadataBuilder_; + } + @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:flyteidl.admin.ExecutionRecoverRequest) + } + + // @@protoc_insertion_point(class_scope:flyteidl.admin.ExecutionRecoverRequest) + private static final flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest(); + } + + public static flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ExecutionRecoverRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ExecutionRecoverRequest(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 flyteidl.admin.ExecutionOuterClass.ExecutionRecoverRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface ExecutionCreateResponseOrBuilder extends // @@protoc_insertion_point(interface_extends:flyteidl.admin.ExecutionCreateResponse) com.google.protobuf.MessageOrBuilder { @@ -12287,6 +13406,14 @@ public enum ExecutionMode * CHILD_WORKFLOW = 4; */ CHILD_WORKFLOW(4), + /** + *
+       * This execution was recovered from another execution.
+       * 
+ * + * RECOVERED = 5; + */ + RECOVERED(5), UNRECOGNIZED(-1), ; @@ -12330,6 +13457,14 @@ public enum ExecutionMode * CHILD_WORKFLOW = 4; */ public static final int CHILD_WORKFLOW_VALUE = 4; + /** + *
+       * This execution was recovered from another execution.
+       * 
+ * + * RECOVERED = 5; + */ + public static final int RECOVERED_VALUE = 5; public final int getNumber() { @@ -12355,6 +13490,7 @@ public static ExecutionMode forNumber(int value) { case 2: return SYSTEM; case 3: return RELAUNCH; case 4: return CHILD_WORKFLOW; + case 5: return RECOVERED; default: return null; } } @@ -21187,6 +22323,11 @@ public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetDataResponse getDe private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_flyteidl_admin_ExecutionRelaunchRequest_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_flyteidl_admin_ExecutionRecoverRequest_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_flyteidl_admin_ExecutionCreateResponse_descriptor; private static final @@ -21284,77 +22425,82 @@ public flyteidl.admin.ExecutionOuterClass.WorkflowExecutionGetDataResponse getDe "2\031.flyteidl.core.LiteralMap\"`\n\030Execution" + "RelaunchRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.c" + "ore.WorkflowExecutionIdentifier\022\014\n\004name\030" + - "\003 \001(\t\"Q\n\027ExecutionCreateResponse\0226\n\002id\030\001" + - " \001(\0132*.flyteidl.core.WorkflowExecutionId" + - "entifier\"U\n\033WorkflowExecutionGetRequest\022" + - "6\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowExec" + - "utionIdentifier\"\243\001\n\tExecution\0226\n\002id\030\001 \001(" + - "\0132*.flyteidl.core.WorkflowExecutionIdent" + - "ifier\022+\n\004spec\030\002 \001(\0132\035.flyteidl.admin.Exe" + - "cutionSpec\0221\n\007closure\030\003 \001(\0132 .flyteidl.a" + - "dmin.ExecutionClosure\"M\n\rExecutionList\022-" + - "\n\nexecutions\030\001 \003(\0132\031.flyteidl.admin.Exec" + - "ution\022\r\n\005token\030\002 \001(\t\"X\n\016LiteralMapBlob\022/" + - "\n\006values\030\001 \001(\0132\031.flyteidl.core.LiteralMa" + - "pB\002\030\001H\000\022\r\n\003uri\030\002 \001(\tH\000B\006\n\004data\"1\n\rAbortM" + - "etadata\022\r\n\005cause\030\001 \001(\t\022\021\n\tprincipal\030\002 \001(" + - "\t\"\353\004\n\020ExecutionClosure\0221\n\007outputs\030\001 \001(\0132" + - "\036.flyteidl.admin.LiteralMapBlobH\000\022.\n\005err" + - "or\030\002 \001(\0132\035.flyteidl.core.ExecutionErrorH" + - "\000\022\031\n\013abort_cause\030\n \001(\tB\002\030\001H\000\0227\n\016abort_me" + - "tadata\030\014 \001(\0132\035.flyteidl.admin.AbortMetad" + - "ataH\000\0226\n\017computed_inputs\030\003 \001(\0132\031.flyteid" + - "l.core.LiteralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.f" + - "lyteidl.core.WorkflowExecution.Phase\022.\n\n" + - "started_at\030\005 \001(\0132\032.google.protobuf.Times" + - "tamp\022+\n\010duration\030\006 \001(\0132\031.google.protobuf" + - ".Duration\022.\n\ncreated_at\030\007 \001(\0132\032.google.p" + - "rotobuf.Timestamp\022.\n\nupdated_at\030\010 \001(\0132\032." + - "google.protobuf.Timestamp\0223\n\rnotificatio" + - "ns\030\t \003(\0132\034.flyteidl.admin.Notification\022." + - "\n\013workflow_id\030\013 \001(\0132\031.flyteidl.core.Iden" + - "tifierB\017\n\routput_result\"+\n\016SystemMetadat" + - "a\022\031\n\021execution_cluster\030\001 \001(\t\"\313\003\n\021Executi" + - "onMetadata\022=\n\004mode\030\001 \001(\0162/.flyteidl.admi" + - "n.ExecutionMetadata.ExecutionMode\022\021\n\tpri" + - "ncipal\030\002 \001(\t\022\017\n\007nesting\030\003 \001(\r\0220\n\014schedul" + - "ed_at\030\004 \001(\0132\032.google.protobuf.Timestamp\022" + - "E\n\025parent_node_execution\030\005 \001(\0132&.flyteid" + - "l.core.NodeExecutionIdentifier\022G\n\023refere" + - "nce_execution\030\020 \001(\0132*.flyteidl.core.Work" + - "flowExecutionIdentifier\0227\n\017system_metada" + - "ta\030\021 \001(\0132\036.flyteidl.admin.SystemMetadata" + - "\"X\n\rExecutionMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDUL" + - "ED\020\001\022\n\n\006SYSTEM\020\002\022\014\n\010RELAUNCH\020\003\022\022\n\016CHILD_" + - "WORKFLOW\020\004\"G\n\020NotificationList\0223\n\rnotifi" + - "cations\030\001 \003(\0132\034.flyteidl.admin.Notificat" + - "ion\"\260\004\n\rExecutionSpec\022.\n\013launch_plan\030\001 \001" + - "(\0132\031.flyteidl.core.Identifier\022-\n\006inputs\030" + - "\002 \001(\0132\031.flyteidl.core.LiteralMapB\002\030\001\0223\n\010" + - "metadata\030\003 \001(\0132!.flyteidl.admin.Executio" + - "nMetadata\0229\n\rnotifications\030\005 \001(\0132 .flyte" + - "idl.admin.NotificationListH\000\022\025\n\013disable_" + - "all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyteidl.a" + - "dmin.Labels\0220\n\013annotations\030\010 \001(\0132\033.flyte" + - "idl.admin.Annotations\0228\n\020security_contex" + - "t\030\n \001(\0132\036.flyteidl.core.SecurityContext\022" + - "/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admin.Auth" + - "RoleB\002\030\001\022;\n\022quality_of_service\030\021 \001(\0132\037.f" + - "lyteidl.core.QualityOfService\022\027\n\017max_par" + - "allelism\030\022 \001(\005B\030\n\026notification_overrides" + - "J\004\010\004\020\005\"b\n\031ExecutionTerminateRequest\0226\n\002i" + - "d\030\001 \001(\0132*.flyteidl.core.WorkflowExecutio" + - "nIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032ExecutionT" + - "erminateResponse\"Y\n\037WorkflowExecutionGet" + - "DataRequest\0226\n\002id\030\001 \001(\0132*.flyteidl.core." + - "WorkflowExecutionIdentifier\"\336\001\n Workflow" + - "ExecutionGetDataResponse\022,\n\007outputs\030\001 \001(" + - "\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022+\n\006inputs" + - "\030\002 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022.\n\013f" + - "ull_inputs\030\003 \001(\0132\031.flyteidl.core.Literal" + - "Map\022/\n\014full_outputs\030\004 \001(\0132\031.flyteidl.cor" + - "e.LiteralMapB7Z5github.com/flyteorg/flyt" + - "eidl/gen/pb-go/flyteidl/adminb\006proto3" + "\003 \001(\t\"\224\001\n\027ExecutionRecoverRequest\0226\n\002id\030" + + "\001 \001(\0132*.flyteidl.core.WorkflowExecutionI" + + "dentifier\022\014\n\004name\030\002 \001(\t\0223\n\010metadata\030\003 \001(" + + "\0132!.flyteidl.admin.ExecutionMetadata\"Q\n\027" + + "ExecutionCreateResponse\0226\n\002id\030\001 \001(\0132*.fl" + + "yteidl.core.WorkflowExecutionIdentifier\"" + + "U\n\033WorkflowExecutionGetRequest\0226\n\002id\030\001 \001" + + "(\0132*.flyteidl.core.WorkflowExecutionIden" + + "tifier\"\243\001\n\tExecution\0226\n\002id\030\001 \001(\0132*.flyte" + + "idl.core.WorkflowExecutionIdentifier\022+\n\004" + + "spec\030\002 \001(\0132\035.flyteidl.admin.ExecutionSpe" + + "c\0221\n\007closure\030\003 \001(\0132 .flyteidl.admin.Exec" + + "utionClosure\"M\n\rExecutionList\022-\n\nexecuti" + + "ons\030\001 \003(\0132\031.flyteidl.admin.Execution\022\r\n\005" + + "token\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\"\353\004\n\020Exe" + + "cutionClosure\0221\n\007outputs\030\001 \001(\0132\036.flyteid" + + "l.admin.LiteralMapBlobH\000\022.\n\005error\030\002 \001(\0132" + + "\035.flyteidl.core.ExecutionErrorH\000\022\031\n\013abor" + + "t_cause\030\n \001(\tB\002\030\001H\000\0227\n\016abort_metadata\030\014 " + + "\001(\0132\035.flyteidl.admin.AbortMetadataH\000\0226\n\017" + + "computed_inputs\030\003 \001(\0132\031.flyteidl.core.Li" + + "teralMapB\002\030\001\0225\n\005phase\030\004 \001(\0162&.flyteidl.c" + + "ore.WorkflowExecution.Phase\022.\n\nstarted_a" + + "t\030\005 \001(\0132\032.google.protobuf.Timestamp\022+\n\010d" + + "uration\030\006 \001(\0132\031.google.protobuf.Duration" + + "\022.\n\ncreated_at\030\007 \001(\0132\032.google.protobuf.T" + + "imestamp\022.\n\nupdated_at\030\010 \001(\0132\032.google.pr" + + "otobuf.Timestamp\0223\n\rnotifications\030\t \003(\0132" + + "\034.flyteidl.admin.Notification\022.\n\013workflo" + + "w_id\030\013 \001(\0132\031.flyteidl.core.IdentifierB\017\n" + + "\routput_result\"+\n\016SystemMetadata\022\031\n\021exec" + + "ution_cluster\030\001 \001(\t\"\332\003\n\021ExecutionMetadat" + + "a\022=\n\004mode\030\001 \001(\0162/.flyteidl.admin.Executi" + + "onMetadata.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" + + "_node_execution\030\005 \001(\0132&.flyteidl.core.No" + + "deExecutionIdentifier\022G\n\023reference_execu" + + "tion\030\020 \001(\0132*.flyteidl.core.WorkflowExecu" + + "tionIdentifier\0227\n\017system_metadata\030\021 \001(\0132" + + "\036.flyteidl.admin.SystemMetadata\"g\n\rExecu" + + "tionMode\022\n\n\006MANUAL\020\000\022\r\n\tSCHEDULED\020\001\022\n\n\006S" + + "YSTEM\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\r" + + "notifications\030\001 \003(\0132\034.flyteidl.admin.Not" + + "ification\"\260\004\n\rExecutionSpec\022.\n\013launch_pl" + + "an\030\001 \001(\0132\031.flyteidl.core.Identifier\022-\n\006i" + + "nputs\030\002 \001(\0132\031.flyteidl.core.LiteralMapB\002" + + "\030\001\0223\n\010metadata\030\003 \001(\0132!.flyteidl.admin.Ex" + + "ecutionMetadata\0229\n\rnotifications\030\005 \001(\0132 " + + ".flyteidl.admin.NotificationListH\000\022\025\n\013di" + + "sable_all\030\006 \001(\010H\000\022&\n\006labels\030\007 \001(\0132\026.flyt" + + "eidl.admin.Labels\0220\n\013annotations\030\010 \001(\0132\033" + + ".flyteidl.admin.Annotations\0228\n\020security_" + + "context\030\n \001(\0132\036.flyteidl.core.SecurityCo" + + "ntext\022/\n\tauth_role\030\020 \001(\0132\030.flyteidl.admi" + + "n.AuthRoleB\002\030\001\022;\n\022quality_of_service\030\021 \001" + + "(\0132\037.flyteidl.core.QualityOfService\022\027\n\017m" + + "ax_parallelism\030\022 \001(\005B\030\n\026notification_ove" + + "rridesJ\004\010\004\020\005\"b\n\031ExecutionTerminateReques" + + "t\0226\n\002id\030\001 \001(\0132*.flyteidl.core.WorkflowEx" + + "ecutionIdentifier\022\r\n\005cause\030\002 \001(\t\"\034\n\032Exec" + + "utionTerminateResponse\"Y\n\037WorkflowExecut" + + "ionGetDataRequest\0226\n\002id\030\001 \001(\0132*.flyteidl" + + ".core.WorkflowExecutionIdentifier\"\336\001\n Wo" + + "rkflowExecutionGetDataResponse\022,\n\007output" + + "s\030\001 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030\001\022+\n\006" + + "inputs\030\002 \001(\0132\027.flyteidl.admin.UrlBlobB\002\030" + + "\001\022.\n\013full_inputs\030\003 \001(\0132\031.flyteidl.core.L" + + "iteralMap\022/\n\014full_outputs\030\004 \001(\0132\031.flytei" + + "dl.core.LiteralMapB7Z5github.com/flyteor" + + "g/flyteidl/gen/pb-go/flyteidl/adminb\006pro" + + "to3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -21387,92 +22533,98 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionRelaunchRequest_descriptor, new java.lang.String[] { "Id", "Name", }); - internal_static_flyteidl_admin_ExecutionCreateResponse_descriptor = + internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor = getDescriptor().getMessageTypes().get(2); + internal_static_flyteidl_admin_ExecutionRecoverRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_flyteidl_admin_ExecutionRecoverRequest_descriptor, + new java.lang.String[] { "Id", "Name", "Metadata", }); + internal_static_flyteidl_admin_ExecutionCreateResponse_descriptor = + getDescriptor().getMessageTypes().get(3); internal_static_flyteidl_admin_ExecutionCreateResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionCreateResponse_descriptor, new java.lang.String[] { "Id", }); internal_static_flyteidl_admin_WorkflowExecutionGetRequest_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(4); internal_static_flyteidl_admin_WorkflowExecutionGetRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_WorkflowExecutionGetRequest_descriptor, new java.lang.String[] { "Id", }); internal_static_flyteidl_admin_Execution_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_flyteidl_admin_Execution_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_Execution_descriptor, new java.lang.String[] { "Id", "Spec", "Closure", }); internal_static_flyteidl_admin_ExecutionList_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_flyteidl_admin_ExecutionList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionList_descriptor, new java.lang.String[] { "Executions", "Token", }); internal_static_flyteidl_admin_LiteralMapBlob_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_flyteidl_admin_LiteralMapBlob_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_LiteralMapBlob_descriptor, new java.lang.String[] { "Values", "Uri", "Data", }); internal_static_flyteidl_admin_AbortMetadata_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_flyteidl_admin_AbortMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_AbortMetadata_descriptor, new java.lang.String[] { "Cause", "Principal", }); internal_static_flyteidl_admin_ExecutionClosure_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_flyteidl_admin_ExecutionClosure_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionClosure_descriptor, new java.lang.String[] { "Outputs", "Error", "AbortCause", "AbortMetadata", "ComputedInputs", "Phase", "StartedAt", "Duration", "CreatedAt", "UpdatedAt", "Notifications", "WorkflowId", "OutputResult", }); internal_static_flyteidl_admin_SystemMetadata_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_flyteidl_admin_SystemMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_SystemMetadata_descriptor, new java.lang.String[] { "ExecutionCluster", }); internal_static_flyteidl_admin_ExecutionMetadata_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_flyteidl_admin_ExecutionMetadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionMetadata_descriptor, new java.lang.String[] { "Mode", "Principal", "Nesting", "ScheduledAt", "ParentNodeExecution", "ReferenceExecution", "SystemMetadata", }); internal_static_flyteidl_admin_NotificationList_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_flyteidl_admin_NotificationList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_NotificationList_descriptor, new java.lang.String[] { "Notifications", }); internal_static_flyteidl_admin_ExecutionSpec_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); 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", "NotificationOverrides", }); internal_static_flyteidl_admin_ExecutionTerminateRequest_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_flyteidl_admin_ExecutionTerminateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionTerminateRequest_descriptor, new java.lang.String[] { "Id", "Cause", }); internal_static_flyteidl_admin_ExecutionTerminateResponse_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_flyteidl_admin_ExecutionTerminateResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_ExecutionTerminateResponse_descriptor, new java.lang.String[] { }); internal_static_flyteidl_admin_WorkflowExecutionGetDataRequest_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_flyteidl_admin_WorkflowExecutionGetDataRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_WorkflowExecutionGetDataRequest_descriptor, new java.lang.String[] { "Id", }); internal_static_flyteidl_admin_WorkflowExecutionGetDataResponse_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(17); internal_static_flyteidl_admin_WorkflowExecutionGetDataResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_flyteidl_admin_WorkflowExecutionGetDataResponse_descriptor, diff --git a/gen/pb-java/flyteidl/core/Execution.java b/gen/pb-java/flyteidl/core/Execution.java index b9a15cfbd..8bb66ba8c 100644 --- a/gen/pb-java/flyteidl/core/Execution.java +++ b/gen/pb-java/flyteidl/core/Execution.java @@ -717,6 +717,10 @@ public enum Phase * DYNAMIC_RUNNING = 9; */ DYNAMIC_RUNNING(9), + /** + * RECOVERED = 10; + */ + RECOVERED(10), UNRECOGNIZED(-1), ; @@ -760,6 +764,10 @@ public enum Phase * DYNAMIC_RUNNING = 9; */ public static final int DYNAMIC_RUNNING_VALUE = 9; + /** + * RECOVERED = 10; + */ + public static final int RECOVERED_VALUE = 10; public final int getNumber() { @@ -790,6 +798,7 @@ public static Phase forNumber(int value) { case 7: return SKIPPED; case 8: return TIMED_OUT; case 9: return DYNAMIC_RUNNING; + case 10: return RECOVERED; default: return null; } } @@ -5684,33 +5693,33 @@ public flyteidl.core.Execution.QualityOfService getDefaultInstanceForType() { "\001\n\021WorkflowExecution\"\203\001\n\005Phase\022\r\n\tUNDEFI" + "NED\020\000\022\n\n\006QUEUED\020\001\022\013\n\007RUNNING\020\002\022\016\n\nSUCCEE" + "DING\020\003\022\r\n\tSUCCEEDED\020\004\022\013\n\007FAILING\020\005\022\n\n\006FA" + - "ILED\020\006\022\013\n\007ABORTED\020\007\022\r\n\tTIMED_OUT\020\010\"\247\001\n\rN" + - "odeExecution\"\225\001\n\005Phase\022\r\n\tUNDEFINED\020\000\022\n\n" + + "ILED\020\006\022\013\n\007ABORTED\020\007\022\r\n\tTIMED_OUT\020\010\"\266\001\n\rN" + + "odeExecution\"\244\001\n\005Phase\022\r\n\tUNDEFINED\020\000\022\n\n" + "\006QUEUED\020\001\022\013\n\007RUNNING\020\002\022\r\n\tSUCCEEDED\020\003\022\013\n" + "\007FAILING\020\004\022\n\n\006FAILED\020\005\022\013\n\007ABORTED\020\006\022\013\n\007S" + "KIPPED\020\007\022\r\n\tTIMED_OUT\020\010\022\023\n\017DYNAMIC_RUNNI" + - "NG\020\t\"\226\001\n\rTaskExecution\"\204\001\n\005Phase\022\r\n\tUNDE" + - "FINED\020\000\022\n\n\006QUEUED\020\001\022\013\n\007RUNNING\020\002\022\r\n\tSUCC" + - "EEDED\020\003\022\013\n\007ABORTED\020\004\022\n\n\006FAILED\020\005\022\020\n\014INIT" + - "IALIZING\020\006\022\031\n\025WAITING_FOR_RESOURCES\020\007\"\251\001" + - "\n\016ExecutionError\022\014\n\004code\030\001 \001(\t\022\017\n\007messag" + - "e\030\002 \001(\t\022\021\n\terror_uri\030\003 \001(\t\0225\n\004kind\030\004 \001(\016" + - "2\'.flyteidl.core.ExecutionError.ErrorKin" + - "d\".\n\tErrorKind\022\013\n\007UNKNOWN\020\000\022\010\n\004USER\020\001\022\n\n" + - "\006SYSTEM\020\002\"\273\001\n\007TaskLog\022\013\n\003uri\030\001 \001(\t\022\014\n\004na" + - "me\030\002 \001(\t\022<\n\016message_format\030\003 \001(\0162$.flyte" + - "idl.core.TaskLog.MessageFormat\022&\n\003ttl\030\004 " + - "\001(\0132\031.google.protobuf.Duration\"/\n\rMessag" + - "eFormat\022\013\n\007UNKNOWN\020\000\022\007\n\003CSV\020\001\022\010\n\004JSON\020\002\"" + - "J\n\024QualityOfServiceSpec\0222\n\017queueing_budg" + - "et\030\001 \001(\0132\031.google.protobuf.Duration\"\302\001\n\020" + - "QualityOfService\0224\n\004tier\030\001 \001(\0162$.flyteid" + - "l.core.QualityOfService.TierH\000\0223\n\004spec\030\002" + - " \001(\0132#.flyteidl.core.QualityOfServiceSpe" + - "cH\000\"4\n\004Tier\022\r\n\tUNDEFINED\020\000\022\010\n\004HIGH\020\001\022\n\n\006" + - "MEDIUM\020\002\022\007\n\003LOW\020\003B\r\n\013designationB6Z4gith" + - "ub.com/flyteorg/flyteidl/gen/pb-go/flyte" + - "idl/coreb\006proto3" + "NG\020\t\022\r\n\tRECOVERED\020\n\"\226\001\n\rTaskExecution\"\204\001" + + "\n\005Phase\022\r\n\tUNDEFINED\020\000\022\n\n\006QUEUED\020\001\022\013\n\007RU" + + "NNING\020\002\022\r\n\tSUCCEEDED\020\003\022\013\n\007ABORTED\020\004\022\n\n\006F" + + "AILED\020\005\022\020\n\014INITIALIZING\020\006\022\031\n\025WAITING_FOR" + + "_RESOURCES\020\007\"\251\001\n\016ExecutionError\022\014\n\004code\030" + + "\001 \001(\t\022\017\n\007message\030\002 \001(\t\022\021\n\terror_uri\030\003 \001(" + + "\t\0225\n\004kind\030\004 \001(\0162\'.flyteidl.core.Executio" + + "nError.ErrorKind\".\n\tErrorKind\022\013\n\007UNKNOWN" + + "\020\000\022\010\n\004USER\020\001\022\n\n\006SYSTEM\020\002\"\273\001\n\007TaskLog\022\013\n\003" + + "uri\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022<\n\016message_forma" + + "t\030\003 \001(\0162$.flyteidl.core.TaskLog.MessageF" + + "ormat\022&\n\003ttl\030\004 \001(\0132\031.google.protobuf.Dur" + + "ation\"/\n\rMessageFormat\022\013\n\007UNKNOWN\020\000\022\007\n\003C" + + "SV\020\001\022\010\n\004JSON\020\002\"J\n\024QualityOfServiceSpec\0222" + + "\n\017queueing_budget\030\001 \001(\0132\031.google.protobu" + + "f.Duration\"\302\001\n\020QualityOfService\0224\n\004tier\030" + + "\001 \001(\0162$.flyteidl.core.QualityOfService.T" + + "ierH\000\0223\n\004spec\030\002 \001(\0132#.flyteidl.core.Qual" + + "ityOfServiceSpecH\000\"4\n\004Tier\022\r\n\tUNDEFINED\020" + + "\000\022\010\n\004HIGH\020\001\022\n\n\006MEDIUM\020\002\022\007\n\003LOW\020\003B\r\n\013desi" + + "gnationB6Z4github.com/flyteorg/flyteidl/" + + "gen/pb-go/flyteidl/coreb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { diff --git a/gen/pb-java/flyteidl/service/Admin.java b/gen/pb-java/flyteidl/service/Admin.java index 3356e6110..fd03a565c 100644 --- a/gen/pb-java/flyteidl/service/Admin.java +++ b/gen/pb-java/flyteidl/service/Admin.java @@ -37,7 +37,7 @@ public static void registerAllExtensions( "dmin/task_execution.proto\032\034flyteidl/admi" + "n/version.proto\032\033flyteidl/admin/common.p" + "roto\032,protoc-gen-swagger/options/annotat" + - "ions.proto2\245a\n\014AdminService\022\305\002\n\nCreateTa" + + "ions.proto2\305f\n\014AdminService\022\305\002\n\nCreateTa" + "sk\022!.flyteidl.admin.TaskCreateRequest\032\"." + "flyteidl.admin.TaskCreateResponse\"\357\001\202\323\344\223" + "\002\022\"\r/api/v1/tasks:\001*\222A\323\001\032&Create and reg" + @@ -156,201 +156,218 @@ public static void registerAllExtensions( "idl.admin.ExecutionRelaunchRequest\032\'.fly" + "teidl.admin.ExecutionCreateResponse\"I\202\323\344" + "\223\002 \"\033/api/v1/executions/relaunch:\001*\222A \032\036" + - "Relaunch a workflow execution.\022\302\001\n\014GetEx" + - "ecution\022+.flyteidl.admin.WorkflowExecuti" + - "onGetRequest\032\031.flyteidl.admin.Execution\"" + - "j\202\323\344\223\0027\0225/api/v1/executions/{id.project}" + - "/{id.domain}/{id.name}\222A*\032(Retrieve an e" + - "xisting workflow execution.\022\202\002\n\020GetExecu" + - "tionData\022/.flyteidl.admin.WorkflowExecut" + - "ionGetDataRequest\0320.flyteidl.admin.Workf" + - "lowExecutionGetDataResponse\"\212\001\202\323\344\223\002<\022:/a" + - "pi/v1/data/executions/{id.project}/{id.d" + - "omain}/{id.name}\222AE\032CRetrieve input and " + - "output data from an existing workflow ex" + - "ecution.\022\310\001\n\016ListExecutions\022#.flyteidl.a" + - "dmin.ResourceListRequest\032\035.flyteidl.admi" + - "n.ExecutionList\"r\202\323\344\223\002-\022+/api/v1/executi" + - "ons/{id.project}/{id.domain}\222A<\032:Fetch e" + - "xisting workflow executions matching inp" + - "ut filters.\022\364\001\n\022TerminateExecution\022).fly" + - "teidl.admin.ExecutionTerminateRequest\032*." + - "flyteidl.admin.ExecutionTerminateRespons" + - "e\"\206\001\202\323\344\223\002:*5/api/v1/executions/{id.proje" + - "ct}/{id.domain}/{id.name}:\001*\222AC\032ATermina" + - "te the active workflow execution specifi" + - "ed in the request.\022\374\001\n\020GetNodeExecution\022" + - "\'.flyteidl.admin.NodeExecutionGetRequest" + - "\032\035.flyteidl.admin.NodeExecution\"\237\001\202\323\344\223\002p" + - "\022n/api/v1/node_executions/{id.execution_" + - "id.project}/{id.execution_id.domain}/{id" + - ".execution_id.name}/{id.node_id}\222A&\032$Ret" + - "rieve an existing node execution.\022\232\002\n\022Li" + - "stNodeExecutions\022(.flyteidl.admin.NodeEx" + - "ecutionListRequest\032!.flyteidl.admin.Node" + - "ExecutionList\"\266\001\202\323\344\223\002u\022s/api/v1/node_exe" + - "cutions/{workflow_execution_id.project}/" + - "{workflow_execution_id.domain}/{workflow" + - "_execution_id.name}\222A8\0326Fetch existing n" + - "ode executions matching input filters.\022\357" + - "\004\n\031ListNodeExecutionsForTask\022/.flyteidl." + - "admin.NodeExecutionForTaskListRequest\032!." + - "flyteidl.admin.NodeExecutionList\"\375\003\202\323\344\223\002" + - "\254\003\022\251\003/api/v1/children/task_executions/{t" + - "ask_execution_id.node_execution_id.execu" + - "tion_id.project}/{task_execution_id.node" + - "_execution_id.execution_id.domain}/{task" + - "_execution_id.node_execution_id.executio" + - "n_id.name}/{task_execution_id.node_execu" + - "tion_id.node_id}/{task_execution_id.task" + - "_id.project}/{task_execution_id.task_id." + - "domain}/{task_execution_id.task_id.name}" + - "/{task_execution_id.task_id.version}/{ta" + - "sk_execution_id.retry_attempt}\222AG\032EFetch" + - " child node executions launched by the s" + - "pecified task execution.\022\263\002\n\024GetNodeExec" + - "utionData\022+.flyteidl.admin.NodeExecution" + - "GetDataRequest\032,.flyteidl.admin.NodeExec" + - "utionGetDataResponse\"\277\001\202\323\344\223\002u\022s/api/v1/d" + - "ata/node_executions/{id.execution_id.pro" + - "ject}/{id.execution_id.domain}/{id.execu" + - "tion_id.name}/{id.node_id}\222AA\032?Retrieve " + - "input and output data from an existing n" + - "ode execution.\022\227\001\n\017RegisterProject\022&.fly" + - "teidl.admin.ProjectRegisterRequest\032\'.fly" + - "teidl.admin.ProjectRegisterResponse\"3\202\323\344" + - "\223\002\025\"\020/api/v1/projects:\001*\222A\025\032\023Register a " + - "project.\022\207\001\n\rUpdateProject\022\027.flyteidl.ad" + - "min.Project\032%.flyteidl.admin.ProjectUpda" + - "teResponse\"6\202\323\344\223\002\032\032\025/api/v1/projects/{id" + - "}:\001*\222A\023\032\021Update a project.\022\205\001\n\014ListProje" + - "cts\022\".flyteidl.admin.ProjectListRequest\032" + - "\030.flyteidl.admin.Projects\"7\202\323\344\223\002\022\022\020/api/" + - "v1/projects\222A\034\032\032Fetch registered project" + - "s.\022\335\001\n\023CreateWorkflowEvent\022-.flyteidl.ad" + - "min.WorkflowExecutionEventRequest\032..flyt" + - "eidl.admin.WorkflowExecutionEventRespons" + - "e\"g\202\323\344\223\002\035\"\030/api/v1/events/workflows:\001*\222A" + - "A\032?Create a workflow execution event rec" + - "ording a phase transition.\022\311\001\n\017CreateNod" + - "eEvent\022).flyteidl.admin.NodeExecutionEve" + - "ntRequest\032*.flyteidl.admin.NodeExecution" + - "EventResponse\"_\202\323\344\223\002\031\"\024/api/v1/events/no" + - "des:\001*\222A=\032;Create a node execution event" + - " recording a phase transition.\022\311\001\n\017Creat" + - "eTaskEvent\022).flyteidl.admin.TaskExecutio" + - "nEventRequest\032*.flyteidl.admin.TaskExecu" + - "tionEventResponse\"_\202\323\344\223\002\031\"\024/api/v1/event" + - "s/tasks:\001*\222A=\032;Create a task execution e" + - "vent recording a phase transition.\022\251\003\n\020G" + - "etTaskExecution\022\'.flyteidl.admin.TaskExe" + - "cutionGetRequest\032\035.flyteidl.admin.TaskEx" + - "ecution\"\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/task_executi" + - "ons/{id.node_execution_id.execution_id.p" + - "roject}/{id.node_execution_id.execution_" + - "id.domain}/{id.node_execution_id.executi" + - "on_id.name}/{id.node_execution_id.node_i" + - "d}/{id.task_id.project}/{id.task_id.doma" + - "in}/{id.task_id.name}/{id.task_id.versio" + - "n}/{id.retry_attempt}\222A&\032$Retrieve an ex" + - "isting task execution.\022\323\002\n\022ListTaskExecu" + - "tions\022(.flyteidl.admin.TaskExecutionList" + - "Request\032!.flyteidl.admin.TaskExecutionLi" + - "st\"\357\001\202\323\344\223\002\255\001\022\252\001/api/v1/task_executions/{" + + "Relaunch a workflow execution.\022\235\005\n\020Recov" + + "erExecution\022\'.flyteidl.admin.ExecutionRe" + + "coverRequest\032\'.flyteidl.admin.ExecutionC" + + "reateResponse\"\266\004\202\323\344\223\002\037\"\032/api/v1/executio" + + "ns/recover:\001*\222A\215\004\032\212\004Recreates a previous" + + "ly-run workflow execution that will only" + + " start executing from the last known fai" + + "lure point. In Recover mode, users canno" + + "t change any input parameters or update " + + "the version of the execution. This is ex" + + "tremely useful to recover from system er" + + "rors and byzantine faults like - Loss of" + + " K8s cluster, bugs in platform or instab" + + "ility, machine failures, downstream syst" + + "em failures (downstream services), or si" + + "mply to recover executions that failed b" + + "ecause of retry exhaustion and should co" + + "mplete if tried again.\022\302\001\n\014GetExecution\022" + + "+.flyteidl.admin.WorkflowExecutionGetReq" + + "uest\032\031.flyteidl.admin.Execution\"j\202\323\344\223\0027\022" + + "5/api/v1/executions/{id.project}/{id.dom" + + "ain}/{id.name}\222A*\032(Retrieve an existing " + + "workflow execution.\022\202\002\n\020GetExecutionData" + + "\022/.flyteidl.admin.WorkflowExecutionGetDa" + + "taRequest\0320.flyteidl.admin.WorkflowExecu" + + "tionGetDataResponse\"\212\001\202\323\344\223\002<\022:/api/v1/da" + + "ta/executions/{id.project}/{id.domain}/{" + + "id.name}\222AE\032CRetrieve input and output d" + + "ata from an existing workflow execution." + + "\022\310\001\n\016ListExecutions\022#.flyteidl.admin.Res" + + "ourceListRequest\032\035.flyteidl.admin.Execut" + + "ionList\"r\202\323\344\223\002-\022+/api/v1/executions/{id." + + "project}/{id.domain}\222A<\032:Fetch existing " + + "workflow executions matching input filte" + + "rs.\022\364\001\n\022TerminateExecution\022).flyteidl.ad" + + "min.ExecutionTerminateRequest\032*.flyteidl" + + ".admin.ExecutionTerminateResponse\"\206\001\202\323\344\223" + + "\002:*5/api/v1/executions/{id.project}/{id." + + "domain}/{id.name}:\001*\222AC\032ATerminate the a" + + "ctive workflow execution specified in th" + + "e request.\022\374\001\n\020GetNodeExecution\022\'.flytei" + + "dl.admin.NodeExecutionGetRequest\032\035.flyte" + + "idl.admin.NodeExecution\"\237\001\202\323\344\223\002p\022n/api/v" + + "1/node_executions/{id.execution_id.proje" + + "ct}/{id.execution_id.domain}/{id.executi" + + "on_id.name}/{id.node_id}\222A&\032$Retrieve an" + + " existing node execution.\022\232\002\n\022ListNodeEx" + + "ecutions\022(.flyteidl.admin.NodeExecutionL" + + "istRequest\032!.flyteidl.admin.NodeExecutio" + + "nList\"\266\001\202\323\344\223\002u\022s/api/v1/node_executions/" + + "{workflow_execution_id.project}/{workflo" + + "w_execution_id.domain}/{workflow_executi" + + "on_id.name}\222A8\0326Fetch existing node exec" + + "utions matching input filters.\022\357\004\n\031ListN" + + "odeExecutionsForTask\022/.flyteidl.admin.No" + + "deExecutionForTaskListRequest\032!.flyteidl" + + ".admin.NodeExecutionList\"\375\003\202\323\344\223\002\254\003\022\251\003/ap" + + "i/v1/children/task_executions/{task_exec" + + "ution_id.node_execution_id.execution_id." + + "project}/{task_execution_id.node_executi" + + "on_id.execution_id.domain}/{task_executi" + + "on_id.node_execution_id.execution_id.nam" + + "e}/{task_execution_id.node_execution_id." + + "node_id}/{task_execution_id.task_id.proj" + + "ect}/{task_execution_id.task_id.domain}/" + + "{task_execution_id.task_id.name}/{task_e" + + "xecution_id.task_id.version}/{task_execu" + + "tion_id.retry_attempt}\222AG\032EFetch child n" + + "ode executions launched by the specified" + + " task execution.\022\263\002\n\024GetNodeExecutionDat" + + "a\022+.flyteidl.admin.NodeExecutionGetDataR" + + "equest\032,.flyteidl.admin.NodeExecutionGet" + + "DataResponse\"\277\001\202\323\344\223\002u\022s/api/v1/data/node" + + "_executions/{id.execution_id.project}/{i" + + "d.execution_id.domain}/{id.execution_id." + + "name}/{id.node_id}\222AA\032?Retrieve input an" + + "d output data from an existing node exec" + + "ution.\022\227\001\n\017RegisterProject\022&.flyteidl.ad" + + "min.ProjectRegisterRequest\032\'.flyteidl.ad" + + "min.ProjectRegisterResponse\"3\202\323\344\223\002\025\"\020/ap" + + "i/v1/projects:\001*\222A\025\032\023Register a project." + + "\022\207\001\n\rUpdateProject\022\027.flyteidl.admin.Proj" + + "ect\032%.flyteidl.admin.ProjectUpdateRespon" + + "se\"6\202\323\344\223\002\032\032\025/api/v1/projects/{id}:\001*\222A\023\032" + + "\021Update a project.\022\205\001\n\014ListProjects\022\".fl" + + "yteidl.admin.ProjectListRequest\032\030.flytei" + + "dl.admin.Projects\"7\202\323\344\223\002\022\022\020/api/v1/proje" + + "cts\222A\034\032\032Fetch registered projects.\022\335\001\n\023C" + + "reateWorkflowEvent\022-.flyteidl.admin.Work" + + "flowExecutionEventRequest\032..flyteidl.adm" + + "in.WorkflowExecutionEventResponse\"g\202\323\344\223\002" + + "\035\"\030/api/v1/events/workflows:\001*\222AA\032?Creat" + + "e a workflow execution event recording a" + + " phase transition.\022\311\001\n\017CreateNodeEvent\022)" + + ".flyteidl.admin.NodeExecutionEventReques" + + "t\032*.flyteidl.admin.NodeExecutionEventRes" + + "ponse\"_\202\323\344\223\002\031\"\024/api/v1/events/nodes:\001*\222A" + + "=\032;Create a node execution event recordi" + + "ng a phase transition.\022\311\001\n\017CreateTaskEve" + + "nt\022).flyteidl.admin.TaskExecutionEventRe" + + "quest\032*.flyteidl.admin.TaskExecutionEven" + + "tResponse\"_\202\323\344\223\002\031\"\024/api/v1/events/tasks:" + + "\001*\222A=\032;Create a task execution event rec" + + "ording a phase transition.\022\251\003\n\020GetTaskEx" + + "ecution\022\'.flyteidl.admin.TaskExecutionGe" + + "tRequest\032\035.flyteidl.admin.TaskExecution\"" + + "\314\002\202\323\344\223\002\234\002\022\231\002/api/v1/task_executions/{id." + "node_execution_id.execution_id.project}/" + - "{node_execution_id.execution_id.domain}/" + - "{node_execution_id.execution_id.name}/{n" + - "ode_execution_id.node_id}\222A8\0326Fetch exis" + - "ting task executions matching input filt" + - "ers.\022\340\003\n\024GetTaskExecutionData\022+.flyteidl" + - ".admin.TaskExecutionGetDataRequest\032,.fly" + - "teidl.admin.TaskExecutionGetDataResponse" + - "\"\354\002\202\323\344\223\002\241\002\022\236\002/api/v1/data/task_execution" + - "s/{id.node_execution_id.execution_id.pro" + - "ject}/{id.node_execution_id.execution_id" + - ".domain}/{id.node_execution_id.execution" + - "_id.name}/{id.node_execution_id.node_id}" + - "/{id.task_id.project}/{id.task_id.domain" + - "}/{id.task_id.name}/{id.task_id.version}" + - "/{id.retry_attempt}\222AA\032?Retrieve input a" + - "nd output data from an existing task exe" + - "cution.\022\277\002\n\035UpdateProjectDomainAttribute" + - "s\0224.flyteidl.admin.ProjectDomainAttribut" + - "esUpdateRequest\0325.flyteidl.admin.Project" + - "DomainAttributesUpdateResponse\"\260\001\202\323\344\223\002O\032" + - "J/api/v1/project_domain_attributes/{attr" + - "ibutes.project}/{attributes.domain}:\001*\222A" + - "X\032VUpdate the customized resource attrib" + - "utes associated with a project-domain co" + - "mbination\022\237\002\n\032GetProjectDomainAttributes" + - "\0221.flyteidl.admin.ProjectDomainAttribute" + - "sGetRequest\0322.flyteidl.admin.ProjectDoma" + - "inAttributesGetResponse\"\231\001\202\323\344\223\0026\0224/api/v" + - "1/project_domain_attributes/{project}/{d" + - "omain}\222AZ\032XRetrieve the customized resou" + - "rce attributes associated with a project" + - "-domain combination\022\251\002\n\035DeleteProjectDom" + - "ainAttributes\0224.flyteidl.admin.ProjectDo" + - "mainAttributesDeleteRequest\0325.flyteidl.a" + - "dmin.ProjectDomainAttributesDeleteRespon" + - "se\"\232\001\202\323\344\223\0029*4/api/v1/project_domain_attr" + - "ibutes/{project}/{domain}:\001*\222AX\032VDelete " + - "the customized resource attributes assoc" + - "iated with a project-domain combination\022" + - "\316\002\n\030UpdateWorkflowAttributes\022/.flyteidl." + - "admin.WorkflowAttributesUpdateRequest\0320." + - "flyteidl.admin.WorkflowAttributesUpdateR" + - "esponse\"\316\001\202\323\344\223\002_\032Z/api/v1/workflow_attri" + - "butes/{attributes.project}/{attributes.d" + - "omain}/{attributes.workflow}:\001*\222Af\032dUpda" + - "te the customized resource attributes as" + - "sociated with a project, domain and work" + - "flow combination\022\243\002\n\025GetWorkflowAttribut" + - "es\022,.flyteidl.admin.WorkflowAttributesGe" + - "tRequest\032-.flyteidl.admin.WorkflowAttrib" + - "utesGetResponse\"\254\001\202\323\344\223\002;\0229/api/v1/workfl" + - "ow_attributes/{project}/{domain}/{workfl" + - "ow}\222Ah\032fRetrieve the customized resource" + - " attributes associated with a project, d" + - "omain and workflow combination\022\255\002\n\030Delet" + - "eWorkflowAttributes\022/.flyteidl.admin.Wor" + - "kflowAttributesDeleteRequest\0320.flyteidl." + - "admin.WorkflowAttributesDeleteResponse\"\255" + - "\001\202\323\344\223\002>*9/api/v1/workflow_attributes/{pr" + - "oject}/{domain}/{workflow}:\001*\222Af\032dDelete" + - " the customized resource attributes asso" + - "ciated with a project, domain and workfl" + - "ow combination\022\341\001\n\027ListMatchableAttribut" + - "es\022..flyteidl.admin.ListMatchableAttribu" + - "tesRequest\032/.flyteidl.admin.ListMatchabl" + - "eAttributesResponse\"e\202\323\344\223\002\036\022\034/api/v1/mat" + - "chable_attributes\222A>\032*" + + "9/api/v1/workflow_attributes/{project}/{" + + "domain}/{workflow}:\001*\222Af\032dDelete the cus" + + "tomized resource attributes associated w" + + "ith a project, domain and workflow combi" + + "nation\022\341\001\n\027ListMatchableAttributes\022..fly" + + "teidl.admin.ListMatchableAttributesReque" + + "st\032/.flyteidl.admin.ListMatchableAttribu" + + "tesResponse\"e\202\323\344\223\002\036\022\034/api/v1/matchable_a" + + "ttributes\222A>\032; + /** + * Calls RecoverExecution. + * @param request ExecutionRecoverRequest message or plain object + * @param callback Node-style callback called with the error, if any, and ExecutionCreateResponse + */ + public recoverExecution(request: flyteidl.admin.IExecutionRecoverRequest, callback: flyteidl.service.AdminService.RecoverExecutionCallback): void; + + /** + * Calls RecoverExecution. + * @param request ExecutionRecoverRequest message or plain object + * @returns Promise + */ + public recoverExecution(request: flyteidl.admin.IExecutionRecoverRequest): Promise; + /** * Calls GetExecution. * @param request WorkflowExecutionGetRequest message or plain object @@ -15048,6 +15128,13 @@ export namespace flyteidl { */ type RelaunchExecutionCallback = (error: (Error|null), response?: flyteidl.admin.ExecutionCreateResponse) => void; + /** + * Callback as used by {@link flyteidl.service.AdminService#recoverExecution}. + * @param error Error, if any + * @param [response] ExecutionCreateResponse + */ + type RecoverExecutionCallback = (error: (Error|null), response?: flyteidl.admin.ExecutionCreateResponse) => void; + /** * Callback as used by {@link flyteidl.service.AdminService#getExecution}. * @param error Error, if any diff --git a/gen/pb-js/flyteidl.js b/gen/pb-js/flyteidl.js index cd9eb1eca..1c4089474 100644 --- a/gen/pb-js/flyteidl.js +++ b/gen/pb-js/flyteidl.js @@ -7936,6 +7936,7 @@ export const flyteidl = $root.flyteidl = (() => { * @property {number} SKIPPED=7 SKIPPED value * @property {number} TIMED_OUT=8 TIMED_OUT value * @property {number} DYNAMIC_RUNNING=9 DYNAMIC_RUNNING value + * @property {number} RECOVERED=10 RECOVERED value */ NodeExecution.Phase = (function() { const valuesById = {}, values = Object.create(valuesById); @@ -7949,6 +7950,7 @@ export const flyteidl = $root.flyteidl = (() => { values[valuesById[7] = "SKIPPED"] = 7; values[valuesById[8] = "TIMED_OUT"] = 8; values[valuesById[9] = "DYNAMIC_RUNNING"] = 9; + values[valuesById[10] = "RECOVERED"] = 10; return values; })(); @@ -13521,6 +13523,7 @@ export const flyteidl = $root.flyteidl = (() => { case 7: case 8: case 9: + case 10: break; } if (message.occurredAt != null && message.hasOwnProperty("occurredAt")) { @@ -19450,6 +19453,154 @@ export const flyteidl = $root.flyteidl = (() => { return ExecutionRelaunchRequest; })(); + admin.ExecutionRecoverRequest = (function() { + + /** + * Properties of an ExecutionRecoverRequest. + * @memberof flyteidl.admin + * @interface IExecutionRecoverRequest + * @property {flyteidl.core.IWorkflowExecutionIdentifier|null} [id] ExecutionRecoverRequest id + * @property {string|null} [name] ExecutionRecoverRequest name + * @property {flyteidl.admin.IExecutionMetadata|null} [metadata] ExecutionRecoverRequest metadata + */ + + /** + * Constructs a new ExecutionRecoverRequest. + * @memberof flyteidl.admin + * @classdesc Represents an ExecutionRecoverRequest. + * @implements IExecutionRecoverRequest + * @constructor + * @param {flyteidl.admin.IExecutionRecoverRequest=} [properties] Properties to set + */ + function ExecutionRecoverRequest(properties) { + if (properties) + for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExecutionRecoverRequest id. + * @member {flyteidl.core.IWorkflowExecutionIdentifier|null|undefined} id + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @instance + */ + ExecutionRecoverRequest.prototype.id = null; + + /** + * ExecutionRecoverRequest name. + * @member {string} name + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @instance + */ + ExecutionRecoverRequest.prototype.name = ""; + + /** + * ExecutionRecoverRequest metadata. + * @member {flyteidl.admin.IExecutionMetadata|null|undefined} metadata + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @instance + */ + ExecutionRecoverRequest.prototype.metadata = null; + + /** + * Creates a new ExecutionRecoverRequest instance using the specified properties. + * @function create + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @static + * @param {flyteidl.admin.IExecutionRecoverRequest=} [properties] Properties to set + * @returns {flyteidl.admin.ExecutionRecoverRequest} ExecutionRecoverRequest instance + */ + ExecutionRecoverRequest.create = function create(properties) { + return new ExecutionRecoverRequest(properties); + }; + + /** + * Encodes the specified ExecutionRecoverRequest message. Does not implicitly {@link flyteidl.admin.ExecutionRecoverRequest.verify|verify} messages. + * @function encode + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @static + * @param {flyteidl.admin.IExecutionRecoverRequest} message ExecutionRecoverRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecutionRecoverRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + $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 2, wireType 2 =*/18).string(message.name); + if (message.metadata != null && message.hasOwnProperty("metadata")) + $root.flyteidl.admin.ExecutionMetadata.encode(message.metadata, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Decodes an ExecutionRecoverRequest message from the specified reader or buffer. + * @function decode + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {flyteidl.admin.ExecutionRecoverRequest} ExecutionRecoverRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecutionRecoverRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.flyteidl.admin.ExecutionRecoverRequest(); + while (reader.pos < end) { + let tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = $root.flyteidl.core.WorkflowExecutionIdentifier.decode(reader, reader.uint32()); + break; + case 2: + message.name = reader.string(); + break; + case 3: + message.metadata = $root.flyteidl.admin.ExecutionMetadata.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Verifies an ExecutionRecoverRequest message. + * @function verify + * @memberof flyteidl.admin.ExecutionRecoverRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ExecutionRecoverRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) { + let error = $root.flyteidl.core.WorkflowExecutionIdentifier.verify(message.id); + if (error) + return "id." + error; + } + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) { + let error = $root.flyteidl.admin.ExecutionMetadata.verify(message.metadata); + if (error) + return "metadata." + error; + } + return null; + }; + + return ExecutionRecoverRequest; + })(); + admin.ExecutionCreateResponse = (function() { /** @@ -20912,6 +21063,7 @@ export const flyteidl = $root.flyteidl = (() => { case 2: case 3: case 4: + case 5: break; } if (message.principal != null && message.hasOwnProperty("principal")) @@ -20952,6 +21104,7 @@ export const flyteidl = $root.flyteidl = (() => { * @property {number} SYSTEM=2 SYSTEM value * @property {number} RELAUNCH=3 RELAUNCH value * @property {number} CHILD_WORKFLOW=4 CHILD_WORKFLOW value + * @property {number} RECOVERED=5 RECOVERED value */ ExecutionMetadata.ExecutionMode = (function() { const valuesById = {}, values = Object.create(valuesById); @@ -20960,6 +21113,7 @@ export const flyteidl = $root.flyteidl = (() => { values[valuesById[2] = "SYSTEM"] = 2; values[valuesById[3] = "RELAUNCH"] = 3; values[valuesById[4] = "CHILD_WORKFLOW"] = 4; + values[valuesById[5] = "RECOVERED"] = 5; return values; })(); @@ -27184,6 +27338,7 @@ export const flyteidl = $root.flyteidl = (() => { case 7: case 8: case 9: + case 10: break; } if (message.startedAt != null && message.hasOwnProperty("startedAt")) { @@ -34495,6 +34650,39 @@ export const flyteidl = $root.flyteidl = (() => { * @variation 2 */ + /** + * Callback as used by {@link flyteidl.service.AdminService#recoverExecution}. + * @memberof flyteidl.service.AdminService + * @typedef RecoverExecutionCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {flyteidl.admin.ExecutionCreateResponse} [response] ExecutionCreateResponse + */ + + /** + * Calls RecoverExecution. + * @function recoverExecution + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IExecutionRecoverRequest} request ExecutionRecoverRequest message or plain object + * @param {flyteidl.service.AdminService.RecoverExecutionCallback} callback Node-style callback called with the error, if any, and ExecutionCreateResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(AdminService.prototype.recoverExecution = function recoverExecution(request, callback) { + return this.rpcCall(recoverExecution, $root.flyteidl.admin.ExecutionRecoverRequest, $root.flyteidl.admin.ExecutionCreateResponse, request, callback); + }, "name", { value: "RecoverExecution" }); + + /** + * Calls RecoverExecution. + * @function recoverExecution + * @memberof flyteidl.service.AdminService + * @instance + * @param {flyteidl.admin.IExecutionRecoverRequest} request ExecutionRecoverRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + /** * Callback as used by {@link flyteidl.service.AdminService#getExecution}. * @memberof flyteidl.service.AdminService diff --git a/gen/pb_python/flyteidl/admin/execution_pb2.py b/gen/pb_python/flyteidl/admin/execution_pb2.py index 7a6634509..79ddb1bc2 100644 --- a/gen/pb_python/flyteidl/admin/execution_pb2.py +++ b/gen/pb_python/flyteidl/admin/execution_pb2.py @@ -27,7 +27,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\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\"\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\"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\"\xeb\x04\n\x10\x45xecutionClosure\x12\x31\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobH\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\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.IdentifierB\x0f\n\routput_result\"+\n\x0eSystemMetadata\x12\x19\n\x11\x65xecution_cluster\x18\x01 \x01(\t\"\xcb\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\"X\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\"G\n\x10NotificationList\x12\x33\n\rnotifications\x18\x01 \x03(\x0b\x32\x1c.flyteidl.admin.Notification\"\xb0\x04\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\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.LiteralMapB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') + serialized_pb=_b('\n\x1e\x66lyteidl/admin/execution.proto\x12\x0e\x66lyteidl.admin\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\"\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\"\xeb\x04\n\x10\x45xecutionClosure\x12\x31\n\x07outputs\x18\x01 \x01(\x0b\x32\x1e.flyteidl.admin.LiteralMapBlobH\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\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.IdentifierB\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\"\xb0\x04\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\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.LiteralMapB7Z5github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/adminb\x06proto3') , dependencies=[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,]) @@ -59,11 +59,15 @@ name='CHILD_WORKFLOW', index=4, number=4, serialized_options=None, type=None), + _descriptor.EnumValueDescriptor( + name='RECOVERED', index=5, number=5, + serialized_options=None, + type=None), ], containing_type=None, serialized_options=None, - serialized_start=2122, - serialized_end=2210, + serialized_start=2273, + serialized_end=2376, ) _sym_db.RegisterEnumDescriptor(_EXECUTIONMETADATA_EXECUTIONMODE) @@ -165,6 +169,51 @@ ) +_EXECUTIONRECOVERREQUEST = _descriptor.Descriptor( + name='ExecutionRecoverRequest', + full_name='flyteidl.admin.ExecutionRecoverRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='flyteidl.admin.ExecutionRecoverRequest.id', 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='name', full_name='flyteidl.admin.ExecutionRecoverRequest.name', 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='metadata', full_name='flyteidl.admin.ExecutionRecoverRequest.metadata', index=2, + number=3, 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), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=528, + serialized_end=676, +) + + _EXECUTIONCREATERESPONSE = _descriptor.Descriptor( name='ExecutionCreateResponse', full_name='flyteidl.admin.ExecutionCreateResponse', @@ -191,8 +240,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=527, - serialized_end=608, + serialized_start=678, + serialized_end=759, ) @@ -222,8 +271,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=610, - serialized_end=695, + serialized_start=761, + serialized_end=846, ) @@ -267,8 +316,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=698, - serialized_end=861, + serialized_start=849, + serialized_end=1012, ) @@ -305,8 +354,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=863, - serialized_end=940, + serialized_start=1014, + serialized_end=1091, ) @@ -346,8 +395,8 @@ name='data', full_name='flyteidl.admin.LiteralMapBlob.data', index=0, containing_type=None, fields=[]), ], - serialized_start=942, - serialized_end=1030, + serialized_start=1093, + serialized_end=1181, ) @@ -384,8 +433,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1032, - serialized_end=1081, + serialized_start=1183, + serialized_end=1232, ) @@ -495,8 +544,8 @@ name='output_result', full_name='flyteidl.admin.ExecutionClosure.output_result', index=0, containing_type=None, fields=[]), ], - serialized_start=1084, - serialized_end=1703, + serialized_start=1235, + serialized_end=1854, ) @@ -526,8 +575,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1705, - serialized_end=1748, + serialized_start=1856, + serialized_end=1899, ) @@ -600,8 +649,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1751, - serialized_end=2210, + serialized_start=1902, + serialized_end=2376, ) @@ -631,8 +680,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2212, - serialized_end=2283, + serialized_start=2378, + serialized_end=2449, ) @@ -735,8 +784,8 @@ name='notification_overrides', full_name='flyteidl.admin.ExecutionSpec.notification_overrides', index=0, containing_type=None, fields=[]), ], - serialized_start=2286, - serialized_end=2846, + serialized_start=2452, + serialized_end=3012, ) @@ -773,8 +822,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2848, - serialized_end=2946, + serialized_start=3014, + serialized_end=3112, ) @@ -797,8 +846,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2948, - serialized_end=2976, + serialized_start=3114, + serialized_end=3142, ) @@ -828,8 +877,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2978, - serialized_end=3067, + serialized_start=3144, + serialized_end=3233, ) @@ -880,13 +929,15 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3070, - serialized_end=3292, + serialized_start=3236, + serialized_end=3458, ) _EXECUTIONCREATEREQUEST.fields_by_name['spec'].message_type = _EXECUTIONSPEC _EXECUTIONCREATEREQUEST.fields_by_name['inputs'].message_type = flyteidl_dot_core_dot_literals__pb2._LITERALMAP _EXECUTIONRELAUNCHREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._WORKFLOWEXECUTIONIDENTIFIER +_EXECUTIONRECOVERREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._WORKFLOWEXECUTIONIDENTIFIER +_EXECUTIONRECOVERREQUEST.fields_by_name['metadata'].message_type = _EXECUTIONMETADATA _EXECUTIONCREATERESPONSE.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._WORKFLOWEXECUTIONIDENTIFIER _WORKFLOWEXECUTIONGETREQUEST.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._WORKFLOWEXECUTIONIDENTIFIER _EXECUTION.fields_by_name['id'].message_type = flyteidl_dot_core_dot_identifier__pb2._WORKFLOWEXECUTIONIDENTIFIER @@ -953,6 +1004,7 @@ _WORKFLOWEXECUTIONGETDATARESPONSE.fields_by_name['full_outputs'].message_type = flyteidl_dot_core_dot_literals__pb2._LITERALMAP DESCRIPTOR.message_types_by_name['ExecutionCreateRequest'] = _EXECUTIONCREATEREQUEST DESCRIPTOR.message_types_by_name['ExecutionRelaunchRequest'] = _EXECUTIONRELAUNCHREQUEST +DESCRIPTOR.message_types_by_name['ExecutionRecoverRequest'] = _EXECUTIONRECOVERREQUEST DESCRIPTOR.message_types_by_name['ExecutionCreateResponse'] = _EXECUTIONCREATERESPONSE DESCRIPTOR.message_types_by_name['WorkflowExecutionGetRequest'] = _WORKFLOWEXECUTIONGETREQUEST DESCRIPTOR.message_types_by_name['Execution'] = _EXECUTION @@ -984,6 +1036,13 @@ )) _sym_db.RegisterMessage(ExecutionRelaunchRequest) +ExecutionRecoverRequest = _reflection.GeneratedProtocolMessageType('ExecutionRecoverRequest', (_message.Message,), dict( + DESCRIPTOR = _EXECUTIONRECOVERREQUEST, + __module__ = 'flyteidl.admin.execution_pb2' + # @@protoc_insertion_point(class_scope:flyteidl.admin.ExecutionRecoverRequest) + )) +_sym_db.RegisterMessage(ExecutionRecoverRequest) + ExecutionCreateResponse = _reflection.GeneratedProtocolMessageType('ExecutionCreateResponse', (_message.Message,), dict( DESCRIPTOR = _EXECUTIONCREATERESPONSE, __module__ = 'flyteidl.admin.execution_pb2' diff --git a/gen/pb_python/flyteidl/core/execution_pb2.py b/gen/pb_python/flyteidl/core/execution_pb2.py index d77f1cbff..43ddabfeb 100644 --- a/gen/pb_python/flyteidl/core/execution_pb2.py +++ b/gen/pb_python/flyteidl/core/execution_pb2.py @@ -21,7 +21,7 @@ package='flyteidl.core', syntax='proto3', serialized_options=_b('Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/core'), - serialized_pb=_b('\n\x1d\x66lyteidl/core/execution.proto\x12\rflyteidl.core\x1a\x1egoogle/protobuf/duration.proto\"\x99\x01\n\x11WorkflowExecution\"\x83\x01\n\x05Phase\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\x0e\n\nSUCCEEDING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x12\x0b\n\x07\x46\x41ILING\x10\x05\x12\n\n\x06\x46\x41ILED\x10\x06\x12\x0b\n\x07\x41\x42ORTED\x10\x07\x12\r\n\tTIMED_OUT\x10\x08\"\xa7\x01\n\rNodeExecution\"\x95\x01\n\x05Phase\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07\x46\x41ILING\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05\x12\x0b\n\x07\x41\x42ORTED\x10\x06\x12\x0b\n\x07SKIPPED\x10\x07\x12\r\n\tTIMED_OUT\x10\x08\x12\x13\n\x0f\x44YNAMIC_RUNNING\x10\t\"\x96\x01\n\rTaskExecution\"\x84\x01\n\x05Phase\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07\x41\x42ORTED\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05\x12\x10\n\x0cINITIALIZING\x10\x06\x12\x19\n\x15WAITING_FOR_RESOURCES\x10\x07\"\xa9\x01\n\x0e\x45xecutionError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x11\n\terror_uri\x18\x03 \x01(\t\x12\x35\n\x04kind\x18\x04 \x01(\x0e\x32\'.flyteidl.core.ExecutionError.ErrorKind\".\n\tErrorKind\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04USER\x10\x01\x12\n\n\x06SYSTEM\x10\x02\"\xbb\x01\n\x07TaskLog\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12<\n\x0emessage_format\x18\x03 \x01(\x0e\x32$.flyteidl.core.TaskLog.MessageFormat\x12&\n\x03ttl\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"/\n\rMessageFormat\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03\x43SV\x10\x01\x12\x08\n\x04JSON\x10\x02\"J\n\x14QualityOfServiceSpec\x12\x32\n\x0fqueueing_budget\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xc2\x01\n\x10QualityOfService\x12\x34\n\x04tier\x18\x01 \x01(\x0e\x32$.flyteidl.core.QualityOfService.TierH\x00\x12\x33\n\x04spec\x18\x02 \x01(\x0b\x32#.flyteidl.core.QualityOfServiceSpecH\x00\"4\n\x04Tier\x12\r\n\tUNDEFINED\x10\x00\x12\x08\n\x04HIGH\x10\x01\x12\n\n\x06MEDIUM\x10\x02\x12\x07\n\x03LOW\x10\x03\x42\r\n\x0b\x64\x65signationB6Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/coreb\x06proto3') + serialized_pb=_b('\n\x1d\x66lyteidl/core/execution.proto\x12\rflyteidl.core\x1a\x1egoogle/protobuf/duration.proto\"\x99\x01\n\x11WorkflowExecution\"\x83\x01\n\x05Phase\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\x0e\n\nSUCCEEDING\x10\x03\x12\r\n\tSUCCEEDED\x10\x04\x12\x0b\n\x07\x46\x41ILING\x10\x05\x12\n\n\x06\x46\x41ILED\x10\x06\x12\x0b\n\x07\x41\x42ORTED\x10\x07\x12\r\n\tTIMED_OUT\x10\x08\"\xb6\x01\n\rNodeExecution\"\xa4\x01\n\x05Phase\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07\x46\x41ILING\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05\x12\x0b\n\x07\x41\x42ORTED\x10\x06\x12\x0b\n\x07SKIPPED\x10\x07\x12\r\n\tTIMED_OUT\x10\x08\x12\x13\n\x0f\x44YNAMIC_RUNNING\x10\t\x12\r\n\tRECOVERED\x10\n\"\x96\x01\n\rTaskExecution\"\x84\x01\n\x05Phase\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06QUEUED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\r\n\tSUCCEEDED\x10\x03\x12\x0b\n\x07\x41\x42ORTED\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05\x12\x10\n\x0cINITIALIZING\x10\x06\x12\x19\n\x15WAITING_FOR_RESOURCES\x10\x07\"\xa9\x01\n\x0e\x45xecutionError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\t\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x11\n\terror_uri\x18\x03 \x01(\t\x12\x35\n\x04kind\x18\x04 \x01(\x0e\x32\'.flyteidl.core.ExecutionError.ErrorKind\".\n\tErrorKind\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04USER\x10\x01\x12\n\n\x06SYSTEM\x10\x02\"\xbb\x01\n\x07TaskLog\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12<\n\x0emessage_format\x18\x03 \x01(\x0e\x32$.flyteidl.core.TaskLog.MessageFormat\x12&\n\x03ttl\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"/\n\rMessageFormat\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03\x43SV\x10\x01\x12\x08\n\x04JSON\x10\x02\"J\n\x14QualityOfServiceSpec\x12\x32\n\x0fqueueing_budget\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xc2\x01\n\x10QualityOfService\x12\x34\n\x04tier\x18\x01 \x01(\x0e\x32$.flyteidl.core.QualityOfService.TierH\x00\x12\x33\n\x04spec\x18\x02 \x01(\x0b\x32#.flyteidl.core.QualityOfServiceSpecH\x00\"4\n\x04Tier\x12\r\n\tUNDEFINED\x10\x00\x12\x08\n\x04HIGH\x10\x01\x12\n\n\x06MEDIUM\x10\x02\x12\x07\n\x03LOW\x10\x03\x42\r\n\x0b\x64\x65signationB6Z4github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/coreb\x06proto3') , dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,]) @@ -123,11 +123,15 @@ name='DYNAMIC_RUNNING', index=9, number=9, serialized_options=None, type=None), + _descriptor.EnumValueDescriptor( + name='RECOVERED', index=10, number=10, + serialized_options=None, + type=None), ], containing_type=None, serialized_options=None, serialized_start=255, - serialized_end=404, + serialized_end=419, ) _sym_db.RegisterEnumDescriptor(_NODEEXECUTION_PHASE) @@ -172,8 +176,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=425, - serialized_end=557, + serialized_start=440, + serialized_end=572, ) _sym_db.RegisterEnumDescriptor(_TASKEXECUTION_PHASE) @@ -198,8 +202,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=683, - serialized_end=729, + serialized_start=698, + serialized_end=744, ) _sym_db.RegisterEnumDescriptor(_EXECUTIONERROR_ERRORKIND) @@ -224,8 +228,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=872, - serialized_end=919, + serialized_start=887, + serialized_end=934, ) _sym_db.RegisterEnumDescriptor(_TASKLOG_MESSAGEFORMAT) @@ -254,8 +258,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=1125, - serialized_end=1177, + serialized_start=1140, + serialized_end=1192, ) _sym_db.RegisterEnumDescriptor(_QUALITYOFSERVICE_TIER) @@ -306,7 +310,7 @@ oneofs=[ ], serialized_start=237, - serialized_end=404, + serialized_end=419, ) @@ -330,8 +334,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=407, - serialized_end=557, + serialized_start=422, + serialized_end=572, ) @@ -383,8 +387,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=560, - serialized_end=729, + serialized_start=575, + serialized_end=744, ) @@ -436,8 +440,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=732, - serialized_end=919, + serialized_start=747, + serialized_end=934, ) @@ -467,8 +471,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=921, - serialized_end=995, + serialized_start=936, + serialized_end=1010, ) @@ -509,8 +513,8 @@ name='designation', full_name='flyteidl.core.QualityOfService.designation', index=0, containing_type=None, fields=[]), ], - serialized_start=998, - serialized_end=1192, + serialized_start=1013, + serialized_end=1207, ) _WORKFLOWEXECUTION_PHASE.containing_type = _WORKFLOWEXECUTION diff --git a/gen/pb_python/flyteidl/service/admin_pb2.py b/gen/pb_python/flyteidl/service/admin_pb2.py index effa15895..3d988aa60 100644 --- a/gen/pb_python/flyteidl/service/admin_pb2.py +++ b/gen/pb_python/flyteidl/service/admin_pb2.py @@ -35,7 +35,7 @@ package='flyteidl.service', syntax='proto3', serialized_options=_b('Z7github.com/flyteorg/flyteidl/gen/pb-go/flyteidl/service'), - serialized_pb=_b('\n\x1c\x66lyteidl/service/admin.proto\x12\x10\x66lyteidl.service\x1a\x1cgoogle/api/annotations.proto\x1a\x1c\x66lyteidl/admin/project.proto\x1a.flyteidl/admin/project_domain_attributes.proto\x1a\x19\x66lyteidl/admin/task.proto\x1a\x1d\x66lyteidl/admin/workflow.proto\x1a(flyteidl/admin/workflow_attributes.proto\x1a flyteidl/admin/launch_plan.proto\x1a\x1a\x66lyteidl/admin/event.proto\x1a\x1e\x66lyteidl/admin/execution.proto\x1a\'flyteidl/admin/matchable_resource.proto\x1a#flyteidl/admin/node_execution.proto\x1a#flyteidl/admin/task_execution.proto\x1a\x1c\x66lyteidl/admin/version.proto\x1a\x1b\x66lyteidl/admin/common.proto\x1a,protoc-gen-swagger/options/annotations.proto2\xa5\x61\n\x0c\x41\x64minService\x12\xc5\x02\n\nCreateTask\x12!.flyteidl.admin.TaskCreateRequest\x1a\".flyteidl.admin.TaskCreateResponse\"\xef\x01\x82\xd3\xe4\x93\x02\x12\"\r/api/v1/tasks:\x01*\x92\x41\xd3\x01\x1a&Create and register a task definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xb2\x01\n\x07GetTask\x12 .flyteidl.admin.ObjectGetRequest\x1a\x14.flyteidl.admin.Task\"o\x82\xd3\xe4\x93\x02?\x12=/api/v1/tasks/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41\'\x1a%Retrieve an existing task definition.\x12\xde\x01\n\x0bListTaskIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"r\x82\xd3\xe4\x93\x02%\x12#/api/v1/task_ids/{project}/{domain}\x92\x41\x44\x1a\x42\x46\x65tch existing task definition identifiers matching input filters.\x12\xeb\x01\n\tListTasks\x12#.flyteidl.admin.ResourceListRequest\x1a\x18.flyteidl.admin.TaskList\"\x9e\x01\x82\xd3\xe4\x93\x02\\\x12\x30/api/v1/tasks/{id.project}/{id.domain}/{id.name}Z(\x12&/api/v1/tasks/{id.project}/{id.domain}\x92\x41\x39\x1a\x37\x46\x65tch existing task definitions matching input filters.\x12\xd9\x02\n\x0e\x43reateWorkflow\x12%.flyteidl.admin.WorkflowCreateRequest\x1a&.flyteidl.admin.WorkflowCreateResponse\"\xf7\x01\x82\xd3\xe4\x93\x02\x16\"\x11/api/v1/workflows:\x01*\x92\x41\xd7\x01\x1a*Create and register a workflow definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xc2\x01\n\x0bGetWorkflow\x12 .flyteidl.admin.ObjectGetRequest\x1a\x18.flyteidl.admin.Workflow\"w\x82\xd3\xe4\x93\x02\x43\x12\x41/api/v1/workflows/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41+\x1a)Retrieve an existing workflow definition.\x12\xed\x01\n\x0fListWorkflowIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"}\x82\xd3\xe4\x93\x02)\x12\'/api/v1/workflow_ids/{project}/{domain}\x92\x41K\x1aIFetch an existing workflow definition identifiers matching input filters.\x12\xff\x01\n\rListWorkflows\x12#.flyteidl.admin.ResourceListRequest\x1a\x1c.flyteidl.admin.WorkflowList\"\xaa\x01\x82\xd3\xe4\x93\x02\x64\x12\x34/api/v1/workflows/{id.project}/{id.domain}/{id.name}Z,\x12*/api/v1/workflows/{id.project}/{id.domain}\x92\x41=\x1a;Fetch existing workflow definitions matching input filters.\x12\xe5\x02\n\x10\x43reateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanCreateRequest\x1a(.flyteidl.admin.LaunchPlanCreateResponse\"\xfd\x01\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/launch_plans:\x01*\x92\x41\xda\x01\x1a-Create and register a launch plan definition.JB\n\x03\x34\x30\x30\x12;\n9Returned for bad request that may have failed validation.Je\n\x03\x34\x30\x39\x12^\n\\Returned for a request that references an identical entity that has already been registered.\x12\xcc\x01\n\rGetLaunchPlan\x12 .flyteidl.admin.ObjectGetRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"}\x82\xd3\xe4\x93\x02\x46\x12\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}\x92\x41.\x1a,Retrieve an existing launch plan definition.\x12\xf3\x01\n\x13GetActiveLaunchPlan\x12\'.flyteidl.admin.ActiveLaunchPlanRequest\x1a\x1a.flyteidl.admin.LaunchPlan\"\x96\x01\x82\xd3\xe4\x93\x02@\x12>/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x82\xd3\xe4\x93\x02j\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x82\xd3\xe4\x93\x02I\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}:\x01*\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/executions:\x01*\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/executions/relaunch:\x01*\x92\x41 \x1a\x1eRelaunch a workflow execution.\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x92\x41*\x1a(Retrieve an existing workflow execution.\x12\x82\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8a\x01\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x92\x41\x45\x1a\x43Retrieve input and output data from an existing workflow execution.\x12\xc8\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"r\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x92\x41<\x1a:Fetch existing workflow executions matching input filters.\x12\xf4\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x86\x01\x82\xd3\xe4\x93\x02:*5/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41\x43\x1a\x41Terminate the active workflow execution specified in the request.\x12\xfc\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x9f\x01\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41&\x1a$Retrieve an existing node execution.\x12\x9a\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb6\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x92\x41\x38\x1a\x36\x46\x65tch existing node executions matching input filters.\x12\xef\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xfd\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x92\x41G\x1a\x45\x46\x65tch child node executions launched by the specified task execution.\x12\xb3\x02\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\xbf\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41\x41\x1a?Retrieve input and output data from an existing node execution.\x12\x97\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"3\x82\xd3\xe4\x93\x02\x15\"\x10/api/v1/projects:\x01*\x92\x41\x15\x1a\x13Register a project.\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x82\xd3\xe4\x93\x02\x1a\x1a\x15/api/v1/projects/{id}:\x01*\x92\x41\x13\x1a\x11Update a project.\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/events/workflows:\x01*\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/nodes:\x01*\x92\x41=\x1a;Create a node execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/tasks:\x01*\x92\x41=\x1a;Create a task execution event recording a phase transition.\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41&\x1a$Retrieve an existing task execution.\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x82\xd3\xe4\x93\x02O\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}:\x01*\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x82\xd3\xe4\x93\x02\x39*4/api/v1/project_domain_attributes/{project}/{domain}:\x01*\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x82\xd3\xe4\x93\x02_\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}:\x01*\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x82\xd3\xe4\x93\x02>*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}:\x01*\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x92\x41>\x1a/api/v1/active_launch_plans/{id.project}/{id.domain}/{id.name}\x92\x41M\x1aKRetrieve the active launch plan version specified by input request filters.\x12\xeb\x01\n\x15ListActiveLaunchPlans\x12+.flyteidl.admin.ActiveLaunchPlanListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\x84\x01\x82\xd3\xe4\x93\x02\x30\x12./api/v1/active_launch_plans/{project}/{domain}\x92\x41K\x1aIFetch the active launch plan versions specified by input request filters.\x12\xf3\x01\n\x11ListLaunchPlanIds\x12\x30.flyteidl.admin.NamedEntityIdentifierListRequest\x1a).flyteidl.admin.NamedEntityIdentifierList\"\x80\x01\x82\xd3\xe4\x93\x02,\x12*/api/v1/launch_plan_ids/{project}/{domain}\x92\x41K\x1aIFetch existing launch plan definition identifiers matching input filters.\x12\x8c\x02\n\x0fListLaunchPlans\x12#.flyteidl.admin.ResourceListRequest\x1a\x1e.flyteidl.admin.LaunchPlanList\"\xb3\x01\x82\xd3\xe4\x93\x02j\x12\x37/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}Z/\x12-/api/v1/launch_plans/{id.project}/{id.domain}\x92\x41@\x1a>Fetch existing launch plan definitions matching input filters.\x12\xc0\x06\n\x10UpdateLaunchPlan\x12\'.flyteidl.admin.LaunchPlanUpdateRequest\x1a(.flyteidl.admin.LaunchPlanUpdateResponse\"\xd8\x05\x82\xd3\xe4\x93\x02I\x1a\x44/api/v1/launch_plans/{id.project}/{id.domain}/{id.name}/{id.version}:\x01*\x92\x41\x85\x05\x1a\x82\x05Update the status of an existing launch plan definition. At most one launch plan version for a given {project, domain, name} can be active at a time. If this call sets a launch plan to active and existing version is already active, the result of this call will be that the formerly active launch plan will be made inactive and specified launch plan in this request will be made active. In the event that the formerly active launch plan had a schedule associated it with it, this schedule will be disabled. If the reference launch plan in this request is being set to active and has a schedule associated with it, the schedule will be enabled.\x12\xa2\x01\n\x0f\x43reateExecution\x12&.flyteidl.admin.ExecutionCreateRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\">\x82\xd3\xe4\x93\x02\x17\"\x12/api/v1/executions:\x01*\x92\x41\x1e\x1a\x1c\x43reate a workflow execution.\x12\xb1\x01\n\x11RelaunchExecution\x12(.flyteidl.admin.ExecutionRelaunchRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"I\x82\xd3\xe4\x93\x02 \"\x1b/api/v1/executions/relaunch:\x01*\x92\x41 \x1a\x1eRelaunch a workflow execution.\x12\x9d\x05\n\x10RecoverExecution\x12\'.flyteidl.admin.ExecutionRecoverRequest\x1a\'.flyteidl.admin.ExecutionCreateResponse\"\xb6\x04\x82\xd3\xe4\x93\x02\x1f\"\x1a/api/v1/executions/recover:\x01*\x92\x41\x8d\x04\x1a\x8a\x04Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again.\x12\xc2\x01\n\x0cGetExecution\x12+.flyteidl.admin.WorkflowExecutionGetRequest\x1a\x19.flyteidl.admin.Execution\"j\x82\xd3\xe4\x93\x02\x37\x12\x35/api/v1/executions/{id.project}/{id.domain}/{id.name}\x92\x41*\x1a(Retrieve an existing workflow execution.\x12\x82\x02\n\x10GetExecutionData\x12/.flyteidl.admin.WorkflowExecutionGetDataRequest\x1a\x30.flyteidl.admin.WorkflowExecutionGetDataResponse\"\x8a\x01\x82\xd3\xe4\x93\x02<\x12:/api/v1/data/executions/{id.project}/{id.domain}/{id.name}\x92\x41\x45\x1a\x43Retrieve input and output data from an existing workflow execution.\x12\xc8\x01\n\x0eListExecutions\x12#.flyteidl.admin.ResourceListRequest\x1a\x1d.flyteidl.admin.ExecutionList\"r\x82\xd3\xe4\x93\x02-\x12+/api/v1/executions/{id.project}/{id.domain}\x92\x41<\x1a:Fetch existing workflow executions matching input filters.\x12\xf4\x01\n\x12TerminateExecution\x12).flyteidl.admin.ExecutionTerminateRequest\x1a*.flyteidl.admin.ExecutionTerminateResponse\"\x86\x01\x82\xd3\xe4\x93\x02:*5/api/v1/executions/{id.project}/{id.domain}/{id.name}:\x01*\x92\x41\x43\x1a\x41Terminate the active workflow execution specified in the request.\x12\xfc\x01\n\x10GetNodeExecution\x12\'.flyteidl.admin.NodeExecutionGetRequest\x1a\x1d.flyteidl.admin.NodeExecution\"\x9f\x01\x82\xd3\xe4\x93\x02p\x12n/api/v1/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41&\x1a$Retrieve an existing node execution.\x12\x9a\x02\n\x12ListNodeExecutions\x12(.flyteidl.admin.NodeExecutionListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xb6\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/node_executions/{workflow_execution_id.project}/{workflow_execution_id.domain}/{workflow_execution_id.name}\x92\x41\x38\x1a\x36\x46\x65tch existing node executions matching input filters.\x12\xef\x04\n\x19ListNodeExecutionsForTask\x12/.flyteidl.admin.NodeExecutionForTaskListRequest\x1a!.flyteidl.admin.NodeExecutionList\"\xfd\x03\x82\xd3\xe4\x93\x02\xac\x03\x12\xa9\x03/api/v1/children/task_executions/{task_execution_id.node_execution_id.execution_id.project}/{task_execution_id.node_execution_id.execution_id.domain}/{task_execution_id.node_execution_id.execution_id.name}/{task_execution_id.node_execution_id.node_id}/{task_execution_id.task_id.project}/{task_execution_id.task_id.domain}/{task_execution_id.task_id.name}/{task_execution_id.task_id.version}/{task_execution_id.retry_attempt}\x92\x41G\x1a\x45\x46\x65tch child node executions launched by the specified task execution.\x12\xb3\x02\n\x14GetNodeExecutionData\x12+.flyteidl.admin.NodeExecutionGetDataRequest\x1a,.flyteidl.admin.NodeExecutionGetDataResponse\"\xbf\x01\x82\xd3\xe4\x93\x02u\x12s/api/v1/data/node_executions/{id.execution_id.project}/{id.execution_id.domain}/{id.execution_id.name}/{id.node_id}\x92\x41\x41\x1a?Retrieve input and output data from an existing node execution.\x12\x97\x01\n\x0fRegisterProject\x12&.flyteidl.admin.ProjectRegisterRequest\x1a\'.flyteidl.admin.ProjectRegisterResponse\"3\x82\xd3\xe4\x93\x02\x15\"\x10/api/v1/projects:\x01*\x92\x41\x15\x1a\x13Register a project.\x12\x87\x01\n\rUpdateProject\x12\x17.flyteidl.admin.Project\x1a%.flyteidl.admin.ProjectUpdateResponse\"6\x82\xd3\xe4\x93\x02\x1a\x1a\x15/api/v1/projects/{id}:\x01*\x92\x41\x13\x1a\x11Update a project.\x12\x85\x01\n\x0cListProjects\x12\".flyteidl.admin.ProjectListRequest\x1a\x18.flyteidl.admin.Projects\"7\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/projects\x92\x41\x1c\x1a\x1a\x46\x65tch registered projects.\x12\xdd\x01\n\x13\x43reateWorkflowEvent\x12-.flyteidl.admin.WorkflowExecutionEventRequest\x1a..flyteidl.admin.WorkflowExecutionEventResponse\"g\x82\xd3\xe4\x93\x02\x1d\"\x18/api/v1/events/workflows:\x01*\x92\x41\x41\x1a?Create a workflow execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateNodeEvent\x12).flyteidl.admin.NodeExecutionEventRequest\x1a*.flyteidl.admin.NodeExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/nodes:\x01*\x92\x41=\x1a;Create a node execution event recording a phase transition.\x12\xc9\x01\n\x0f\x43reateTaskEvent\x12).flyteidl.admin.TaskExecutionEventRequest\x1a*.flyteidl.admin.TaskExecutionEventResponse\"_\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/events/tasks:\x01*\x92\x41=\x1a;Create a task execution event recording a phase transition.\x12\xa9\x03\n\x10GetTaskExecution\x12\'.flyteidl.admin.TaskExecutionGetRequest\x1a\x1d.flyteidl.admin.TaskExecution\"\xcc\x02\x82\xd3\xe4\x93\x02\x9c\x02\x12\x99\x02/api/v1/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41&\x1a$Retrieve an existing task execution.\x12\xd3\x02\n\x12ListTaskExecutions\x12(.flyteidl.admin.TaskExecutionListRequest\x1a!.flyteidl.admin.TaskExecutionList\"\xef\x01\x82\xd3\xe4\x93\x02\xad\x01\x12\xaa\x01/api/v1/task_executions/{node_execution_id.execution_id.project}/{node_execution_id.execution_id.domain}/{node_execution_id.execution_id.name}/{node_execution_id.node_id}\x92\x41\x38\x1a\x36\x46\x65tch existing task executions matching input filters.\x12\xe0\x03\n\x14GetTaskExecutionData\x12+.flyteidl.admin.TaskExecutionGetDataRequest\x1a,.flyteidl.admin.TaskExecutionGetDataResponse\"\xec\x02\x82\xd3\xe4\x93\x02\xa1\x02\x12\x9e\x02/api/v1/data/task_executions/{id.node_execution_id.execution_id.project}/{id.node_execution_id.execution_id.domain}/{id.node_execution_id.execution_id.name}/{id.node_execution_id.node_id}/{id.task_id.project}/{id.task_id.domain}/{id.task_id.name}/{id.task_id.version}/{id.retry_attempt}\x92\x41\x41\x1a?Retrieve input and output data from an existing task execution.\x12\xbf\x02\n\x1dUpdateProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesUpdateRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesUpdateResponse\"\xb0\x01\x82\xd3\xe4\x93\x02O\x1aJ/api/v1/project_domain_attributes/{attributes.project}/{attributes.domain}:\x01*\x92\x41X\x1aVUpdate the customized resource attributes associated with a project-domain combination\x12\x9f\x02\n\x1aGetProjectDomainAttributes\x12\x31.flyteidl.admin.ProjectDomainAttributesGetRequest\x1a\x32.flyteidl.admin.ProjectDomainAttributesGetResponse\"\x99\x01\x82\xd3\xe4\x93\x02\x36\x12\x34/api/v1/project_domain_attributes/{project}/{domain}\x92\x41Z\x1aXRetrieve the customized resource attributes associated with a project-domain combination\x12\xa9\x02\n\x1d\x44\x65leteProjectDomainAttributes\x12\x34.flyteidl.admin.ProjectDomainAttributesDeleteRequest\x1a\x35.flyteidl.admin.ProjectDomainAttributesDeleteResponse\"\x9a\x01\x82\xd3\xe4\x93\x02\x39*4/api/v1/project_domain_attributes/{project}/{domain}:\x01*\x92\x41X\x1aVDelete the customized resource attributes associated with a project-domain combination\x12\xce\x02\n\x18UpdateWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesUpdateRequest\x1a\x30.flyteidl.admin.WorkflowAttributesUpdateResponse\"\xce\x01\x82\xd3\xe4\x93\x02_\x1aZ/api/v1/workflow_attributes/{attributes.project}/{attributes.domain}/{attributes.workflow}:\x01*\x92\x41\x66\x1a\x64Update the customized resource attributes associated with a project, domain and workflow combination\x12\xa3\x02\n\x15GetWorkflowAttributes\x12,.flyteidl.admin.WorkflowAttributesGetRequest\x1a-.flyteidl.admin.WorkflowAttributesGetResponse\"\xac\x01\x82\xd3\xe4\x93\x02;\x12\x39/api/v1/workflow_attributes/{project}/{domain}/{workflow}\x92\x41h\x1a\x66Retrieve the customized resource attributes associated with a project, domain and workflow combination\x12\xad\x02\n\x18\x44\x65leteWorkflowAttributes\x12/.flyteidl.admin.WorkflowAttributesDeleteRequest\x1a\x30.flyteidl.admin.WorkflowAttributesDeleteResponse\"\xad\x01\x82\xd3\xe4\x93\x02>*9/api/v1/workflow_attributes/{project}/{domain}/{workflow}:\x01*\x92\x41\x66\x1a\x64\x44\x65lete the customized resource attributes associated with a project, domain and workflow combination\x12\xe1\x01\n\x17ListMatchableAttributes\x12..flyteidl.admin.ListMatchableAttributesRequest\x1a/.flyteidl.admin.ListMatchableAttributesResponse\"e\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/matchable_attributes\x92\x41>\x1a>> thread = api.recover_execution(body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param AdminExecutionRecoverRequest body: (required) + :return: AdminExecutionCreateResponse + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.recover_execution_with_http_info(body, **kwargs) # noqa: E501 + else: + (data) = self.recover_execution_with_http_info(body, **kwargs) # noqa: E501 + return data + + def recover_execution_with_http_info(self, body, **kwargs): # noqa: E501 + """Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. # noqa: E501 + + Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.recover_execution_with_http_info(body, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param AdminExecutionRecoverRequest body: (required) + :return: AdminExecutionCreateResponse + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['body'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method recover_execution" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'body' is set + if ('body' not in params or + params['body'] is None): + raise ValueError("Missing the required parameter `body` when calling `recover_execution`") # noqa: E501 + + collection_formats = {} + + path_params = {} + + query_params = [] + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = [] # noqa: E501 + + return self.api_client.call_api( + '/api/v1/executions/recover', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='AdminExecutionCreateResponse', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + def register_project(self, body, **kwargs): # noqa: E501 """Registers a :ref:`ref_flyteidl.admin.Project` with the Flyte deployment. # noqa: E501 diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py index 489414e3a..08c15e82c 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/__init__.py @@ -31,6 +31,7 @@ from flyteadmin.models.admin_execution_list import AdminExecutionList from flyteadmin.models.admin_execution_metadata import AdminExecutionMetadata from flyteadmin.models.admin_execution_queue_attributes import AdminExecutionQueueAttributes +from flyteadmin.models.admin_execution_recover_request import AdminExecutionRecoverRequest from flyteadmin.models.admin_execution_relaunch_request import AdminExecutionRelaunchRequest from flyteadmin.models.admin_execution_spec import AdminExecutionSpec from flyteadmin.models.admin_execution_terminate_request import AdminExecutionTerminateRequest diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_recover_request.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_recover_request.py new file mode 100644 index 000000000..acd856ada --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/admin_execution_recover_request.py @@ -0,0 +1,174 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +import pprint +import re # noqa: F401 + +import six + +from flyteadmin.models.admin_execution_metadata import AdminExecutionMetadata # noqa: F401,E501 +from flyteadmin.models.core_workflow_execution_identifier import CoreWorkflowExecutionIdentifier # noqa: F401,E501 + + +class AdminExecutionRecoverRequest(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'id': 'CoreWorkflowExecutionIdentifier', + 'name': 'str', + 'metadata': 'AdminExecutionMetadata' + } + + attribute_map = { + 'id': 'id', + 'name': 'name', + 'metadata': 'metadata' + } + + def __init__(self, id=None, name=None, metadata=None): # noqa: E501 + """AdminExecutionRecoverRequest - a model defined in Swagger""" # noqa: E501 + + self._id = None + self._name = None + self._metadata = None + self.discriminator = None + + if id is not None: + self.id = id + if name is not None: + self.name = name + if metadata is not None: + self.metadata = metadata + + @property + def id(self): + """Gets the id of this AdminExecutionRecoverRequest. # noqa: E501 + + Identifier of the workflow execution to recover. # noqa: E501 + + :return: The id of this AdminExecutionRecoverRequest. # noqa: E501 + :rtype: CoreWorkflowExecutionIdentifier + """ + return self._id + + @id.setter + def id(self, id): + """Sets the id of this AdminExecutionRecoverRequest. + + Identifier of the workflow execution to recover. # noqa: E501 + + :param id: The id of this AdminExecutionRecoverRequest. # noqa: E501 + :type: CoreWorkflowExecutionIdentifier + """ + + self._id = id + + @property + def name(self): + """Gets the name of this AdminExecutionRecoverRequest. # noqa: E501 + + + :return: The name of this AdminExecutionRecoverRequest. # noqa: E501 + :rtype: str + """ + return self._name + + @name.setter + def name(self, name): + """Sets the name of this AdminExecutionRecoverRequest. + + + :param name: The name of this AdminExecutionRecoverRequest. # noqa: E501 + :type: str + """ + + self._name = name + + @property + def metadata(self): + """Gets the metadata of this AdminExecutionRecoverRequest. # noqa: E501 + + Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. # noqa: E501 + + :return: The metadata of this AdminExecutionRecoverRequest. # noqa: E501 + :rtype: AdminExecutionMetadata + """ + return self._metadata + + @metadata.setter + def metadata(self, metadata): + """Sets the metadata of this AdminExecutionRecoverRequest. + + Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. # noqa: E501 + + :param metadata: The metadata of this AdminExecutionRecoverRequest. # noqa: E501 + :type: AdminExecutionMetadata + """ + + self._metadata = metadata + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(AdminExecutionRecoverRequest, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, AdminExecutionRecoverRequest): + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + """Returns true if both objects are not equal""" + return not self == other diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_node_execution_phase.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_node_execution_phase.py index f848e7b04..5b03e7e48 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_node_execution_phase.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/core_node_execution_phase.py @@ -36,6 +36,7 @@ class CoreNodeExecutionPhase(object): SKIPPED = "SKIPPED" TIMED_OUT = "TIMED_OUT" DYNAMIC_RUNNING = "DYNAMIC_RUNNING" + RECOVERED = "RECOVERED" """ Attributes: diff --git a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/execution_metadata_execution_mode.py b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/execution_metadata_execution_mode.py index 019691c09..cca95359f 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/execution_metadata_execution_mode.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/flyteadmin/models/execution_metadata_execution_mode.py @@ -31,6 +31,7 @@ class ExecutionMetadataExecutionMode(object): SYSTEM = "SYSTEM" RELAUNCH = "RELAUNCH" CHILD_WORKFLOW = "CHILD_WORKFLOW" + RECOVERED = "RECOVERED" """ Attributes: diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_execution_recover_request.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_execution_recover_request.py new file mode 100644 index 000000000..8bdff0915 --- /dev/null +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_execution_recover_request.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + flyteidl/service/admin.proto + + No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501 + + OpenAPI spec version: version not set + + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + + +from __future__ import absolute_import + +import unittest + +import flyteadmin +from flyteadmin.models.admin_execution_recover_request import AdminExecutionRecoverRequest # noqa: E501 +from flyteadmin.rest import ApiException + + +class TestAdminExecutionRecoverRequest(unittest.TestCase): + """AdminExecutionRecoverRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAdminExecutionRecoverRequest(self): + """Test AdminExecutionRecoverRequest""" + # FIXME: construct object with mandatory attributes with example values + # model = flyteadmin.models.admin_execution_recover_request.AdminExecutionRecoverRequest() # noqa: E501 + pass + + +if __name__ == '__main__': + unittest.main() diff --git a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py index 8c984e9c3..929af2852 100644 --- a/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py +++ b/gen/pb_python/flyteidl/service/flyteadmin/test/test_admin_service_api.py @@ -308,6 +308,13 @@ def test_list_workflows2(self): """ pass + def test_recover_execution(self): + """Test case for recover_execution + + Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. # noqa: E501 + """ + pass + def test_register_project(self): """Test case for register_project diff --git a/protos/docs/admin/admin.rst b/protos/docs/admin/admin.rst index 71036fe7a..d30f6a511 100644 --- a/protos/docs/admin/admin.rst +++ b/protos/docs/admin/admin.rst @@ -958,6 +958,29 @@ These attributes are assigned at launch time and do not change. +.. _ref_flyteidl.admin.ExecutionRecoverRequest: + +ExecutionRecoverRequest +------------------------------------------------------------------ + +Request to recover the referenced execution. + + + +.. csv-table:: ExecutionRecoverRequest type fields + :header: "Field", "Type", "Label", "Description" + :widths: auto + + "id", ":ref:`ref_flyteidl.core.WorkflowExecutionIdentifier`", "", "Identifier of the workflow execution to recover." + "name", ":ref:`ref_string`", "", "User provided value for the recovered execution. If none is provided the system will generate a unique string. +optional" + "metadata", ":ref:`ref_flyteidl.admin.ExecutionMetadata`", "", "Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution." + + + + + + + .. _ref_flyteidl.admin.ExecutionRelaunchRequest: ExecutionRelaunchRequest @@ -1202,6 +1225,7 @@ The method by which this execution was launched. "SYSTEM", "2", "A system process was responsible for launching this execution rather an individual." "RELAUNCH", "3", "This execution was launched with identical inputs as a previous execution." "CHILD_WORKFLOW", "4", "This execution was triggered by another execution." + "RECOVERED", "5", "This execution was recovered from another execution." diff --git a/protos/docs/core/core.rst b/protos/docs/core/core.rst index fe9e51880..778d0d822 100644 --- a/protos/docs/core/core.rst +++ b/protos/docs/core/core.rst @@ -718,6 +718,7 @@ NodeExecution.Phase "SKIPPED", "7", "" "TIMED_OUT", "8", "" "DYNAMIC_RUNNING", "9", "" + "RECOVERED", "10", "" diff --git a/protos/docs/service/service.rst b/protos/docs/service/service.rst index 244c8257b..795fc5c5f 100644 --- a/protos/docs/service/service.rst +++ b/protos/docs/service/service.rst @@ -49,6 +49,7 @@ Standard response codes for both are defined here: https://github.com/grpc-ecosy "UpdateLaunchPlan", ":ref:`ref_flyteidl.admin.LaunchPlanUpdateRequest`", ":ref:`ref_flyteidl.admin.LaunchPlanUpdateResponse`", "Updates the status of a registered :ref:`ref_flyteidl.admin.LaunchPlan`." "CreateExecution", ":ref:`ref_flyteidl.admin.ExecutionCreateRequest`", ":ref:`ref_flyteidl.admin.ExecutionCreateResponse`", "Triggers the creation of a :ref:`ref_flyteidl.admin.Execution`" "RelaunchExecution", ":ref:`ref_flyteidl.admin.ExecutionRelaunchRequest`", ":ref:`ref_flyteidl.admin.ExecutionCreateResponse`", "Triggers the creation of an identical :ref:`ref_flyteidl.admin.Execution`" + "RecoverExecution", ":ref:`ref_flyteidl.admin.ExecutionRecoverRequest`", ":ref:`ref_flyteidl.admin.ExecutionCreateResponse`", "Recreates a previously-run workflow execution that will only start executing from the last known failure point. In Recover mode, users cannot change any input parameters or update the version of the execution. This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details." "GetExecution", ":ref:`ref_flyteidl.admin.WorkflowExecutionGetRequest`", ":ref:`ref_flyteidl.admin.Execution`", "Fetches a :ref:`ref_flyteidl.admin.Execution`." "GetExecutionData", ":ref:`ref_flyteidl.admin.WorkflowExecutionGetDataRequest`", ":ref:`ref_flyteidl.admin.WorkflowExecutionGetDataResponse`", "Fetches input and output data for a :ref:`ref_flyteidl.admin.Execution`." "ListExecutions", ":ref:`ref_flyteidl.admin.ResourceListRequest`", ":ref:`ref_flyteidl.admin.ExecutionList`", "Fetch a list of :ref:`ref_flyteidl.admin.Execution`." diff --git a/protos/flyteidl/admin/execution.proto b/protos/flyteidl/admin/execution.proto index dd0f953e9..6d0ed331c 100644 --- a/protos/flyteidl/admin/execution.proto +++ b/protos/flyteidl/admin/execution.proto @@ -49,6 +49,20 @@ message ExecutionRelaunchRequest { string name = 3; } +// Request to recover the referenced execution. +message ExecutionRecoverRequest { + // Identifier of the workflow execution to recover. + core.WorkflowExecutionIdentifier id = 1; + + // User provided value for the recovered execution. + // If none is provided the system will generate a unique string. + // +optional + string name = 2; + + // Additional metadata which will be used to overwrite any metadata in the reference execution when triggering a recovery execution. + ExecutionMetadata metadata = 3; +} + // The unique identifier for a successfully created execution. // If the name was *not* specified in the create request, this identifier will include a generated name. message ExecutionCreateResponse { @@ -178,6 +192,9 @@ message ExecutionMetadata { // This execution was triggered by another execution. CHILD_WORKFLOW = 4; + + // This execution was recovered from another execution. + RECOVERED = 5; } ExecutionMode mode = 1; diff --git a/protos/flyteidl/admin/node_execution.proto b/protos/flyteidl/admin/node_execution.proto index 2bc9b2720..dfd7b71d0 100644 --- a/protos/flyteidl/admin/node_execution.proto +++ b/protos/flyteidl/admin/node_execution.proto @@ -205,3 +205,4 @@ message NodeExecutionGetDataResponse { // Optional Workflow closure for a dynamically generated workflow, in the case this node yields a dynamic workflow we return its structure here. DynamicWorkflowNodeMetadata dynamic_workflow = 16; } + diff --git a/protos/flyteidl/core/execution.proto b/protos/flyteidl/core/execution.proto index e3417d778..995960ea2 100644 --- a/protos/flyteidl/core/execution.proto +++ b/protos/flyteidl/core/execution.proto @@ -34,6 +34,7 @@ message NodeExecution { SKIPPED = 7; TIMED_OUT = 8; DYNAMIC_RUNNING = 9; + RECOVERED = 10; } } diff --git a/protos/flyteidl/service/admin.proto b/protos/flyteidl/service/admin.proto index 9ab88f289..8684ce8b2 100644 --- a/protos/flyteidl/service/admin.proto +++ b/protos/flyteidl/service/admin.proto @@ -248,6 +248,25 @@ service AdminService { }; } + // Recreates a previously-run workflow execution that will only start executing from the last known failure point. + // In Recover mode, users cannot change any input parameters or update the version of the execution. + // This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, + // downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again. + // See :ref:`ref_flyteidl.admin.ExecutionRecoverRequest` for more details. + rpc RecoverExecution (flyteidl.admin.ExecutionRecoverRequest) returns (flyteidl.admin.ExecutionCreateResponse) { + option (google.api.http) = { + post: "/api/v1/executions/recover" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "Recreates a previously-run workflow execution that will only start executing from the last known failure point. " + "In Recover mode, users cannot change any input parameters or update the version of the execution. " + "This is extremely useful to recover from system errors and byzantine faults like - Loss of K8s cluster, bugs in platform or instability, machine failures, " + "downstream system failures (downstream services), or simply to recover executions that failed because of retry exhaustion and should complete if tried again." + + }; + } + // Fetches a :ref:`ref_flyteidl.admin.Execution`. rpc GetExecution (flyteidl.admin.WorkflowExecutionGetRequest) returns (flyteidl.admin.Execution) { option (google.api.http) = {